Klasse-erfelijkheid

Introductie tot objectgeoriënteerd programmeren in Python

George Boorman

Curriculum Manager, DataCamp

Code hergebruiken

 

1. Iemand heeft het al gebouwd

 

  • Pakketten zijn top voor vaste functionaliteit
  • OOP is top voor maatwerk

logo’s van verschillende Python-pakketten

Introductie tot objectgeoriënteerd programmeren in Python

Code hergebruiken

 

1. Iemand heeft het al gebouwd

 

2. DRY: Don't Repeat Yourself

allerlei gui‑elementen

Introductie tot objectgeoriënteerd programmeren in Python

Code hergebruiken

 

1. Iemand heeft het al gebouwd

 

2. DRY: Don't Repeat Yourself

gebruik geen verschillende gui‑elementen

Introductie tot objectgeoriënteerd programmeren in Python

Erfelijkheid

 

$$\Large{\text{Nieuwe klasse = oude klasse + extra}}$$

Introductie tot objectgeoriënteerd programmeren in Python

Voorbeeldhiërarchie

BankAccount-klasse

Introductie tot objectgeoriënteerd programmeren in Python

Voorbeeldhiërarchie

SavingsAccount erft van BankAccount

Introductie tot objectgeoriënteerd programmeren in Python

Voorbeeldhiërarchie

CheckingAccount erft ook van BankAccount

Introductie tot objectgeoriënteerd programmeren in Python

Voorbeeldhiërarchie

CheckingAccount heeft een aangepaste withdraw-methode

Introductie tot objectgeoriënteerd programmeren in Python

Klasse-erfelijkheid implementeren

class BankAccount:
    def __init__(self, balance):
       self.balance = balance

    def withdraw(self, amount):
        self.balance -= amount


# Class inheriting from BankAccount class SavingsAccount(BankAccount): pass
  • BankAccount: ouderklasse waarvan functionaliteit wordt uitgebreid/geërfd
  • SavingsAccount: kind/subklasse die erft en extra toevoegt
Introductie tot objectgeoriënteerd programmeren in Python

Kindklasse heeft alle ouderdata

# Constructor geërfd van BankAccount
savings_acct = SavingsAccount(1000)
type(savings_acct)
__main__.SavingsAccount
# Attribuut geërfd van BankAccount
savings_acct.balance
1000
# Methode geërfd van BankAccount
savings_acct.withdraw(300)
Introductie tot objectgeoriënteerd programmeren in Python

Erfelijkheid: “is-een”-relatie

Een SavingsAccount is een BankAccount

(mogelijk met extra’s)

savings_acct = SavingsAccount(1000)
isinstance(savings_acct, SavingsAccount)
True
isinstance(savings_acct, BankAccount)
True

 

 

acct = BankAccount(500)
isinstance(acct, SavingsAccount)
False
isinstance(acct, BankAccount)
True
Introductie tot objectgeoriënteerd programmeren in Python

Laten we oefenen!

Introductie tot objectgeoriënteerd programmeren in Python

Preparing Video For Download...