Programmieren in Java

Ähnliche Dokumente
Inhalt. Peter Thiemann (Univ. Freiburg) JAVA 1 / 42

Informatik I, Programmierung

Programmierzertifikat Objekt-Orientierte Programmierung mit Java

Programmieren in Java

Programmierzertifikat Objekt-Orientierte Programmierung mit Java

Programmierzertifikat Objekt-Orientierte Programmierung mit Java

Vorlesung 05: Vermischtes. Peter Thiemann SS 2010

Software Entwicklung 1

Programmieren in Java

Teil 2: Weitere Aspekte der Objektorientierung

1 Klassen und Objekte

7. Objektorientierung. Informatik II für Verkehrsingenieure

Einstieg in die Informatik mit Java

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung

Klassenvariablen und statische Methoden

Implementieren von Klassen

Klassenvariablen und statische Methoden

Javakurs für Anfänger

Repetitorium Informatik (Java)

Kapitel 10. Verweise und Referenzen. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz

Algorithmen und Datenstrukturen 06

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types)

Klassen in Java Software Entwicklung 1

Objektorientierte Programmierung

Objekte und Klassen. INE2 M. Thaler, Office TG ZHAW, M. Thaler, K. Rege, G. Burkert, E.

Tag 7 Repetitorium Informatik (Java)

3. Klassen Statische Komponenten einer Klasse. Klassenvariablen

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Programmiertechnik Klassenvariablen & Instantiierung

Konstruktor. public Rational(int i) { Zaehler = i; Nenner = 1; }

Programmieren in Java

Informatik I, Programmierung

Klassen und Objekte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg

Algorithmen und Datenstrukturen

Programmierung Nachklausurtutorium

Tag 8 Repetitorium Informatik (Java)

Methoden und Klassen. Silke Trißl Wissensmanagement in der Bioinformatik

Überblick. Peer Kröger (LMU München) Einführung in die Programmierung WS 14/ / 492

Software Entwicklung 1

Klassenmethoden. Klassenvariablen. Für das Auslesen des Studentenzählers definieren wir eine öffentliche Klassenmethode:

Erste Java-Programme (Scopes und Rekursion)

JAVA - Methoden

Programmieren in Java

Objektorientierte Programmierung Studiengang Medieninformatik

Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik. Jede Applikation braucht eine Klasse mit einer main-methode

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Folienpaket 7 Themenschwerpunkte: Methoden in OOP /2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

Praktische Informatik 1

Philipp Güttler Objektorientierung und komplexe Datentypen

Programmieren in Java

Einstieg in die Informatik mit Java

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Javakurs für Anfänger

Java Einführung Klassendefinitionen

Kapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik

Fragen zur OOP in Java

Universität Karlsruhe (TH)

Java für Bauingenieure

Programmieren in Java

Programmieren in Java

Informatik I Eprog HS12

Universität zu Lübeck Institut für Telematik. Prof. Dr. Stefan Fischer

Objektorientierte Programmierung

2. Methoden. n Generelles zum Aufruf von Methoden. n Parameterübergabemechanismen (call by value, call by reference)

n 1. Grundzüge der Objektorientierung n 2. Methoden, Unterprogramme und Parameter n 3. Datenabstraktion n 4. Konstruktoren n 5. Vordefinierte Klassen

Propädeutikum Programmierung in der Bioinformatik

Objektorientierte Programmierung und Klassen

Einführung in die Programmierung mit C++

JAVA 05: Objektorientierte Konzepte

C++ Teil 12. Sven Groß. 18. Jan Sven Groß (IGPM, RWTH Aachen) C++ Teil Jan / 11

Klassen mit Instanzmethoden

Objektorientierung. Klassen und Objekte. Dr. Beatrice Amrhein

Umsetzung einer Klassenkarte in einer Programmiersprache

14. Java Klassen. Klassen (Java) vs. Records (Pascal) Klassen - Konzeptuell. Klassen - Technisch

Silke Trißl Wissensmanagement in der Bioinformatik. Objektorientierte Programmierung (OOP) Vorstellung wie in der realen Welt: Farbe Hubraum Tank...

Einstieg in die Informatik mit Java

EINI LW/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 16/17

C++ - Objektorientierte Programmierung Konstante und statische Elemente

C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren

Programmieren in Java

Einführung in die Programmierung für NF MI. Übung 07

Programmierung für Mathematik HS11

Vorkurs Informatik WiSe 15/16

Klassen können bekanntlich aus zwei Komponententypen bestehen, nämlich Attributen und Methoden.

