SemaTrain Logo Ein Fachportal von SemaTrain

Methoden & Parameter

Sie strukturieren Ihren Code: Methoden, Parameter, Rückgabewerte – damit Logik wiederverwendbar, testbar und lesbar wird (kursnah im SemaTrain-Kontext).

Hinweis: Beispiele nutzen Beispieldaten (didaktisch, nicht verbindlich).

Java Grundlagen Schulung – Kursbezug

Dieses Kapitel ist Teil des Lernpfads zur Java Grundlagen Schulung. Termine & Buchung laufen über SemaTrain.de.

Hinweis: Beispiele sind generisch und nutzen Beispieldaten.

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?

Lehr-Lernziele

Nach diesem Kapitel können Sie …

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

Beispiel: Rückgabewert vs. void (LZ1 + LZ2) (Java)
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.

Beispiel: Logik in Methoden kapseln (LZ1–LZ3) (Java)
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)

Gleicher Name, aber andere Parameterliste. Sinnvoll, wenn die Bedeutung gleich bleibt.

Beispiel: Overloading (LZ4) (Java)
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).

  1. Schreiben Sie boolean istOnline(String format).
  2. Schreiben Sie String ortFuerAusgabe(String format, String ort).
  3. Schreiben Sie double berechneEndpreis(double preis, boolean rabattAktiv) (Rabatt: 10% als Beispielregel).
  4. Schreiben Sie void druckeKurs(...) für die Ausgabe.
  5. Bonus: Overloading: berechneEndpreis(double preis) (ohne Rabatt).
Lösung anzeigen
Lösung: Kurs-Rechner mit Methoden (LZ1–LZ4, Beispielwerte) (Java)
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), bevor equals() aufgerufen wird.
  • Overloading übertreiben: nur nutzen, wenn die Bedeutung wirklich gleich bleibt.

Kurz-Takeaways

Quiz: Methoden & Parameter

1. Was ist ein typischer Vorteil von Methoden? (LZ1)

2. Was bedeutet der Rückgabetyp void? (LZ2)

3. Welche Signatur passt zu „Ort abhängig vom Format“? (LZ3)

4. Was beschreibt Overloading korrekt? (LZ4)

Praxisaufgabe

Mini-Projekt: Kurs-Service (Methoden statt Copy-Paste)

Sie bauen eine kleine „Service-Schicht“ als Methoden: Format prüfen, Ort bestimmen, Preis berechnen, Ausgabe drucken.

Beitrag zu den Lehr-Lernzielen:
LZ1 (Methoden definieren/aufrufen), LZ2 (void vs. Rückgabe), LZ3 (Regeln kapseln), optional LZ4 (Overloading).

Aufgabe

Lösung anzeigen
Lösung: Kurs-Service (Methoden + optional Overloading) (Java)
public class KursService {

  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; // Beispiel
    return preis * (1 - rabatt);
  }

  // Bonus: Overloading (LZ4)
  static double berechneEndpreis(double preis, double rabattProzent) {
    return preis * (1 - rabattProzent);
  }

  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;

    boolean rabattAktiv = istOnline(format) && dauerTage >= 3;
    String ortAusgabe = ortFuerAusgabe(format, ort);

    double endpreis = berechneEndpreis(preis, rabattAktiv);
    // Alternative Bonus:
    // double endpreis = rabattAktiv ? berechneEndpreis(preis, 0.10) : preis;

    druckeKurs(kursName, format, ortAusgabe, dauerTage, endpreis);
  }
}