Java Grundlagen Schulung – Kursbezug
Ziel dieses Kapitels: Sie können eine Klasse als „Bauplan“ schreiben, daraus Objekte erzeugen, Felder/Methoden nutzen und mit einem Konstruktor sauber initialisieren.
Worum geht’s?
- Klasse = Bauplan (Felder + Methoden), Objekt = konkrete Instanz.
- Felder speichern Zustand (z.B. Kursname, Format), Methoden arbeiten damit.
- Konstruktor setzt Startwerte;
thishilft beim Zuordnen.
Lehr-Lernziele
- LZ1: eine Klasse mit Feldern und Methoden definieren und Objekte erzeugen (
new). - LZ2: Konstruktoren einsetzen, um Objekte konsistent zu initialisieren (inkl.
this). - LZ3: Zustand + Verhalten trennen: Felder sind Daten, Methoden implementieren Regeln/Ausgabe.
- LZ4: den Unterschied erklären: statisch (
static) vs. Instanz (objektbezogen).
Wie Ziele erreicht werden: Beispiele führen Sie von „1 Klasse“ → „2 Objekte“ → „Methoden am Objekt“ (LZ1–LZ3). Quiz prüft Begriffe und typische Fehler (LZ1–LZ4). Mini-Projekt zwingt dazu, Kurs/Teilnehmer als Objekte zu modellieren und Regeln als Methoden zu kapseln (LZ1–LZ3).
Klasse vs. Objekt
public class Kurs {
String name;
String format; // "Online" oder "Praesenz"
int dauerTage;
void druckeKurz() {
System.out.println(name + " | " + format + " | " + dauerTage + " Tage");
}
public static void main(String[] args) {
// Objekt 1
Kurs k1 = new Kurs();
k1.name = "Java Grundlagen Schulung";
k1.format = "Online";
k1.dauerTage = 3;
// Objekt 2
Kurs k2 = new Kurs();
k2.name = "Java Grundlagen Schulung";
k2.format = "Praesenz";
k2.dauerTage = 3;
k1.druckeKurz();
k2.druckeKurz();
}
}Konstruktor & this
public class Kurs {
String name;
String format;
int dauerTage;
double preis; // Beispielwert
// Konstruktor
Kurs(String name, String format, int dauerTage, double preis) {
this.name = name;
this.format = format;
this.dauerTage = dauerTage;
this.preis = preis;
}
boolean istOnline() {
return format != null && format.equals("Online");
}
String ortFuerAusgabe(String ort) {
return istOnline() ? "remote" : ort;
}
void druckeKurz(String ort) {
System.out.println(
name + " | " + (istOnline() ? "Online" : "Praesenz") +
" | Ort: " + ortFuerAusgabe(ort) +
" | " + dauerTage + " Tage" +
" | Preis (Beispiel): " + preis + " €"
);
}
public static void main(String[] args) {
Kurs kurs = new Kurs("Java Grundlagen Schulung", "Online", 3, 1490.00);
kurs.druckeKurz("Hamburg");
}
}static vs. Instanz
Instanzmethoden arbeiten mit dem Zustand des Objekts (Felder). static gehört zur Klasse selbst (z.B. Hilfsmethode, die ohne Objekt funktioniert).
public class PreisHelper {
static double endpreis(double preis, double rabattProzent) {
return preis * (1 - rabattProzent);
}
public static void main(String[] args) {
double preis = 1490.00;
System.out.println(endpreis(preis, 0.10)); // 10% (Beispiel)
}
}Praxisaufgabe (Mini)
Sie modellieren Kursdaten als Objekt – und kapseln Regeln als Methoden am Objekt.
Beitrag zu den Lehr-Lernzielen: LZ1 (Objekte erstellen), LZ2 (Konstruktor), LZ3 (Regeln als Methoden), optional LZ4 (static Helper).
- Erstellen Sie eine Klasse
Kursmit Feldern:name,format,dauerTage,preis. - Schreiben Sie einen Konstruktor, der alle Felder setzt.
- Schreiben Sie Methoden:
istOnline(),ortFuerAusgabe(String ort),druckeKurz(String ort). - Bonus: static Helper
endpreis(double preis, boolean rabattAktiv)(10% als Beispielregel).
Lösung anzeigen
public class Kurs {
String name;
String format;
int dauerTage;
double preis; // Beispiel
Kurs(String name, String format, int dauerTage, double preis) {
this.name = name;
this.format = format;
this.dauerTage = dauerTage;
this.preis = preis;
}
boolean istOnline() {
return format != null && format.equals("Online");
}
String ortFuerAusgabe(String ort) {
return istOnline() ? "remote" : ort;
}
static double endpreis(double preis, boolean rabattAktiv) {
double rabatt = rabattAktiv ? 0.10 : 0.0; // Beispielregel
return preis * (1 - rabatt);
}
void druckeKurz(String ort) {
boolean rabattAktiv = istOnline() && dauerTage >= 3; // Beispielregel
double end = endpreis(preis, rabattAktiv);
System.out.println(
"Kurs: " + name +
" | Format: " + (istOnline() ? "Online" : "Praesenz") +
" | Ort: " + ortFuerAusgabe(ort) +
" | Dauer: " + dauerTage + " Tage" +
" | Preis (Beispiel): " + end + " €"
);
}
public static void main(String[] args) {
Kurs kurs = new Kurs("Java Grundlagen Schulung", "Online", 3, 1490.00);
kurs.druckeKurz("Hamburg");
}
}Optional: typische Stolperfallen
- Felder nicht initialisiert: Konstruktor nutzen, um „halbe“ Objekte zu vermeiden (LZ2).
- static/Instanz verwechselt: Instanzmethoden arbeiten mit Feldern, static nicht (LZ4).
- Zu viel Logik in main(): Regeln in Methoden der Klasse kapseln (LZ3).
Kurz-Takeaways
- LZ1: Klasse = Bauplan, Objekt = Instanz (
new). - LZ2: Konstruktor sorgt für konsistente Startwerte;
thisreferenziert das Objekt. - LZ3: Felder speichern Zustand, Methoden kapseln Regeln/Verhalten.
- LZ4:
staticgehört zur Klasse, Instanzmethoden zum Objekt.