Übungsblatt 13. Abgabe / Besprechung in Absprache mit dem Tutor

Programmieren I. Dr. Klaus Höppner. Hochschule Darmstadt Wintersemester 2009/ / 22

Klassenvariablen, Klassenmethoden

Praktische Softwaretechnologie Vorlesung 3

Probeklausur: Programmierung WS04/05

14. Java Klassen. Klassen, Typen, Objekte, Deklaration, Instanzierung, Konstruktoren, statische Felder und Methoden, Datenkapselung

Kapitel 08. Methoden und deren Aufrufe. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz

Beziehungen zwischen Objekten

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen

Programmieren in Java

Programmieren in Java

Transkript:

Programmieren in Java Vorlesung 01: Einfache Klassen Peter Thiemann Albert-Ludwigs-Universität Freiburg, Germany SS 2013 Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 1 / 31

Inhalt Einfache Klassen Einfache Klassen am Beispiel Aufzählungstypen Fallstudie Monopoly Methoden für einfache Klassen entwerfen Sichtbarkeit Main, statische Felder und Methoden, Ein-/Ausgabe Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 2 / 31

Einführung Einführung Spezifikation... Das Programm soll die Buchhaltung für einen Teegroßhändler unterstützen. Die Quittung für eine Lieferung beinhaltet die Teesorte, den Preis (in Euro pro kg) und das Gewicht der Lieferung (in kg).... Beispielquittungen 100kg Darjeeling zu 40.10 EUR 150kg Assam zu 27.90 EUR 140kg Ceylon zu 27.90 EUR Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 3 / 31

Einführung Modellierung einer Teelieferung 1 // Repräsentation einer Rechnung für eine Teelieferung 2 public class Tea { 5 public String kind; // Teesorte 6 public int price; // in Eurocent pro kg 7 public int weight; // in kg 10 public Tea(String kind, int price, int weight) { 11 this.kind = kind; 12 this.price = price; 13 this.weight = weight; 14 } 33 } Vollständige Klassendefinition Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 4 / 31

Einführung Grundgerüst einer Klassendefinition 1 // Repräsentation einer Rechnung für eine Teelieferung 2 public class Tea { Benennt den Klassentyp Tea Rumpf der Klasse spezifiziert die Komponenten der Objekte vom Klassentyp den Konstruktor des Klassentyps das Verhalten der Objekten (später) 33 } Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 5 / 31

Einführung Felddeklarationen 5 public String kind; // Teesorte 6 public int price; // in Eurocent pro kg 7 public int weight; // in kg Beschreibt die Komponenten: Instanzvariable, Felder, Attribute Beschreibung eines Felds Typ des Feldes (String, int) Name des Feldes (kind, price, weight) Kommentare: // bis Zeilenende Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 6 / 31

Einführung Konstruktordeklaration 10 public Tea(String kind, int price, int weight) { 11 this.kind = kind; 12 this.price = price; 13 this.weight = weight; 14 } Beschreibt den Konstruktor: Funktion, die aus den Werten der Komponenten ein neues Objekt initialisiert Argumente des Konstruktors entsprechen den Feldern Rumpf des Konstruktors enthält Zuweisungen der Form this.feldname = feldname this ist das Objekt, das gerade konstruiert wird this.feldname bezeichnet das entsprechende Feld des Objekts feldname bezeichnet den Wert des entsprechenden Konstruktorarguments Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 7 / 31

Einführung Beispiel für Teelieferungen 100kg Darjeeling zu 40.10 EUR 150kg Assam zu 27.90 EUR 140kg Ceylon zu 27.90 EUR new Tea( Darjeeling, 4010, 100) new Tea( Assam, 2790, 150) new Tea( Ceylon, 2790, 140) Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 8 / 31

Einführung Klassendiagramm Tea String kind int price [in Eurocent pro kg] int weight [in kg] Die Spezifikation einer Klasse kann auch als Klassendiagramm angegeben werden. Obere Abteilung: Name der Klasse Untere Abteilung: Felddeklarationen Anmerkung: Klassendiagramme werden in der Softwaretechnik verwendet. Sie sind im UML (Unified Modeling Language) Standard definiert. Sie sind nützliche Werkzeuge für die Datenmodellierung. Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 9 / 31

Einführung Zusammenfassung Eine Klasse spezifiziert einen zusammengesetzten Datentyp, den Klassentyp. Die zum Klassentyp gehörigen Werte sind die Instanzen bzw. Objekte der Klasse. Ein Objekt enthält die Werte der Komponenten in den Instanzvariablen. Werte vom Klassentyp C werden durch den Konstruktoraufruf new C(v 1,..., v n ) gebildet, wobei v 1,..., v n die Werte der Instanzvariablen sind. Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 10 / 31

