generated from grellert/ine5404-aula-03-nov-solid
-
Notifications
You must be signed in to change notification settings - Fork 0
/
2.ocp.py
49 lines (35 loc) · 1.11 KB
/
2.ocp.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
from abc import ABC, abstractmethod
"""
Open-Closed Principle
Classes devem estar fechadas para modificação, mas abertas para extensão
"""
class Animal(ABC):
def __init__(self, name: str, sound=None):
self.name = name
self.sound = sound
def get_name(self) -> str:
pass
def make_sound(self):
return self.sound
"""
Outro exemplo:
Imagine que você tem uma loja que dá desconto de 20% aos seus clientes favoritos
usando essa classe abaixo. Quando você decide dar 40% de desconto a clientes VIP,
você decide mudar a classe da seguinte forma:
"""
class Discount:
def __init__(self, customer, price):
self.customer = customer
self.price = price
def give_discount(self):
pass
class FavDiscount(Discount):
def __init__(self, customer, price):
super().__init__(customer, price)
def give_discount(self):
return self.price * 0.2
class VIPDiscount(Discount):
def __init__(self, customer, price):
super().__init__(customer, price)
def give_discount(self):
return self.price * 0.4