PYTHON objektno programiranje - gradnja razreda

PYTHON objektno programiranje - gradnja razreda

Avtor: Saša Kožuh

Učni cilji: gradnja svojega razreda, uporaba razreda objektov.

Uvod v objektno programiranje

Pri objektnem programiranju manipuliramo z objekti. Objekt je skupek nekih podatkov, ki so smiselno postavljeni. Recimo če imamo opraviti z objekti, ki opisujejo avtomobile, potem bomo v objetu verjetno našli podatke kot so: barva, moč, število vrat, letnik, prevoženi kilometri, ...

Če imamo več avtomobilov, potem lahko opazimo, da potrebujemo objekte v katerih hranimo podobne podatke. Torej so si ti objekti med seboj podobni - imajo enako strukturo. Temu rečemo, da pripadajo istemu razredu.

Razred (class) je skupek objektov enakega tipa. Razred sam po sebi ne obstaja, vsebuje le pravila po katerih se objekti istega tipa obnašajo.
Pravilom, ki so zapisana v razredu pravimo metode.

Gradnja razreda - razred

Razredi so definirani v posebnih datotekah. Te datoteke so v svojem bistvu enake, le da vsebujejo le pravila in nič drugega, kar sicer najdemo v programih.
Če želimo nek razred v programu uporabiti uporabimo ukaz import, kjer navedmo ime datoteke, kjer je razred shranjen. Sicer to že pozamo, saj smo že uporabljali nekatere metode iz razreda recimo random.

Pri gradnji razreda ga moramo najprej definirati. To napravimo

class ime

(razred1.png)
razred

Konstruktor

Konstruktor je v bistvu osnovno pravilo (metoda), ki določi kako objekt tega razreda izgleda - katere podatke hrani. Konstrutor je metoda, ki kot vhodne podatke dobi najmanj svoj objekt. Ime te metode je vedno init.

(razred2.png)

Ker moramo konstruktorju povedati kakšne podatke želimo shraniti ob rojstvu objekta, konstruktor potrebuje kot vhodne podatke še vse kar bo objekt vseboval. Recimo, da bomo napravili razred Učenec. V objektih tipa Učenec bomo hranili podatke o imenu, priimku in spolu učenca ter njegovi oceni. Zato bo zapis prve vrstice konstruktorja izgledal takole:

(razred3.png)

Objekti imajo svoje lastnosti (mesto kjer se odatki hranijo). Recimo lastnosti nekega objekta tipa učenec so njegovo ime, priimek, ... Že samo ime konstruktor pove, da mora ta metoda objekt napraviti. Zato je treba na začetku vse lastnosti objekta nastaviti na začetno vrednost. To napravimo tako, da sam sebi nastavi ime, ki ga dobi kot argument. Recimo:

(razred4.png)

Tako potem pripravimo še vse ostale lastnosti objekta.

(razred5.png)

Pri čemer je npr. self.ocena - lastnost, spremenljivka za enačajem (tudi ocena) pa dan argument, kar smo zapisali v prvi vrstici. Ni nujno, da sta ti dve imeni enaki.

Konstruktor - privzete vrednosti

Dostikrat je primerno, da zgradimo objekt tudi, če ne dobimo vseh začetnih vrednosti. Lahko se zgodi, da na začetku naši učenci še nimajo ocen. V tem primeru je potrebno konstruktorju "povedati" kakšna naj bo začetna privzeta vrednost. Torej želimo ustvariti takšen konstruktor, ki bo za lastnosti objekta nastavil vrednosti, če jih dobi, sicer pa bo vzel privzete vrednosti. To napravimo tako, da v prvi vrstici podamo vrednosti spremenljivk, ki jih dobimo.

(razred6.png)

Tako bo konstruktor napravil objekt s tistimi lastnostmi, ki jih bo dobil v nasprotnem primeru bodo vsi učenci France.

str metoda

Razred ponavadi vsebuje poleg konstruktorja še kakšno metodo. Najbolj uporabna, skoraj obvezna je str metoda. To je metoda, ki predstavi podatke objekta. Kako so podatki predstavljeni bomo videli, če poizkusimo objekt zapisati na zaslon z ukazom print().
Recimo:

(razred7-2.png)

V tem primeru bomo dobili izpis oblike:
Franca Kovač, ž, ocena=0

Poglejmo:

(razred8.png)

Izpis je res takšen kot smo želeli.

Druge metode

V razredu so lahko tudi druga pravila obnašanja - metode. Recimo, da dostikrat učencem povišamo oceno za eno ali znižamo. Lahko pripravimo metodi, ki bosta to znali napraviti. Seveda ocena ne more biti višja od 5 in nižja od 1.
Metoda za povišanje ocene:

(razred9.png)

Podobno za zmanjševanje:

(razred10.png)

Uporaba:

(razred11.png)

Razred

Tako poteka gradnja razreda. Metode lahko tudi razvrstimo med SET (tiste, ki nastavljajo vrednosti) get GET (tiste, ki nam vrnejo neko izračunano ali kako drugače dobljeno vrnost) metode. Metodi za zmanjševanje in povečevanje ocene sta SET metodi, metoda str je GET metoda saj vrne niz. Ostale zahtevnejše metode presegajo stopnjo tega gradiva.
Celoten razred:

(razred12.png)
0%
0%