Java Grundlagen Schulung – Kursbezug
Ziel dieses Kapitels: Sie kapseln Logik in Methoden, übergeben Daten per Parameter und erhalten Ergebnisse über Rückgabewerte. Ergebnis: weniger Copy-Paste, mehr Struktur.
Worum geht’s?
- Methoden als „Bausteine“: Name, Parameterliste, Rückgabetyp, Methodenrumpf.
voidvs. Rückgabewert: Wann drucke ich nur aus, wann liefere ich ein Ergebnis zurück?- Saubere Schnittstellen: kleine Methoden, eindeutige Namen, klare Parameter.
Lehr-Lernziele
- LZ1: Methoden definieren und aufrufen (inkl. Parameter & Rückgabewert).
- LZ2:
voidvon Methoden mit Rückgabewert unterscheiden (und passend einsetzen). - LZ3: einfache Validierung/Regeln in Hilfsmethoden kapseln (z.B. „Online?“ / „Rabatt?“).
- LZ4: Overloading verstehen (gleicher Name, andere Parameter) – sinnvoll und sparsam nutzen.
Wie Sie die Ziele erreichen: Die Beispiele zeigen Methoden in kleinen, testbaren Einheiten (LZ1–LZ3). Das Quiz prüft Begriffe/Unterschiede (LZ1–LZ4). Das Mini-Projekt zwingt Sie, Regeln und Ausgabe in Methoden zu zerlegen (LZ1–LZ3) und optional Overloading einzubauen (LZ4).
Grundform einer Methode
public class MethodenGrundform {
// Rückgabewert: int
static int addiere(int a, int b) {
return a + b;
}
// void: gibt nur aus
static void druckeTitel(String titel) {
System.out.println("=== " + titel + " ===");
}
public static void main(String[] args) {
druckeTitel("Methoden-Check");
int summe = addiere(2, 3);
System.out.println("Summe: " + summe);
}
}Kursnahe Beispiele (SemaTrain-Kontext)
Wir kapseln typische Regeln (Format/Ort/Rabatt) in Methoden, damit das Main kurz bleibt.
public class KursMethodenBeispiel {
static boolean istOnline(String format) {
return format != null && format.equals("Online");
}
static String ortFuerAusgabe(String format, String ort) {
return istOnline(format) ? "remote" : ort;
}
static double berechneEndpreis(double preis, boolean rabattAktiv) {
double rabatt = rabattAktiv ? 0.10 : 0.0; // Beispielregel
return preis * (1 - rabatt);
}
static void druckeKursZeile(String kursName, String format, String ort, int dauerTage, double endpreis) {
System.out.println(
"Kurs: " + kursName +
" | Format: " + format +
" | Ort: " + ort +
" | Dauer: " + dauerTage + " Tage" +
" | Preis (Beispiel): " + endpreis + " €"
);
}
public static void main(String[] args) {
// Beispielwerte
String kursName = "Java Grundlagen Schulung";
String format = "Online";
String ort = "Hamburg";
int dauerTage = 3;
double preis = 1490.00;
String ortAusgabe = ortFuerAusgabe(format, ort);
boolean rabattAktiv = istOnline(format) && dauerTage >= 3; // Beispielregel
double endpreis = berechneEndpreis(preis, rabattAktiv);
druckeKursZeile(kursName, format, ortAusgabe, dauerTage, endpreis);
}
}Overloading (Methoden-Überladung)
public class OverloadingBeispiel {
static double berechneEndpreis(double preis) {
return preis; // kein Rabatt
}
static double berechneEndpreis(double preis, double rabattProzent) {
return preis * (1 - rabattProzent);
}
public static void main(String[] args) {
double preis = 1490.00;
System.out.println(berechneEndpreis(preis)); // 1490.00
System.out.println(berechneEndpreis(preis, 0.10)); // 10% Rabatt
}
}Praxisaufgabe (Mini)
Sie bauen einen „Kurs-Rechner“ und zerlegen die Aufgaben konsequent in Methoden.
Beitrag zu den Lehr-Lernzielen: LZ1 (Methoden definieren/aufrufen), LZ2 (void vs. Rückgabewert), LZ3 (Regeln/Validierung kapseln), optional LZ4 (Overloading für Preisberechnung).
- Schreiben Sie
boolean istOnline(String format). - Schreiben Sie
String ortFuerAusgabe(String format, String ort). - Schreiben Sie
double berechneEndpreis(double preis, boolean rabattAktiv)(Rabatt: 10% als Beispielregel). - Schreiben Sie
void druckeKurs(...)für die Ausgabe. - Bonus: Overloading:
berechneEndpreis(double preis)(ohne Rabatt).
Lösung anzeigen
public class KursRechner {
static boolean istOnline(String format) {
return format != null && format.equals("Online");
}
static String ortFuerAusgabe(String format, String ort) {
return istOnline(format) ? "remote" : ort;
}
static double berechneEndpreis(double preis, boolean rabattAktiv) {
double rabatt = rabattAktiv ? 0.10 : 0.0; // Beispielregel
return preis * (1 - rabatt);
}
// Bonus (LZ4): Overloading
static double berechneEndpreis(double preis) {
return preis;
}
static void druckeKurs(String kursName, String format, String ort, int dauerTage, double endpreis) {
System.out.println(
"Kurs: " + kursName +
" | Format: " + format +
" | Ort: " + ort +
" | Dauer: " + dauerTage + " Tage" +
" | Preis (Beispiel): " + endpreis + " €"
);
}
public static void main(String[] args) {
// Beispielwerte
String kursName = "Java Grundlagen Schulung";
String format = "Online";
String ort = "Hamburg";
int dauerTage = 3;
double preis = 1490.00;
String ortAusgabe = ortFuerAusgabe(format, ort);
boolean rabattAktiv = istOnline(format) && dauerTage >= 3;
// entweder mit Flag ...
double endpreis = berechneEndpreis(preis, rabattAktiv);
// ... oder Bonus-Overloading nutzen:
// double endpreis = rabattAktiv ? berechneEndpreis(preis, 0.10) : berechneEndpreis(preis);
druckeKurs(kursName, format, ortAusgabe, dauerTage, endpreis);
}
}Optional: typische Stolperfallen
- Zu große main(): Logik in kleine Methoden auslagern (eine Aufgabe pro Methode).
- Unklare Parameter: sprechende Namen, richtige Reihenfolge, lieber mehrere kleine Methoden.
- null: bei Strings defensiv prüfen (
format != null), bevorequals()aufgerufen wird. - Overloading übertreiben: nur nutzen, wenn die Bedeutung wirklich gleich bleibt.
Kurz-Takeaways
- LZ1: Methoden machen Code wiederverwendbar: definieren → aufrufen → Parameter rein → Ergebnis raus.
- LZ2:
voidfür „nur ausgeben/ausführen“, Rückgabewert für „Ergebnis liefern“. - LZ3: Regeln/Validierung in Hilfsmethoden kapseln (lesbarer, weniger Fehler).
- LZ4: Overloading ist ok, wenn die Bedeutung gleich ist – sonst lieber anderer Name.