Lernstoff 1xHIF POS PLF-2 2024-01-09
4. Methoden mit komplizierteren Zusammenhängen
Z.B. altes Laborbeispiel 08: Labor – Auto
Dazu eine ausführlich Javadoc-kommentierte Beispiel-Lösung: Demo Klasse Auto samt Javadoc, Testklasse
5. Javadoc
Siehe z.B. Java Dokumentations-Kommentare: Javadoc und
obiges Beispiel Demo Klasse Auto samt Javadoc, Testklasse
7. String-Methoden
Siehe Erste String-Methoden
8. Assoziationen
Siehe auch https://moodle.spengergasse.at/mod/assign/view.php?id=209653 [POS_JAVA_1CHIF_2324: Aufgabe 10 - Assoziationen: Fahrrad]
oder https://moodle.spengergasse.at/mod/assign/view.php?id=210536 [POS_JAVA_1CHIF_2324: Aufgabe 11 - Assoziationen: Miniwald]
und https://moodle.spengergasse.at/mod/assign/view.php?id=211328 [POS_JAVA_1CHIF_2324: Aufgabe 12 - Assoziationen: Mittagessen]
Wichtig:
-
Deklaration von Objekt-Variablen (z.B.
private Adresse wohnAdr;
) erzeugt noch kein Objekt, sondern nur eine Variable, die vorerstnull
enthält und später durch Zuweisung eine Objekt-Referenz aufnehmen kann:wohnAdr = new Adresse(…);
oder gleich bei Deklaration eine Zuweisung erhält:Adresse eineAdr = getWohnAdr();
) -
Null-Prüfung VOR Verwendung von Objekt-Variablen, da diese
null
enthalten könnten:
if (name == null || name.length() < 2) { … }
oder
if (name != null && name.length() >= 2) { … }
10. WHILE-Schleife (möglicherweise "Bonus-Beispiel")
Theorie dazu siehe Wiederholungsanweisung WHILE,
Labor-Bsp. siehe Lab – Schleifen: Einstieg
10.2. Zeichnen mit Zeichen (while)
Theorie siehe Beispiele zu "Zeichnen mit Zeichen",
Labor siehe Labor – Schleifen: "Zeichnen" mit Zeichen
Typische Beispiele: Zeichnen von "M", "N", "V", "W", "X" (erst V, dann Dach), "Y" (erst V, dann senkrechter Strich mit Einrückung).
Am einfachsten mit Hilfsmethode zum Ausgeben eines horizontalen Balkens aus z.B. '-'
oder Leerzeichen zur Einrückung, siehe Waagrechte Balken aus Einzelzeichen.
11. Statische Methoden, Klassenvariable, Konstante
Kein zwingend nötiger Stoff!!, aber sinnvoll z.B.:
-
Verwendung von Klassenvariabler bei Util für Bildschirm-Ausgaben:
private static Util u = new Util();
-
Mathematische Konstante u.ä., z.B.
Math.PI
12. Wichtige Beispiele:
-
Demo Klasse Auto samt Javadoc, Testklasse (Auto-Klasse mit Javadoc-Kommentaren, Test-Klasse)
-
Moodle-Laborbeispiele 8, 9, 10, 11, 12
13. Alter Lernstoff für PLF 1:
13.1. Wichtige Begriffe zu Programmieren, Objektorientierung (OO), Java
IDE, Compiler, Editor, Debugger, JVM,
Klasse, Objekt, Attribut, Instanzvariable,
Typ, Methode, Methodensignatur, Deklaration, Implementierung,
Getter, Setter, Konstruktor, Standardkonstruktor (=Defaultkonstruktor),
lokale Variable, Parametervariable, Parametertyp, Parameterwert,
Rückgabetyp, Rückgabewert,
Ausdruck (=Expression), Anweisung (=Statement)
Sollten mit wenigen Stichworten, Beispielcode ungefähr beschrieben werden können. Ausführlichere Beschreibungen siehe z.B. in
13.2. Datentypen
int
(ganze Zahlen),
boolean
(true
, false
),
double
(auch nicht-ganzzahlige Werte),
char
(Einzelzeichen, Literale mit z.B. 'x'
),
String
(Texte, Literale mit z.B. "Hallo Leute"
– Objekt-Datentyp!!).
Details zu den primitiven Datentypen siehe z.B. Ausgabe, Ausdrücke, Operatoren, Datentypen (v.a. Abschnitt 5 - Primitive Datentypen).
Nicht vergessen: Strings werden (wie alle anderen Objekttypen auch) mit txt1.equals(txt2)
auf Gleichheit geprüft, auf Ungleichheit durch Vorstellen von '!'
(bedeutet NOT
).
Beispiele:
if (txt.equals("AUDI")) {System.out.println("txt ist AUDI");}
if ( ! txt.equals("gruen")) {System.out.println("txt ist NICHT gruen");}
Details siehe String-Methoden, Datentyp 'char', Parameter-Validierung.
13.3. If / else if / else
Wird z.B. für Parameter-Validierung in den Settern und für "smarte" Ausgabe bei boolean
-Attributen verwendet.
Beispiel zu boolean
:
public class SmartBooleanOutput {
private boolean allrad = false;
public void setAllrad(boolean allrad) {
this.allrad = allrad;
}
public String allradTxt() {
String arTxt; // lokale Variable
if (allrad) {
arTxt = "mit";
} else {
arTxt = "OHNE";
}
return arTxt;
}
public void printInfo() {
// ...
System.out.println("Fahrzeug " + allradTxt() + " Allrad-Antrieb");
}
}
liefert bei setAllrad(false)
und Aufruf von printInfo()
Ausgabe Fahrzeug OHNE Allrad-Antrieb
, bei setzen auf true
Ausgabe Fahrzeug mit Allrad-Antrieb
.
Siehe oben und u.a. auch If-Else-Statement, Boolsche Ausdrücke
13.4. UML-Klassendiagramme
-
Aus UML-Klassendiagramm Java-Klasse erstellen (mit den zusätzlichen Spezifikationen im Text der Aufgabenstellung)
-
Aus gegebenem Java-Programm ein UML-Klassendiagramm erstellen (im UML-Diagramm sind nur die Methoden-"Köpfe" enthalten, nicht der innere Teil mit Statements etc.)
Siehe z.B. Einstieg Java mit BlueJ, Klassendiagramme
13.5. Hinweise zu Java-Programmen
-
Alle Konstruktoren müssen die Setter verwenden (Standardkonstruktor nutzen Literale für die Parameterwerte, die anderen geben die eigenen Parameter weiter, wenn nötig ergänzt mit Literalen, falls einzelne Parameter in der Parameterliste des Konstruktors nicht definiert sind).
Siehe auch Java Grundlagen
-
Setters müssen die übergebenen Parameterwerte auf Gültigkeit prüfen, wie in Angabe festgelegt oder logisch nötig. Nur
boolean
Parameter können meist nicht geprüft werden.
Beispiele:-
Radius größer 0 und kleiner 1000:
radius > 0 && radius < 1000
-
Text-Länge größer als 3:
txt.length() > 3
-
Text enthält Stück "xx":
txt.contains("xx") // liefert true, wenn der Fall
-
Text beginnt mit Stück "Wei":
"Weihnachten".startsWith("Wei") // liefert `true
-
-
Ausgabe mit z.B.
System.out.println("Wert Attr.1: " + this.attr1 + ", Attr.2: " + getAttr2())
Das "ln" am Ende bedeutet "Zeilenschaltung". Wenn man in der gleichen Zeile weiterschreiben möchte, verwendet man stattdessen
System.out.print(…)
13.6. Schreiben einer Java-Klasse
-
Oft 2 Konstruktoren (Default=parameterlos und einer mit Parametern): Darin Setter nutzen in BEIDEN (Literale im Defaultkonstr., weiterreichen der Parameter-Variablen im anderen)
-
Alle Setter (mit Parameterprüfungen z.B. . Geprüft werden String-Werte mit den gelernten String-Methoden, Zahlen und Einzelzeichen (
char
) mit Vergleichsoperatoren -
Alle Getter
-
möglicherweise eine Berechnungsmethode
-
möglicherweise "smarte" Ausgabe bei
boolean
-Attributen -
printInfo() … u.U. auch Aufruf von Berechnungsmethoden – z.B.
System.out.println("Fläche: " + calcVolumen() + "m³");
(Zeichen'{'
,'|'
,'€'
,'²'
,'³'
mit Zusatztaste AltGr)
Siehe Labor-Übung: Labor – String-Methoden, Parameter-Prüfung