Einführung Erstellen einer Klasse 1. Studiere die Problembeschreibung. Identifiziere die darin beschriebenen Objekte und ihre Attribute und schreibe sie in Form eines Klassendiagramms. 2. Übersetze das Klassendiagramm in eine Klassendefinition. Füge einen Kommentar hinzu, der den Zweck der Klasse erklärt. (Mechanisch, außer für Felder mit fest vorgegebenen Werten) 3. Repräsentiere einige Beispiele durch Objekte. Erstelle Objekte und stelle fest, ob sie Beispielobjekten entsprechen. Notiere auftretende Probleme als Kommentare in der Klassendefinition. Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 11 / 31

Aufzählungstypen Aufzählungstypen Ein Aufzählungstyp (enum) ist definiert durch die Liste seiner Elemente. Modellierung von endlich vielen Zuständen. Beispiel 1 public enum Day { 2 SUNDAY, MONDAY, TUESDAY, WEDNESDAY, 3 THURSDAY, FRIDAY, SATURDAY 4 } Verwendungsbeispiel (später mehr) 1 public class DayTest { 2 Day weekday; 3 public void reset() { 4 this.weekday = Day.SUNDAY; 5 } 6 public boolean islectureday() { 7 return Day.TUESDAY.equals(this.weekday); 8 } 9 } Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 12 / 31

Fallstudie Monopoly Fallstudie Monopoly Modellierung von (Teilen) des Spiels Monopoly Sammlung: Bestandteile des Spiels Material Regeln: http://en.wikibooks.org/wiki/monopoly/official_rules Offizielle Regeln: http://richard_wilding.tripod.com/monorules.htm Strassenkarte: http://monopoly.wikia.com/wiki/baltic_avenue Wikipedia: http://en.wikipedia.org/wiki/monopoly_(game) Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 13 / 31

Methoden für einfache Klassen entwerfen Methoden für einfache Klassen entwerfen Objekte erhalten ihre Funktionalität durch Methoden Beispiel Zu einer Teelieferung (bestehend aus Teesorte, Kilopreis und Gewicht) soll der Gesamtpreis bestimmt werden. Implementierung durch Methode cost() Keine Parameter, da alle Information im Tea-Objekt vorhanden ist. Ergebnis ist ein Preis, repräsentiert durch den Typ int Verwendungsbeispiel: Tea tassam = new Tea("Assam", 2790, 150); tassam.cost() soll 418500 liefern Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 14 / 31

Methoden für einfache Klassen entwerfen Methodendefinition // Repräsentation einer Rechnung für eine Teelieferung public class Tea { public String kind; // Teesorte public int price; // in Eurocent pro kg public int weight; // in kg } // Konstruktor (wie vorher) public Tea (String kind, int price, int weight) {... } // berechne den Gesamtpreis dieser Lieferung int cost() {... } Methodendefinitionen nach Konstruktor Methode cost() Ergebnistyp int keine Parameter Rumpf muss jetzt ausgefüllt werden Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 15 / 31

Methoden für einfache Klassen entwerfen Klassendiagramm mit Methoden Gleiche Information im Klassenkasten Tea kind : String price : int weight : int cost() : int Dritte Abteilung enthält die Kopfzeilen der Methoden Signaturen von Methoden Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 16 / 31

Methoden für einfache Klassen entwerfen Entwicklung der Methode cost Jede Methode kann auf ihr zugehöriges Objekt über die Variable this zugreifen // berechne den Gesamtpreis dieser Lieferung int cost() {... this... } Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 17 / 31

Methoden für einfache Klassen entwerfen Entwicklung der Methode cost Jede Methode kann auf ihr zugehöriges Objekt über die Variable this zugreifen // berechne den Gesamtpreis dieser Lieferung int cost() {... this... } Zugriff auf die Felder des Objekts erfolgt mittels this.feldname // berechne den Gesamtpreis dieser Lieferung int cost() {... this.kind... this.price... this.weight... } (kind spielt hier keine Rolle) Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 17 / 31

Methoden für einfache Klassen entwerfen Entwicklung der Methode cost Jede Methode kann auf ihr zugehöriges Objekt über die Variable this zugreifen // berechne den Gesamtpreis dieser Lieferung int cost() {... this... } Zugriff auf die Felder des Objekts erfolgt mittels this.feldname // berechne den Gesamtpreis dieser Lieferung int cost() {... this.kind... this.price... this.weight... } (kind spielt hier keine Rolle) Der Rückgabewert der Methode wird durch die return-anweisung spezifiziert. 17 // berechne den Gesamtpreis dieser Lieferung 18 public int cost() { 19 return this.price this.weight; 20 } Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 17 / 31

