Uzdevums - Hokeja čempionāts
2025/26 AL eksāmena uzdevums OOP sadaļā.
Saturs
Uzdevuma apraksts
Šogad norisināsies kārtējais Latvijas hokeja čempionāts. Tās vadībai nepieciešams izveidot čempionāta vadības informācijas sistēmu, kurā uzglabāt un apstrādāt informāciju par komandām, spēlētājiem un spēlēm. Sistēma ar laiku tiks papildināta, taču sākotnēji ir nepieciešama iespēja ievadīt informāciju par spēlētājiem un izveidot komandu katalogu spēlēm.
Uzdevumi
Izvēlētajā programmēšanas valodā izstrādā programmu, kas realizē turpmāk norādītos uzdevumus. Savu programmu raksti vienā datnē. Ievēro norādītos izvades piemērus un norādītos klašu, metožu un objektu nosaukumus. Tāpat ievēro klašu, metožu, procedūru, funkciju, atribūtu, objektu, mainīgo nosaukumu un datu tipu atbilstību labās prakses principiem. (38 punkti)
1.1. Izveido klasi „Speletajs” (1 punkts), kurai ir šādi atribūti (iekavās ir norādīti datu piemēri objektam, kas turpmāk būs jāveido) (1 punkts):
- vārds – obligātais atribūts (Rodrigo);
- uzvārds – obligātais atribūts (Ābols);
- numurs – obligātais atribūts (18);
- spēles – obligātais atribūts (3);
- punkti – obligātais atribūts (4);
- augums (191);
- svars (81);
- nūjas tvēriens (kreisais).
1.2. Izveido klasei „Speletajs” konstruktoru, kas, ja visi klases atribūti ir norādīti, izveido konkrētā spēlētāja objektu (1 punkts) un izvada atbilstošu ziņojumu (1 punkts). Ja objektam netiek norādīts kāds no obligātajiem atribūtiem, tam(tiem) tiek piešķirtas noklusētās vērtības (iekavās ir norādīti datu piemēri) (2 punkti):
- vārds (Anonīms);
- uzvārds (Anonīms);
- numurs (0);
- spēles (0);
- punkti (0).
Izvades piemērs:
Spēlētājs Rodrigo Ābols ar numuru 18 ir veiksmīgi izveidots.
1.3. Izveido klases „Speletajs” objektu „uzbrucejs”, kas satur norādīto informāciju (1 punkts):
- vārds: Rodrigo;
- uzvārds: Ābols;
- numurs: 18;
- spēles: 3;
- punkti: 4;
- augums: 191;
- svars: 81;
- nūjas tvēriens: kreisais.
1.4. Izveido klasei „Speletajs” metodi „pievienot_punktus(punkti)”, kas pievieno konkrētajam spēlētājam norādīto punktu skaitu (1 punkts). Izmantojot šo metodi, pievieno spēlētājam „uzbrucejs” trīs punktus (1 punkts).
1.5. Izveido klasei „Speletajs” metodi „aprekinat()”, kas aprēķina un atgriež spēlētāja statistiku (vidējo punktu skaitu spēlē) pēc šādas formulas (1 punkts): statistika = punkti / spēles –, rezultātu noapaļojot līdz diviem cipariem aiz komata (1 punkts).
1.6. Izveido klasei „Speletajs” metodi „izvadit()”, kas izvada konkrētā spēlētāja vārdu un uzvārdu, kā arī numuru un statistiku atbilstoši izvades piemēram (1 punkts). Izmantojot šo metodi, izvadi informāciju par spēlētāju „uzbrucejs” (1 punkts).
Izvades piemērs:
Spēlētāja "Rodrigo Ābols (18)" statistika ir vidēji 2,33 punkti spēlē.
1.7. Izveido klases „Speletajs” apakšklasi „Vartsargs” vārtsarga pozīcijas spēlētājiem (1 punkts). Izveido apakšklasei „Vartsargs” šādus papildu atribūtus (1 punkts):
- metieni kopā (7);
- atvairītie metieni (5).
Ja apakšklases „Vartsargs” objektam netiek norādīts kāds no papildu atribūtiem, tam(tiem) tiek piešķirtas noklusētās vērtības (iekavās ir norādīti datu piemēri) (1 punkts).
1.8. Izveido apakšklases „Vartsargs” objektu „vartsargs”, kas satur norādīto informāciju (1 punkts):
- vārds: Artūrs;
- uzvārds: Šilovs;
- numurs: 31;
- punkti: 2;
- augums: 193;
- svars: 92;
- nūjas tvēriens: kreisais.
1.9. Apakšklasē „Vartsargs” pārraksti virsklases metodi „aprekinat()” (1 punkts), kas aprēķina un atgriež vārtsarga pozīcijas spēlētāja statistiku (atvairīto metienu procentuālo attiecību) pēc šādas formulas: statistika = atvairītie metieni / metieni kopā * 100 –, rezultātu noapaļojot līdz diviem cipariem aiz komata. Izmantojot virsklases metodi „izvadit()”, izvadi informāciju par spēlētāju „vartsargs” (1 punkts).
Izvades piemērs:
Vārtsarga "Artūrs Šilovs (31)" statistika ir 71,43 %.
1.10. Izveido klasi „Komanda” (1 punkts), kurai ir šādi atribūti (iekavās ir norādīts datu piemērs objektam, kas turpmāk būs jāveido) (1 punkts):
- nosaukums – obligātais atribūts („Valstsvienība”);
- spēlētāji – obligātais atribūts, kas paredzēts vairāku dažādu spēlētāju objektu uzglabāšanai.
1.11. Izveido klasei „Komanda” konstruktoru, kas, ja visi klases atribūti ir norādīti, izveido konkrētās komandas objektu (1 punkts) un izvada atbilstošu ziņojumu (1 punkts). Ja objektam netiek norādīts nosaukuma atribūts, tam tiek piešķirta iekavās norādītā noklusētā vērtība (1 punkts). Ja objektam netiek norādīts spēlētāju atribūts, tam tiek piešķirta tukša datu struktūra (1 punkts).
Izvades piemērs:
Komanda "Valstsvienība" ir veiksmīgi izveidota.
1.12. Izveido klases „Komanda” objektu „valstsvieniba” (1 punkts).
1.13. Izveido klasei „Komanda” metodi „pievienot(speletajs)” (1 punkts), kas pievieno jaunu spēlētāju komandā (1 punkts) un izvada atbilstošu ziņojumu, ja spēlētājs ir veiksmīgi pievienots (1 punkts). Izmantojot šo metodi, pievieno valstsvienības komandai spēlētāju objektus „uzbrucejs” un „vartsargs” (1 punkts).
Izvades piemērs, ja spēlētāji ir veiksmīgi pievienoti:
Spēlētājs Rodrigo Ābols ir veiksmīgi pievienots komandai "Valstsvienība".
Spēlētājs Artūrs Šilovs ir veiksmīgi pievienots komandai "Valstsvienība".
1.14. Izveido klasei „Komanda” metodi „atrast_vertigako()” (1 punkts), kas atrod vērtīgāko spēlētāju komandā (ar lielāko punktu skaitu) (1 punkts) un izvada atbilstošu ziņojumu ar informāciju par šādu spēlētāju (1 punkts). Izmantojot šo metodi, atrodi vērtīgāko spēlētāju valstsvienības komandā (1 punkts).
Izvades piemērs:
Komandas "Valstsvienība" vērtīgākais spēlētājs ir Rodrigo Ābols (4 punkti).
1.15. Izstrādā funkcionalitāti un pievieno nepieciešamos atribūtus un metodes, kas realizē turpmāk norādīto, proti, simulē čempionāta vadību (5 punkti).
1.15.1. Čempionātam pievienojas četras dažādas komandas (1 punkts).
1.15.2. Katra komanda izspēlē vienu spēli ar pārējām komandām (1 punkts).
1.15.3. Spēles rezultāts tiek piešķirts pēc nejaušības principa, ņemot vērā, ka maksimālais iegūstamo vārtu skaits vienā spēlē katrai komandai ir seši (1 punkts).
1.15.4. Uzvaras gadījumā komanda iegūst divus punktus, ja rezultāts ir neizšķirts, katrai komandai – viens punkts, ja komandai ir zaudējums – nulle punktu (1 punkts).
1.15.5. Izvadi visu spēļu rezultātus atbilstoši izvades piemēram (1 punkts).
Izvades piemērs vienai spēlei:
1. spēle – "Komanda1":"Komanda2" (2:1)
Autors
Mārtiņš Bērziņš
Uzraksti atsauksmi uz [email protected] [email protected]