Matroids Matheplanet Forum Index
Moderiert von matph
Informatik » Programmieren » Java: Unterschied System.out & writeString
Druckversion
Druckversion
Autor
Universität/Hochschule J Java: Unterschied System.out & writeString
curious_mind
Aktiv Letzter Besuch: im letzten Quartal
Dabei seit: 10.11.2012
Mitteilungen: 422
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Themenstart: 2021-03-02


Hallo,

hätte man in diesem Code-Beispiel:



statt
Java
Konsole.writeString("Steuerzeichen eingeben [lnwe]: ");

nicht auch einfach
Java
System.out.println("Steuerzeichen eingeben [lnwe]: ");

schreiben können?
Was wäre denn der Unterschied? Wann wählt ihr das eine vor dem anderem?



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
DerEinfaeltige
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 11.02.2015
Mitteilungen: 2757
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.1, eingetragen 2021-03-02


Wenn du System.out auf die gewünschte Konsole setzt, sollte das äquivalent sein.

Zumeist ist es jedoch einfacher, die gewünschte Konsole abzuspeichern, als sicherzustellen, dass System.out auf den richtigen Stream verweist.


-----------------
Why waste time learning when ignorance is instantaneous?
- Bill Watterson -



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
tactac
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 15.10.2014
Mitteilungen: 2032
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.2, eingetragen 2021-03-02


Es kommt drauf an, wie Konsole definiert ist, also was etwa in
Java
class Konsole {
  public static String readString() { ... }
  public static void writeString( String s ) { ... }
}
anstelle der Punkte steht. Einfach mal reinschauen (So, wie ich die Vorschau von "Konzepte objektorientierter Programmierung" verstehe, aus der der Code wohl stammt, findet man die Klasse im Verzeichnis "/Programme-KooP-Buch/kap3/browse/util/" in der zip-Datei, die man hier herunterladen kann.)

Ich würde diese Klasse jedenfalls nicht benutzen. 😄



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
curious_mind
Aktiv Letzter Besuch: im letzten Quartal
Dabei seit: 10.11.2012
Mitteilungen: 422
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.3, vom Themenstarter, eingetragen 2021-03-02


Ok, wusste nicht mal, dass "Konsole" dann eine eigene geschriebene Klasse sein muss, dachte das ist wie "System" eine bereits existierende.

@tactac: Du schreibst "es hängt davon ab", was in Konsole drin steht. Ja, aber was genau meinst du? Du müsstest doch ein Kriterium haben, wie die Klasse dann aussehen müsste, damit du es vorziehen würdest. Das Kriterium will ich wissen, nicht wie die Klasse nun genau gecoded wäre.

@Der Einfältige: Was meinst du mit "Stream"?



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Fabi
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 03.03.2002
Mitteilungen: 4559
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.4, eingetragen 2021-03-02


Hallo,

Unabhängig (!) davon, was in der Konsole-Klasse drinsteht, ist es keine schlechte Idee, den Input/Output in eine separate Klasse auszulagern: Vielleicht gibt es später einen Usecase, in dem Input/Output nicht über die Kommandozeile, sondern übers Netzwerk oÄ kommt; das kann dann deinem Code vollständig egal sein und nur die Konsole-Klasse muss angepasst oder das Interface neu implementiert werden - deutlich einfacher als in einem größerem Projekt dann vielleicht an tausenden Stellen System.out.println(...) ersetzen zu müssen; den Namen Konsole sollte man in diesem Fall natürlich nochmal überdenken.

In der Konsole-Klasse kann man auch den gesamten Input/Output mitloggen und in einer Logfile mitschreiben oder den Input bzw. Output überprüfen; damit kann man sich beim Debuggen das Leben sehr viel leichter machen.
 
vG,
Fabi


-----------------
"There would be the mathematical equivalent of worldwide rioting." (P.C.)

Willst du Hamburg oben sehen, musst du die Tabelle drehen.



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
DerEinfaeltige
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 11.02.2015
Mitteilungen: 2757
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.5, eingetragen 2021-03-03


2021-03-02 21:32 - curious_mind in Beitrag No. 3 schreibt:
@Der Einfältige: Was meinst du mit "Stream"?

Auch ohne die Definition von Konsole zu kennen sollte klar sein, dass es sich um einen Wrapper für zwei Zeichenkettenströme in and out handelt.

Ob es sich dabei um System.out und System.in oder komplett andere Quellen handelt, ist eigentlich egal.


Ich hätte als Definition eher so etwas erwartet:
Java
public interface StreamWrapper{
   public String readString();
   public StreamWrapper writeString(String str);
   public StreamWrapper setOutputStream(OutputStream out);
   public StreamWrapper setInputStream(InputStream in);
}
 
// Somewhere else ...
public class Konsole implements StreamWrapper{
 // Implementation here
}
 


Mit Hilfe solcher Klassen hat man dann (siehe Post von Fabi) die volle Kontrolle darüber, was genau passiert.
Man kann Datenströme loggen, analysieren oder umleiten und im äußeren Code steht unabhängig davon immer nur "readString" oder "writeString".
Deine Konsole ist tatsächlich das Textfeld eines Fensters?
=> setInputStream(passender Stream); setOutputStream(passender Stream); => fertig!


-----------------
Why waste time learning when ignorance is instantaneous?
- Bill Watterson -



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
curious_mind
Aktiv Letzter Besuch: im letzten Quartal
Dabei seit: 10.11.2012
Mitteilungen: 422
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.6, vom Themenstarter, eingetragen 2021-03-03


Ah, super, das hilft mir sehr weiter. Dank Euch!



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
curious_mind hat die Antworten auf ihre/seine Frage gesehen.
curious_mind hat selbst das Ok-Häkchen gesetzt.
Neues Thema [Neues Thema]  Druckversion [Druckversion]

 


Wechsel in ein anderes Forum:
 Suchen    
 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2021 by Matroids Matheplanet
This web site was originally made with PHP-Nuke, a former web portal system written in PHP that seems no longer to be maintained nor supported. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen.
Lesen Sie die Nutzungsbedingungen, die Distanzierung, die Datenschutzerklärung und das Impressum.
[Seitenanfang]