Methoden für einfache Klassen entwerfen Methodentest 1 import static org.junit.assert. ; 2 import org.junit.test; 3 // test cases for Tea 4 public class TeaTests { 5 @Test 6 public void testcost() { 7 assertequals(150 1590, new Tea( Assam, 1590, 150).cost()); 8 assertequals(220 2790, new Tea( Darjeeling, 2790, 220).cost()); 9 assertequals(130 1590, new Tea( Ceylon, 1590, 130).cost()); 10 } 11 } Separate Testklasse, erzeugt mit New JUnit Test Case Die import Statements integrieren den Testrahmen Testmethoden werden mit @Test annotiert Die assert Funktion vergleicht den erwarteten Wert eines Ausdrucks mit dem tatsächlichen Wert. Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 18 / 31

Methoden für einfache Klassen entwerfen Methoden mit Argumenten Primitive Datentypen Der Teelieferant sucht nach billigen Angeboten, bei denen der Kilopreis kleiner als eine vorgegebene Schranke ist. Argumente von Methoden werden wie Felder deklariert // liegt der Kilopreis dieser Lieferung unter limit? boolean cheaperthan(int limit) {... this... } Gewünschtes Verhalten: @Test public void testcheaperthan() { assertfalse(new Tea ( Earl Grey, 3945, 75).cheaperThan (2000)); asserttrue(new Tea ( Ceylon, 1590, 400).cheaperThan (2000)); } Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 19 / 31

Methoden für einfache Klassen entwerfen Methoden mit Argumenten Primitive Datentypen/2 Methodensignatur // liegt der Kilopreis dieser Lieferung unter limit? boolean cheaperthan(int limit) {... this... } Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 20 / 31

Methoden für einfache Klassen entwerfen Methoden mit Argumenten Primitive Datentypen/2 Methodensignatur // liegt der Kilopreis dieser Lieferung unter limit? boolean cheaperthan(int limit) {... this... } Im Rumpf der Methode dürfen die Felder des Objekts und die Parameter verwendet werden. // liegt der Kilopreis dieser Lieferung unter limit? boolean cheaperthan(int limit) {... this.price... limit... } (kind und weight spielen hier keine Rolle) Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 20 / 31

Methoden für einfache Klassen entwerfen Methoden mit Argumenten Primitive Datentypen/2 Methodensignatur // liegt der Kilopreis dieser Lieferung unter limit? boolean cheaperthan(int limit) {... this... } Im Rumpf der Methode dürfen die Felder des Objekts und die Parameter verwendet werden. // liegt der Kilopreis dieser Lieferung unter limit? boolean cheaperthan(int limit) {... this.price... limit... } (kind und weight spielen hier keine Rolle) Der Rückgabewert der Methode wird durch die return-anweisung spezifiziert. 23 public boolean cheaperthan(int limit) { 24 return this.price < limit; 25 } Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 20 / 31

Methoden für einfache Klassen entwerfen Rezept für den Methodenentwurf Ausgehend von einer Klasse 1. erkläre kurz den Zweck der Methode (Kommentar) 2. definiere die Methodensignatur 3. gib Beispiele für die Verwendung der Methode 4. definiere die Beispiele als Tests 5. fülle den Rumpf der Methode gemäß dem Muster this und die Felder this.feldname dürfen vorkommen alle Parameter dürfen vorkommen 6. schreibe den Rumpf der Methode Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 21 / 31

Sichtbarkeit Sichtbarkeit public : sichtbar im gesamten Programm private : sichtbar nur in definierender Klasse Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 22 / 31

Sichtbarkeit Sichtbarkeit public : sichtbar im gesamten Programm private : sichtbar nur in definierender Klasse Sichtbarkeit von Instanzvariablen Datenkapselung generell private allgemeiner Zugriff über getter und setter Methoden Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 22 / 31

Sichtbarkeit Sichtbarkeit public : sichtbar im gesamten Programm private : sichtbar nur in definierender Klasse Sichtbarkeit von Instanzvariablen Datenkapselung generell private allgemeiner Zugriff über getter und setter Methoden Kontrolle über Objekterzeugung nur bestimmte Objekte einer Klasse zulässig definiere private Konstruktor Objekterzeugung über statische Methode(n) Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 22 / 31

