Junior — Middle
Kun je laten zien hoe het L-principe uit SOLID in de praktijk wordt toegepast?
sobes.tech AI
Antwoord van AI
Het L-principe van SOLID is het Liskov-vervangingsprincipe. Het stelt dat objecten van subklassen verwisselbaar moeten zijn met objecten van de basisklasse zonder de correctheid van het programma te schaden.
Voorbeeld in Kotlin:
open class Bird {
open fun fly() {
println("Vogel vliegt")
}
}
class Sparrow : Bird() {
override fun fly() {
println("Muis vliegt")
}
}
class Ostrich : Bird() {
override fun fly() {
throw UnsupportedOperationException("Struisvogel kan niet vliegen")
}
}
fun makeBirdFly(bird: Bird) {
bird.fly()
}
fun main() {
val sparrow = Sparrow()
val ostrich = Ostrich()
makeBirdFly(sparrow) // Werkt correct
makeBirdFly(ostrich) // Schending van het L-principe, omdat de struisvogel niet kan vliegen
}
In dit voorbeeld schendt de Ostrich-klasse het L-principe omdat het gedrag van de basisklasse Bird niet ondersteunt. Om het principe te respecteren, moet de hiërarchie zodanig worden ontworpen dat subklassen het contract van de basisklasse volledig ondersteunen, bijvoorbeeld door vliegende en niet-vliegende vogels in verschillende hiërarchieën te scheiden.