Objectgeoriënteerd programmeren in Python
Alex Yarosh
Content Quality Analyst @ DataCamp

# Bedrag opnemen van elke account in list_of_accounts def batch_withdraw(list_of_accounts, amount): for acct in list_of_accounts: acct.withdraw(amount)b, c, s = BankAccount(1000), CheckingAccount(2000), SavingsAccount(3000) batch_withdraw([b,c,s]) # <-- Zal BankAccount.withdraw() gebruiken, # dan CheckingAccount.withdraw(), # dan SavingsAccount.withdraw()
batch_withdraw() hoeft het object niet te controleren om te weten welke withdraw() aan te roepen
Basisklasse moet uitwisselbaar zijn met elke subklasse zonder eigenschappen van het programma te veranderen
Waar BankAccount werkt, moet CheckingAccount ook werken

Basisklasse moet uitwisselbaar zijn met elke subklasse zonder eigenschappen van het programma te veranderen
→ Syntactische incompatibiliteit
BankAccount.withdraw() vereist 1 parameter, maar CheckingAccount.withdraw() vereist 2
→ Subklasse versterkt invoercondities
BankAccount.withdraw() accepteert elk bedrag, maar CheckingAccount.withdraw() gaat ervan uit dat het bedrag beperkt is
→ Subklasse verzwakt uitvoercondities
BankAccount.withdraw() kan alleen een positief saldo achterlaten of een fout veroorzaken, CheckingAccount.withdraw() kan een negatief saldo achterlaten
→ Wijzigen van extra attributen in methode van subklasse
→ Gooien van extra uitzonderingen in methode van subklasse
$$\text{\textbf{\Huge{Geen LSP -- Geen Overerving}}}$$
Objectgeoriënteerd programmeren in Python