Moștenirea claselor

Introducere în Programarea Orientată pe Obiecte în Python

George Boorman

Curriculum Manager, DataCamp

Reutilizarea codului

 

1. Cineva a făcut deja asta

 

  • Pachetele sunt ideale pentru funcționalitate fixă
  • OOP este ideal pentru personalizarea funcționalității

logo-uri ale mai multor pachete Python

Introducere în Programarea Orientată pe Obiecte în Python

Reutilizarea codului

 

1. Cineva a făcut deja asta

 

2. DRY: Don't Repeat Yourself

diverse elemente de interfață grafică

Introducere în Programarea Orientată pe Obiecte în Python

Reutilizarea codului

 

1. Cineva a făcut deja asta

 

2. DRY: Don't Repeat Yourself

nu utilizați diverse elemente de interfață grafică

Introducere în Programarea Orientată pe Obiecte în Python

Moștenire

 

$$\Large{\text{Funcționalitate nouă = Funcționalitate veche + extra}}$$

Introducere în Programarea Orientată pe Obiecte în Python

Exemplu de ierarhie

Clasa BankAccount

Introducere în Programarea Orientată pe Obiecte în Python

Exemplu de ierarhie

SavingsAccount moștenind din BankAccount

Introducere în Programarea Orientată pe Obiecte în Python

Exemplu de ierarhie

CheckingAccount moștenind și el din BankAccount

Introducere în Programarea Orientată pe Obiecte în Python

Exemplu de ierarhie

CheckingAccount are o metodă withdraw modificată

Introducere în Programarea Orientată pe Obiecte în Python

Implementarea moștenirii claselor

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: Clasa părinte a cărei funcționalitate este extinsă/moștenită
  • SavingsAccount: Clasa copil/subclasă care moștenește funcționalitatea și adaugă altele
Introducere în Programarea Orientată pe Obiecte în Python

Clasa copil preia toate datele clasei părinte

# Constructor inherited from BankAccount
savings_acct = SavingsAccount(1000)
type(savings_acct)
__main__.SavingsAccount
# Attribute inherited from BankAccount
savings_acct.balance
1000
# Method inherited from BankAccount
savings_acct.withdraw(300)
Introducere în Programarea Orientată pe Obiecte în Python

Moștenire: relația „este-un"

Un SavingsAccount este un BankAccount

(posibil cu funcționalități speciale)

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
Introducere în Programarea Orientată pe Obiecte în Python

Să exersăm!

Introducere în Programarea Orientată pe Obiecte în Python

Preparing Video For Download...