OOP kompositsioon Pythonis

Mis on OOP kompositsioon?

Lühidalt OOP kompositsioon on objekti, ehk Pythoni puhul klassi (või enum-i) kasutamine muutujana teises objektis. See võimaldab meil luua keerulisi objekte, mis hoiavad enda sees omakorda veel teisi klasse ja nii saame erinevaid objekte kombineerida. Vahepeal seda nimetatakse ka Has-A Relation. Kompositsioon pole pärimine (inheritance), ehk me ei saa kasutatavat klassi kuidagi muuta, antud klass on nagu muutuja.

Näited:

# 1)
# ------------------------------------------------------------
class Component:

   # composite class constructor
    def __init__(self):
        print('Component class object created!')

    # composite class instance method
    def method_one(self):
        print('Component class method_one() method executed!')


class Composite:

    # composite class constructor
    def __init__(self):

        # creating object of component class
        self.obj1 = Component()

        print('Composite class object also created!')

     # composite class instance method
    def method_two(self):

        print('Composite class method_two() method executed!')

        # calling method_one() method of component class
        self.obj1.method_one()


# creating object of composite class
obj2 = Composite()

# calling m2() method of composite class
obj2.method_two()

# ------------------------------------------------------------
# 2)

class Salary:
    def __init__(self, pay, bonus):
        self.pay = pay
        self.bonus = bonus
    def annual_salary(self):
        return (self.pay * 12) + self.bonus


class Employee:
    def __init__(self, name, age, pay, bonus):
        self.name = name
        self.age = age
        self.obj_salary = Salary(pay, bonus)
    def total_salary(self):
        return self.obj_salary.annual_salary()


emp = Employee('John', 25, 15000, 10000)
print(emp.total_salary())
# 190000

Milleks ja kuidas kasutatakse OOP kompositsiooni?

Ülevalolevatelt näidetelt on näha, et OOP kompositsiooni kasutatakse kui tahetakse luua keerulisi objekte, mis on kombinatsioon mitmest teisest klassist. OOP kompositsioon koos OOP pärimisega (inheritance) on viisid kuidas teha koodi puhtamaks ja taaskasutatavamaks ning see aitab kokku hoida arendaja aega tulevase funktsionaalsuse lisamisel.

Lisalugemist