9. OOP

Mis on OOP?

Objektorienteeritud programmeerimine (OOP) on programmeerimise paradigma, mis kasutab “objekte” – andmestruktuure, mis koosnevad andmeväljadest ning meetoditest. Kasutusel võivad olla selliseid võtted nagu andmete abstraktsioon, kapseldamine, modulaarsus, polümorfism ning pärimine.

🔍 OOP põhimõisted / Основные концепции ООП

Python toetab mitut programmeerimisstiili, kuid objektorienteeritud paradigma on üks olulisemaid. OOP keskendub andmete ja käitumise organiseerimisele objektide kaudu.

Python поддерживает несколько стилей программирования, но объектно-ориентированная парадигма является одной из ключевых. ООП фокусируется на организации данных и поведения через объекты.

📌 OOP eelised / Преимущества ООП

EestiРусский
Parem koodi korrastatusЛучшая организация кода
Lihtsam vigade otsimineПроще находить ошибки
Koodi uuesti kasutamineПовторное использование кода
Lihtsam koostöö teistegaУпрощает командную работу

🧩 OOP põhikomponendid / Основные компоненты ООП

1. Klassid ja objektid / Классы и объекты

class Inimene:  # Klassi definitsioon / Определение класса
    def __init__(self, nimi, vanus):
        self.nimi = nimi  # Atribuut / Атрибут
        self.vanus = vanus
    
    def tutvusta(self):  # Meetod / Метод
        print(f"Tere! Mina olen {self.nimi}, {self.vanus} aastat vana.")

# Objekti loomine / Создание объекта
isik1 = Inimene("Mari", 25)
isik1.tutvusta()  # Tere! Mina olen Mari, 25 aastat vana.

2. Pärimine (Inheritance) / Наследование

class Opilane(Inimene):  # Pärib Inimene klassist / Наследует от класса Inimene
    def __init__(self, nimi, vanus, klass):
        super().__init__(nimi, vanus)  # Kutsub ülemklassi meetodi / Вызывает метод родительского класса
        self.klass = klass
    
    def tutvusta(self):  # Meetodi ülekirjutus / Переопределение метода
        print(f"Olen {self.klass}. klassi õpilane {self.nimi}")

opilane1 = Opilane("Jaan", 12, "6")
opilane1.tutvusta()  # Olen 6. klassi õpilane Jaan

3. Kapseldamine (Encapsulation) / Инкапсуляция

class Konto:
    def __init__(self):
        self.__saldo = 0  # Privaatne muutuja / Приватная переменная
    
    def deposiit(self, summa):
        if summa > 0:
            self.__saldo += summa
    
    def get_saldo(self):  # Getter-meetod / Геттер-метод
        return self.__saldo

konto = Konto()
konto.deposiit(100)
print(konto.get_saldo())  # 100

4. Polümorfism (Polymorphism) / Полиморфизм

class Loom:
    def haal(self):
        pass

class Kass(Loom):
    def haal(self):
        return "Mjau!"

class Koer(Loom):
    def haal(self):
        return "Auh!"

loomad = [Kass(), Koer()]
for loom in loomad:
    print(loom.haal())  # Mjau! Auh!

💡 Näide: Lihtne rakendus / Пример: Простое приложение

class Toode:
    def __init__(self, nimi, hind):
        self.nimi = nimi
        self.hind = hind
    
    def soodustus(self, protsent):
        return self.hind * (1 - protsent/100)

class Ostukorv:
    def __init__(self):
        self.tooted = []
    
    def lisa_toode(self, toode):
        self.tooted.append(toode)
    
    def kogu_summa(self):
        return sum(toode.hind for toode in self.tooted)

# Kasutamine / Использование
kast = Toode("Piim", 1.5)
leib = Toode("Leib", 2.0)

korv = Ostukorv()
korv.lisa_toode(kast)
korv.lisa_toode(leib)

print(f"Kogusumma: {korv.kogu_summa()}€")  # Kogusumma: 3.5€

📚 OOP tähtsamad mõisted / Важные концепции ООП

EestiРусскийSelgitus / Пояснение
KlassКлассObjektide mall / Шаблон объектов
ObjektОбъектKlassi eksemplar / Экземпляр класса
PärimineНаследованиеÜhe klassi omaduste kasutamine teises / Использование свойств одного класса в другом
KapseldamineИнкапсуляцияAndmete varjamine ja kontrollitud juurdepääs / Сокрытие данных и контролируемый доступ
PolümorfismПолиморфизмSama meetodi erinev käitumine / Разное поведение одного метода

🚀 Edasijõudnutele / Для продвинутых

python

Copy

Download

@classmethod  # Klassimeetod / Метод класса
def loo_anonüümne(cls):
    return cls("Anonüümne", 0)

@staticmethod  # Staatiline meetod / Статический метод
def täiskasvanu(vanus):
    return vanus >= 18

Kokkuvõte / Итог:

  • OOP võimaldab luua paremini korraldatud ja hooldatavat koodi
  • Pythonis on OOP rakendamine lihtne ja intuitiivne
  • Põhikontseptsioonid: klassid, objektid, pärimine, kapseldamine, polümorfism

ООП позволяет создавать лучше организованный и поддерживаемый код
В Python реализация ООП проста и интуитивна
Основные концепции: классы, объекты, наследование, инкапсуляция, полиморфизм