Orice obiect are proprietăți (date) și comportamente (metode) — exact ca în viața reală. Surpriza lecției: folosești obiecte de luni de zile fără să știi. Azi le vezi pe față.
Clasa e tiparul: descrie CE proprietăți și CE comportamente are un tip nou. Obiectul e prăjitura concretă. Apasă pe un elev!
Până acum, ca să ții minte trei elevi, foloseai liste paralele. Funcționează — până în clipa în care ștergi ceva dintr-una singură.
Programa cere „utilizarea claselor predefinite" — și exact asta ai făcut tot anul, fără să știi numele conceptului:
fereastra = tk.Tk() — chiar modulul următor instanțiază obiecte-fereastră cu metode ca .mainloop(). (M12)
v.append(5), v.sort() — lista e obiect al clasei list; metodele le știi pe de rost. (M05c)
f = open(...) creează un obiect; f.readline() și f.close() sunt metodele lui. (M10)
fin e un obiect al clasei ifstream; fin.close() e apel de metodă — POO există și în C++!
Definești clasa o dată, apoi creezi câte obiecte vrei. Fiecare acces trece prin punct: obiect.proprietate, obiect.metoda().
Clasa Elev e definită mai sus. Instanțiaz-o chiar aici: dă-i nume și notă unui elev nou, apoi apelează-i metodele.
Unele metode îți întorc un răspuns și nu ating nimic. Altele schimbă datele obiectului. Iar __str__ îi spune lui print cum să arate obiectul.
Obiectul rămâne neatins. Se comportă exact ca un subprogram cu return (Modulul 05) — doar că își ia datele din self.
O proprietate poate fi chiar o listă (Modulul 04a). Obiectul „ține minte" între apeluri — asta e starea lui.
Fiecare apăsare apelează o metodă. Urmărește cum se schimbă self.preturi.
Cinci întrebări — vocabularul POO trebuie să fie beton.
POO în șase idei.
Trei exerciții în Python, exact în stilul lecției. Fiecare = o clasă cu date + o metodă care „face ceva".