11. Tēma — Objektorientētā programmēšana (OOP)

Par šo tēmu

Funkcijas un vārdnīcas ir labas mazām programmām, taču lielākiem projektiem nepieciešama spēcīgāka organizācijas paradigma — objektorientētā programmēšana. Šajā tēmā Tu iemācīsies projektēt programmas, kas atspoguļo reālus objektus: katrs varonis, ienaidnieks, ierocis vai burvojums kļūst par savu klasi ar saviem datiem un uzvedību.

Tu apgūsi četrus OOP stūrakmeņus: iekapsulācija (dati + metodes vienā vietā), mantošana (klašu hierarhija), polimorfisms (dažādas klases — vienots interfeiss) un abstrakcija (paslēpt sarežģītību).

Tēmas noslēgumā Tu izveidosi RPG cīņas spēli, kurā varoņi (Bruņinieks, Burvis, Strēlnieks) ar atšķirīgām spējām cīnās ar nejauši ģenerētiem ienaidniekiem (Goblini, Pūķi, Skeleti). Spēles arhitektūra demonstrēs visu četru OOP principu darbību.

Tēmas saturs

11. tēmas špikeris

Klases anatomija

class Varonis:
    """Klases docstring — dokumentācija."""

    # Klases atribūts (kopīgs visiem objektiem)
    suga = "cilvēks"

    def __init__(self, vards, hp=100):  # konstruktors
        self.vards = vards               # objekta atribūts
        self.hp = hp

    def cizt(self, b):                    # metode
        self.hp -= b
        return self.hp

    def __str__(self):                    # dunder
        return f"{self.vards} ({self.hp} HP)"

# Lietošana
v = Varonis("Artūrs", hp=120)
v.cizt(15)
print(v)        # Artūrs (105 HP)

4 OOP principi

PrincipsNozīme
IekapsulācijaDati un metodes apvienoti klasē, "_" prefiks norāda privāto.
MantošanaBērna klase pārmanto vecāku atribūtus un metodes.
PolimorfismsVairākas klases ar to pašu metodes nosaukumu, bet atšķirīgu uzvedību.
AbstrakcijaPaslēpt sarežģītību aiz vienkāršas saskarnes.