Junior — Middle
Kannst du zeigen, wie das L-Prinzip aus SOLID in der Praxis der Entwicklung angewendet wird?
sobes.tech KI
Antwort von AI
Das L-Prinzip von SOLID ist das Liskov-Substitutionsprinzip. Es besagt, dass Objekte von Unterklassen austauschbar mit Objekten der Basisklasse sein sollten, ohne die Korrektheit des Programms zu verletzen.
Beispiel in Kotlin:
open class Bird {
open fun fly() {
println("Vogel fliegt")
}
}
class Sparrow : Bird() {
override fun fly() {
println("Spatz fliegt")
}
}
class Ostrich : Bird() {
override fun fly() {
throw UnsupportedOperationException("Strauß kann nicht fliegen")
}
}
fun makeBirdFly(bird: Bird) {
bird.fly()
}
fun main() {
val sparrow = Sparrow()
val ostrich = Ostrich()
makeBirdFly(sparrow) // Funktioniert korrekt
makeBirdFly(ostrich) // Verletzung des L-Prinzips, da Strauß nicht fliegen kann
}
In diesem Beispiel verletzt die Klasse Ostrich das L-Prinzip, da sie das Verhalten der Basisklasse Bird nicht unterstützt. Um das Prinzip einzuhalten, sollte die Hierarchie so gestaltet sein, dass Unterklassen den Vertrag der Basisklasse vollständig unterstützen, z.B. durch Trennung fliegender und nicht fliegender Vögel in verschiedene Hierarchien.