Sichtbarkeit Beispiel (Getter und Setter) 1 // Repräsentation einer Rechnung für eine Teelieferung 2 public class Tea { 3 private String kind; // Teesorte 4 private int price; // in Eurocent pro kg 5 private int weight; // in kg 6 7 public String getkind() { 8 return this.kind; 9 } 10 public String getprice() { 11 return this.price; 12 } 13 public String getweight() { 14 return this.weight; 15 } 16 17 public Tea(String kind, int price, int weight) { 18 this.kind = kind; this.price = price; this.weight = weight; 19 } 20 } Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 23 / 31

Sichtbarkeit Beispiel (Privater Konstruktor) 1 public class Tea { 2... 3 private Tea(...) {... } // wie gehabt 4 5 final private static String EARL GREY = Earl Grey ; 6 public static Tea createearlgrey (int price, int weight) { 7 return new Tea (EARL GREY, price, weight); 8 } 9 } Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 24 / 31

Main, statische Felder und Methoden, Ein-/Ausgabe Main Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 25 / 31

Main, statische Felder und Methoden, Ein-/Ausgabe Statische Felder und Methoden Neben den normalen Feldern und Methoden kann eine Klasse statische Felder und statische Methoden besitzen. (In anderen Sprachen: Klassenfelder bzw. Klassenmethoden) Beide sind unabhängig von Objekten und können gelesen, geschrieben und aufgerufen werden, ohne dass ein Objekt der Klasse beteiligt ist. Der Zugriff erfolgt mit Klasse.feldname // statisches Feld von Klasse Klasse.methode (arg...) // statische Methode von Klasse Beispiel: Die Javabibliothek definiert eine Klasse Math, die spezielle Konstanten (e und π) als statische Felder zur Verfügung stellt und trigonometrische und andere Funktionen als statische Methoden bereithält. Math.E, Math.PI Math.min(4, 5), Math.max( 1, 1), Math.sin(Math.PI / 4) Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 26 / 31

Main, statische Felder und Methoden, Ein-/Ausgabe Statische Felder und Methoden Beispiel Statische Felder können für Buchhaltungsaufgaben über alle Objekte einer Klasse verwendet werden. Eine Klasse soll mitzählen, wie oft ihr Konstruktor aufgerufen worden ist. class CountedStuff { private static int count = 0; private static int inc() { return count++; } private int serial; public CountedStuff () { this.serial = CountedStuff.inc (); } public int getserial () { return this.serial; } } Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 27 / 31

Main, statische Felder und Methoden, Ein-/Ausgabe Statische Felder und Methoden Beispiel (Fortsetzung) > CountedStuff x1 = new CountedStuff(); > x1.getserial() 0 > CountedStuff x2 = new CountedStuff(); > x2.getserial() 1 > CountedStuff x3 = new CountedStuff(); > x3.getserial() 2 Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 28 / 31

Main, statische Felder und Methoden, Ein-/Ausgabe Das Hauptprogramm Das Hauptprogramm kann in einer beliebigen Klasse definiert werden. Ausgeführt wird die statische Methode main mit einem String Array als Parameter, aber ohne Rückgabewert (void). public static void main (String [] arg) {... } Das String-Arrays enthält dabei die Parameter des Programmaufrufs (z.b. auf der Kommandozeile). Der Aufruf java MyClass eins zwei drei bewirkt, dass im Rumpf von main arg.length == 3 arg[0].equals ( eins ) arg[1].equals ( zwei ) arg[2].equals ( drei ) Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 29 / 31

Main, statische Felder und Methoden, Ein-/Ausgabe Einfache Ausgabe Das Objekt System.out stellt Methoden zur Ausgabe auf die Konsole bereit. Es besitzt (überladene) Methoden print für alle primitiven Typen, die jeweils ihr Argument ausdrucken. void print(boolean b) void print(double d) void print(int i) void print(string s) Die gleichermaßen überladenen Methoden println drucken ihr Argument gefolgt von einem Zeilenvorschub. void println() // nur Zeilenvorschub void println(boolean x) void println(double x) void println(int x) void println(string x) Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 30 / 31

Main, statische Felder und Methoden, Ein-/Ausgabe Beispiel: main mit Ausgabe class HelloWorld { public static void main (String[] args) { System.out.print ( Hello world, ); for (int i = 0; i < args.length; i++) { System.out.print ( + args[i]); } System.out.println (); } } Druckt Hello world, gefolgt von allen Kommandozeilenargumenten und abgeschlossen mit einem Zeilenvorschub. Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 31 / 31