Setter Methode

Setter-Methode ist eine spezielle Programmierung Methode in der objektorientierten Programmierung (OOP), die dazu dient, den Wert einer privaten Variable zu setzen.

Sie ermöglicht den kontrollierten Zugriff auf die Attribute einer Klasse, während die Kapselung gewahrt bleibt. Setter-Methoden werden oft verwendet, um Werte anzupassen, nachdem ein Java Objekt bereits erstellt wurde.

Zweck

Setter-Methoden sind essentiell für:

  • Kontrollierte Wertzuweisung: Validierung vor Setzen des Wertes
  • Kapselung: Private Attribute bleiben geschützt
  • Datenintegrität: Sicherstellung korrekter Objektzustände
  • Flexibilität: Werte können nach Objekterstellung geändert werden

Syntax

Java

public void setVariableName(Typ variableName) {
    this.variableName = variableName;
}

Beispiele

Einfaches Beispiel - Auto

class Auto {
    private String marke;

    // Konstruktor
    public Auto(String marke) {
        this.marke = marke;
    }

    // Setter Methode
    public void setMarke(String marke) {
        this.marke = marke;
    }

    // Getter Methode
    public String getMarke() {
        return marke;
    }
}

public class Main {
    public static void main(String[] args) {
        Auto meinAuto = new Auto("BMW");
        System.out.println("Vorher: " + meinAuto.getMarke()); // BMW

        meinAuto.setMarke("Audi");
        System.out.println("Nachher: " + meinAuto.getMarke()); // Audi
    }
}

Beispiel mit Validierung - Person

public class Person {
    private String name;
    private int age;

    // Setter mit einfacher Zuweisung
    public void setName(String name) {
        this.name = name;
    }

    // Setter mit Validierung
    public void setAge(int age) {
        if (age >= 0 && age <= 150) {
            this.age = age;
        } else {
            System.out.println("Ungültiges Alter: " + age);
        }
    }

    // Getter
    public String getName() { return name; }
    public int getAge() { return age; }
}

Erweiteres Beispiel - Fahrzeug

public class Fahrzeug {
    private String marke;
    private int baujahr;

    // Setter mit komplexer Validierung
    public void setMarke(String marke) {
        if (marke != null && !marke.trim().isEmpty()) {
            this.marke = marke.trim();
        } else {
            throw new IllegalArgumentException("Marke darf nicht leer sein");
        }
    }

    public void setBaujahr(int baujahr) {
        if (baujahr > 1885 && baujahr <= java.time.Year.now().getValue()) {
            this.baujahr = baujahr;
        } else {
            throw new IllegalArgumentException("Ungültiges Baujahr: " + baujahr);
        }
    }

    // Getter
    public String getMarke() { return marke; }
    public int getBaujahr() { return baujahr; }
}
Best Practices

  • Naming Convention: set + Attributname (großgeschrieben)
  • Validierung: Eingabewerte vor Zuweisung prüfen
  • Null-Safety: Null-Werte abfangen wenn nötig
  • Exception Handling: Bei ungültigen Werten Exceptions werfen
  • Immutability: Für unveränderliche Objekte keine Setter bereitstellen

Validierung

Setter-Methoden sollten immer Eingabewerte validieren:

  • Null-Checks für Referenztypen
  • Bereichsprüfungen für numerische Werte
  • Format-Validierung für Strings
  • Geschäftslogik-Regeln enforcing
Zusammenhang

Setter-Methoden werden fast immer zusammen mit Getter Methoden verwendet, um vollständige Kontrolle über Objektattribute zu gewährleisten.