Substitutieprincipe van Liskov

Uit Wikipedia, de vrije encyclopedie
Ga naar: navigatie, zoeken

Het substitutieprincipe van Liskov, ook wel Liskov Substitution Principle (LSP) genoemd, is een principe uit het objectgeoriënteerd programmeren met betrekking tot het overerven. Het principe luidt als volgt:

Stel {\textstyle q(x)} is een aantoonbare eigenschap van de objecten x van het type T. Dan q(y) zou een aantoonbare eigenschap van de objecten y van het type S moeten zijn, waarbij S een subtype is van T.

Dit principe houdt in dat als de basisklasse T gebruikt wordt in een programma, het programma ook correct dient te werken met alle specifieke implementaties van T, zonder wijzigingen in het programma te hoeven maken.

Het substitutieprincipe van Liskov werd voorgesteld in 1987 door Barbara Liskov op de conferentie Data abstraction and hierarchy en werd in 1993 geformuleerd.[1]

Het probleem[bewerken]

klassendiagram wekker

Een van de belangrijke elementen uit het objectgeoriënteerde programmeren is de overerving: een klasse kan variabelen en functies en procedures ervan van een superklasse. De relatie tussen de klassen is meestal een is-een-relatie.

Een voorbeeld is de wekkerklasse. In de wekkerklasse staan de functie maakGeluid en het veld geluid. Op het moment dat de wekker hoort te gaan wordt de functie maakGeluid aangeroepen en gaat het alarm af. Een analoge wekker is een wekker en is zo gemaakt dat het de wekker overerft. Ook een digitale wekker is een wekker en erft dus van de wekkerklasse. De dovenwekker is ook een wekker, maar nu is er een probleem. Deze wekker trilt in plaats van dat hij geluid maakt. Toch erft hij de functie maakGeluid en het veld geluid. Van de functie maakGeluid is het dus niet duidelijk wat het doet.

Referenties[bewerken]

  1. Barbara Liskov; Jeannette Wing, Family Values: A Behavioral Notion of Subtyping, 16 juli 1993, 36

Externe link[bewerken]