Stundas uzdevums: Apvienot visas OOP prasmes - klases, mantošanu un polimorfismu - pilnvērtīgā klases turnīra simulatorā.
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ļā.
Tavs klases turnīra simulators izmantos visas OOP iespējas:
Dalibnieks - kopīga visiem (enerģija, vards, sanem_punktus, vai_aktivs).Kapteinis (stabilitāte), Prezentetajs (idejas), LaikaSargs (precīzs temps).PrinteraRinda, WiFiPauze, PazudusaisMarkieris - katrs ar savu stilu.gajiens(), bet darbība atšķiras.Failu struktūra:
klases_turnirs/
├── main.py # turnīra cikls
├── dalibnieki.py # Kapteinis, Prezentetajs, LaikaSargs
├── skersli.py # PrinteraRinda, WiFiPauze, PazudusaisMarkieris
├── bazes.py # Dalibnieks (bāzes klase)
└── riki.py # Markieris, Taimeris, PrezentacijasPults
Š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.6 Noslēguma projekts: Klases turnīra simulators; detalizētu izpratni veidosi nākamajos uzdevumos.
Kopējamais piemērs vai sagatave: izmanto šo bloku kā starta punktu, nevis kā gala risinājumu.
klases_turnirs/
├── main.py # turnīra cikls
├── dalibnieki.py # Kapteinis, Prezentetajs, LaikaSargs
├── skersli.py # PrinteraRinda, WiFiPauze, PazudusaisMarkieris
├── bazes.py # Dalibnieks (bāzes klase)
└── riki.py # Markieris, Taimeris, PrezentacijasPults
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.
dalibnieki.py imports skersli.py, kas imports dalibnieki.py - sadali kopējās lietas bazes.py.vai_aktivs().self.punktu_vesture = [] konstruktorā - NEKAD klases līmenī (visi dalītu vienu sarakstu).import random
class Dalibnieks:
def __init__(self, vards, energija, temps):
self.vards = vards
self.energija = energija
self.temps = temps
def vai_aktivs(self): return self.energija > 0
def sanem_punktus(self, b): self.energija = max(0, self.energija - b)
def __str__(self): return f"{self.vards} ({self.energija} enerģija)"
class Kapteinis(Dalibnieks):
def __init__(self, vards):
super().__init__(vards, energija=150, temps=15)
self.stabilitate = 5
def sanem_punktus(self, b): super().sanem_punktus(max(0, b - self.stabilitate))
class PrinteraRinda(Dalibnieks):
def __init__(self):
super().__init__("PrinteraRinda", energija=40, temps=8)
anna = Kapteinis("Anna")
printeris = PrinteraRinda()
while anna.vai_aktivs() and printeris.vai_aktivs():
printeris.sanem_punktus(anna.temps)
if printeris.vai_aktivs(): anna.sanem_punktus(printeris.temps)
uzvaretajs = anna if anna.vai_aktivs() else printeris
print(f"Uzvarētājs: {uzvaretajs}")