Objektorienteeritud programmeerimine (OOP) on programmeerimisparadigma, mis põhineb objektide kasutamisel. Iga objekt on teatud klassi eksemplar ja võib sisaldada andmeid (atribuute) ja funktsioone (meetodeid), mis neid töötlevad.
OOP põhiprintsiibid
- klassid
- objektid
- pärimine
- kapseldamine
- polümorfism.
Klassid ja objektid
Klass on mall, mis määratleb objektide struktuuri. See sisaldab andmeid (atribuute) ja tegevusi (meetodeid), mida saab nende andmete suhtes teostada.
Objekt on klassi konkreetne eksemplar. See pärib klassi omadused, kuid selle andmed võivad olla erinevad.
Näida:
class Product:
def __init__(self, name, price, id):
self.name = name
self.price = price
self.id = id
def __eq__(self, other):
return isinstance(other, Product) and other.id == self.id
__init__ on konstruktor, mis määrab objekti algse oleku.
self kasutatakse objekti atribuutidele ligipääsemiseks.
Meetod __eq__ võimaldab objektide võrdlemist nende identifikaatori järgi.
Pärimine
class Shop:
def __init__(self, name):
self.name = name
self.products = {}
self.product_counts = {}
def add_product(self, product: Product, count=1) -> bool:
if product.id in self.products:
self.product_counts[product.id] += count
else:
self.products[product.id] = product
self.product_counts[product.id] = count
return True
Shop sisaldab kaupadega töötamise meetodeid ja selle objektid saavad hallata kaupade varusid.
Polümorfism
class Cart:
def __init__(self, shop: Shop):
self.products = {}
self.shop = shop
def add_product(self, product: Product, count=1) -> int:
count_in_store = self.shop.get_product_count(product)
if count_in_store < count:
count = count_in_store
self.shop.move_to_cart(product, count)
self.products[product.id] = self.products.get(product.id, 0) + count
return count
add_product teostab eseme lisamise ostukorvi ja selle käitumine sõltub eseme olemasolust poes.
Kood : Github

