In Übung 10 wird ein abstrakter Basisklass-Ansatz für Bremsen in Matlab behandelt. Im vorigen Teil wurden die Unterschiede zwischen Vererbung (extends) und Schnittstellen (implements) diskutiert. Da mechanische Bremsarten wie Scheibenbremsen, Trommelbremsen und Schwimmende Bremsen große mechanische Unterschiede aufweisen, könnte eine Schnittstelle sinnvoller sein, da alle Bremsen prinzipiell dieselbe Funktionalität besitzen.
Es gibt jedoch einen Nachteil bei dieser Wahl, da jede spezifische Bremse die Funktionalität nur implementiert und nicht von einer gemeinsamen Basisklasse erbt. Zwei Lösungsansätze sind möglich:
- (A) Verwenden einer Basisklasse mit entsprechenden Attributen und Methoden (z.B. Hersteller-Attribut).
- (B) Erweiterung der Schnittstelle um die benötigten Getter/Setter-Methoden.
Ein Beispiel für (A):
class Bremse {
private String hersteller;
public Bremse(String h) {
this.hersteller = h;
}
public void bremsen() {
// ???
}
}
class Scheibenbremse extends Bremse {
// ...
}
Ein Beispiel für (B):
interface Bremse {
void bremsen();
}