16. Objektid
Objektide teema on edaspidises programmeerimises oluline, kuid momendil teeme sellest lihtsalt lühiülevaate. Tulevikus kasutatav graafiliste mängude mooduli PyGame puhul näeme pidevalt sarnast lähenemist (punkt objekti ja selle meetodi vahel jne). Kui selle peatüki sisu jääb kohati võõraks, pole vaja muretseda.
Hoides andmeid mingi objekti (näiteks ühe inimese) kohta oleme seni kasutanud erinevaid muutujaid: eraldi muutujat eesnime, perekonnanime, vanuse jne kohta. Mitme inimese kohta peaksime muutujate arvu suurendama ning nendega ümberkäimine on tülikas.
Nagu reaalsete asjade puhul, saame ka programmeerimisel kasutada objekte koos nende omaduste kirjelduste ja nendega seotud meetoditega (tegevustega). Reaalses maailmas oleval objekti "raamat" kirjeldamisel saame öelda näiteks, milline on selle pealkiri, kes on autor, mitu lehte sellel on, millist värvi on kaaned jne. Samuti saame me kirjeldada tegevusi, mida me saame raamatuga teha: seda avada, lugeda, sulgeda jne. Objektide omadusi nimetatakse nende atribuutideks, tegevusi, mida nendega teha saab, meetoditeks.
Pythonis võiksime objekti "raamat" kirjeldada näiteks nii:
- atribuudid: raamat.pealkiri, raamat.autor, raamat.lk_arv jne;
- meetodid: raamat.avamine(), raamat.lugemine(), raamat.sulgemine().
Punkt eristab objekti selle atribuudist või meetodist. Atribuutideks võivad olla suvalised muutujad (arvud, sõned, ka järjendid jne), meetoditeks funktsioonid.
Objekti luues defineerime kõigepealt nn. klassi (inglise k. class) e. omaduste ja meetodite kogumi, millest seda tüüpi objektid koosnevad.
class Raamat: def avamine(self): self.olek = "lahti" return self.olek def sulgemine(self): self.olek = "kinni" return self.olek
Nüüd tuleb luua konkreetne raamatu tüüpi objekt:
romaan = Raamat("", "")
Seejärel lisada sellele uuele Raamat-tüüpi objektile "romaan" atribuudid:
romaan.pealkiri = "Toomas Nipernaadi" romaan.autor = "Gailit" romaan.olek = "kinni"
Kui soovime teada, millised on objekti "romaan" autor ja pealkiri, võime kasutada sellist rida:
print(romaan.autor, romaan.pealkiri)
Kui tahame vaadata raamatu olekut, seejärel muuta seda ("avada" raamatut) ning olekut uuesti vaadata, võime kirjutada nii:
print(romaan.olek) romaan.avamine() print(romaan.olek)
Creative Commons litsentsiga Autorile viitamine + Mitteäriline eesmärk 3.0 Eesti (CC BY-NC 3.0 EE) - https://creativecommons.org/licenses/by-nc/3.0/ee/