Stundas uzdevums: Saprast, kas ir klase, objekts un kā tās atšķiras no vienkāršām vārdnīcām.
70 min darba sadalījums: 1. uzdevums (~20 min) - atjauno teorijas piemēru vai minimālo prototipu; 2. uzdevums (~25 min) - pielieto to galvenajā uzdevumā; 3. uzdevums (~25 min) - pārbaudi rezultātu, izlabo kļūdas un tikai beigās pieraksti vienu secinājumu. Papildus/4. līmeņa uzdevums ir paredzēts tikai tad, ja pamatdarbs ir pabeigts.
Pirms sāc: izmanto iepriekš apgūto un šīs lapas teorijas/koda piemērus. Ja vajadzīga jauna komanda vai rīks, vispirms atrodi tās paraugu teorijas sadaļā.
Klase ir veidne (kā cepuma forma), no kuras var izveidot daudzus objektus (cepumus). Katrs objekts ir patstāvīgs un var saturēt dažādas vērtības, bet visiem ir vienāda struktūra un metodes.
class KlasesKomanda:
"""Klases komandas veidne."""
pass # tukša klase - tikai pamatstruktūra
# Objektu izveide
komanda_a = KlasesKomanda()
komanda_b = KlasesKomanda()
print(type(komanda_a)) # <class '__main__.Suns'>
print(komanda_a is komanda_b) # False - divi atšķirīgi objekti
Kāpēc izvēlēties klasi pār vārdnīcu? Klases nodrošina:
Šis ir īss iesildīšanās uzdevums. Nokopē sagatavi, ielīmē to pareizajā koda vietā un palaid. Šeit pietiek droši izmēģināt tēmu 11.1 Klases un objekti; detalizētu izpratni veidosi nākamajos uzdevumos.
Kopējamais piemērs vai sagatave: izmanto šo bloku kā starta punktu, nevis kā gala risinājumu.
class KlasesKomanda:
"""Klases komandas veidne."""
pass # tukša klase - tikai pamatstruktūra
# Objektu izveide
komanda_a = KlasesKomanda()
komanda_b = KlasesKomanda()
print(type(komanda_a)) # <class '__main__.Suns'>
print(komanda_a is komanda_b) # False - divi atšķirīgi objekti
main.py failā un palaid no termināļa.Pievieno šīs stundas objektorientēto paņēmienu kā nelielu, strādājošu projekta daļu.
Speletajs, punkti vai pievieno_punktu().Pārbaudi, vai objekti un metodes darbojas paredzami.
Ja pamatdarbs ir pabeigts, paplašini projektu ar vienu nelielu objektorientētu uzlabojumu.
self: Klašu metodes vienmēr saņem self kā pirmo parametru.p1.maks_energija = 200 izveido OBJEKTA atribūtu, nevis maina klases atribūtu.Speletajs, nevis speletajs).class Speletajs:
"""Vienkāršs turnīrātāja modelis."""
maks_energija = 100 # klases atribūts
speletajs1 = Speletajs()
speletajs1.vards = "Anna"
speletajs1.energija = 100
speletajs2 = Speletajs()
speletajs2.vards = "Jānis"
speletajs2.energija = 80
print(f"{speletajs1.vards}: {speletajs1.energija}/{Speletajs.maks_energija}")
print(f"{speletajs2.vards}: {speletajs2.energija}/{Speletajs.maks_energija}")