6. týždeň

Problemset 1: Training

Ciele

  1. Overiť si osvojené vedomosti o základných princípoch objektovo orientovaného programovania.

Pokyny

  • Termín, do ktorého je potrebné odovzdať zadanie, je piatok 3. novembra 2023 o 23:59. Je to zároveň posledný termín hodnotenia projektov v GitLab-e systémom Arena.
  • Pri práci na zadaní dodržiavajte etický kódex!

Poznámka


  • Aktualizujte si knižnicu na verziu 2.6.1, keďže tá sa používa v Arene.
  • Testovanie v systéme Arena ešte nebolo spustené.

Úlohy

Vypracujte všetky primárne aj sekundárne (doplňujúce) úlohy z cvičení Lab #2, Lab #3,Lab #4 a Lab #5.

Odovzdávanie

Zadanie sa odovzdáva prostredníctvom systému na správu verzií Git na školskom GitLab serveri https://git.kpi.fei.tuke.sk.

Na odovzdanie zadania využijete projekt, ktorý ste si vytvorili prostredníctvom aplikácie OOP Gitlab Classroom na začiatku semestra.

Zdrojový kód vášho projektu môžete upravovať až kým nenastane posledný termín testovania systémom Arena.

Štruktúra projektu

Kódovanie všetkých odovzdávaných súborov musí byť UTF8. Pri názvoch vytváraných súborov a priečinkov záleží na veľkosti písmen! Štruktúra vášho projektu bude vyzerať nasledovne:

. // root adresar repozitara
├── gradle  // obsahuje subory nastroja gradle
├── src
│  ├── main
│  │  ├── java
│  │  │  └── sk
│  │  │     └── tuke
│  │  │        └── kpi
│  │  │           └── oop
│  │  │              └── game
│  │  │                 ├── actions
│  │  │                 │  └── PerpetualReactorHeating.java
│  │  │                 ├── tools
│  │  │                 │  ├── BreakableTool.java
│  │  │                 │  ├── FireExtinguisher.java
│  │  │                 │  ├── Hammer.java
│  │  │                 │  ├── Mjolnir.java
│  │  │                 │  ├── Usable.java
│  │  │                 │  └── Wrench.java
│  │  │                 ├── ChainBomb.java
│  │  │                 ├── Computer.java
│  │  │                 ├── Cooler.java
│  │  │                 ├── DefectiveLight.java
│  │  │                 ├── EnergyConsumer.java
│  │  │                 ├── Gameplay.java  // scenar nebude testovany
│  │  │                 ├── Helicopter.java
│  │  │                 ├── Light.java
│  │  │                 ├── PowerSwitch.java
│  │  │                 ├── Reactor.java
│  │  │                 ├── Repairable.java
│  │  │                 ├── SmartCooler.java
│  │  │                 ├── Switchable.java
│  │  │                 ├── Teleport.java
│  │  │                 └── TimeBomb.java
│  │  └── resources
│  │     └── sprites  // obsahuje sprity akterov
├── .editorconfig
├── .gitignore
├── build.gradle.kts
├── gradlew
├── gradlew.bat
└── settings.gradle.kts

Upozornenie

Je dôležité, aby váš repozitár zachoval uvedenú štruktúru. Ak sa niektorý zo súborov síce v repozitári nachádza, ale v inom priečinku, bude to považované za chybu.

Závislosti projektu

Pri preklade a testovaní projektu budú predpokladané nasledovné nastavenia závislostí v súbore build.gradle.kts:

val gamelibVersion = "2.6.1"

dependencies {
    implementation("sk.tuke.kpi.gamelib:gamelib-framework:$gamelibVersion")
}

Hodnotenie a testovanie

Za zadanie môžete získať max. 10 bodov. Počet získaných bodov sa bude odrážať od výsledku testov, ktorými vaše zadanie úspešne prejde. Overovať sa bude:

  • Štruktúra vášho projektu (či sa v ňom nachádzajú potrebné súbory).
  • Statická analýza vášho kódu pomocou nástroja PMD. Váš kód sa bude kontrolovať vzhľadom na tieto pravidlá. Nástroj PMD môžete spúšťať aj lokálne, napríklad pomocou nástroja Gradle (viď návod na nastavenie).
  • Funkčnosť vami vytvorených tried a metód voči úlohám definovaným v zadaní pomocou unit testov.

Za striktnú chybu sa bude považovať:

  • Ak počas prekladu dôjde ku chybe.
  • Ak v implementácií vašich tried používate iné ako privátne členské premenné.
  • Použitie unchecked operácií alebo raw typov.

Upozornenie

Váš kód bude na Arene kompilovaný s prepínačmi -Xlint:unchecked,rawtypes -Werror, ktoré varovania ohľadom použitia unchecked operácii alebo raw typov skonvertujú na chyby a ich výskyt tak spôsobí zlyhanie kompilácie.
Tieto prepínače si viete nastaviť aj pre lokálnu kompiláciu kódu upravením existujúcej konfigurácie JavaCompile úloh v súbore build.gradle.kts do nasledovnej podoby:

tasks {
    withType<JavaCompile> {
        options.compilerArgs.addAll(listOf("-parameters", "-Xlint:unchecked,rawtypes", "-Werror"))
    }
}

Po spustení testovania sa vaše riešenia budú testovať každé 3 hodiny, teda 00:00, 03:00, 06:00 atď. Spracovanie všetkých projektov trvá nejaký čas. O vašich výsledkoch sa budete môcť dozvedieť pomocou RSS kanála alebo sledovaním URL adresy so zoznamom všetkých vašich hodnotení. Obe adresy vám prídu e-mailom na školskú e-mailovú adresu z testovacej platformy Arena len raz. Žiadne ďalšie maily s hodnotením už chodiť nebudú. Nový výsledok testu sa na stránke Areny zobrazí len ak ste od posledného testovania pridali do repozitára na GitLab serveri nový commit.

Vaše riešenia prejdú kontrolou originality. Preto sa pri práci na vašom zadaní správajte podľa pravidiel etického kódexu! V prípade, že odovzdáte zadanie, ktoré nie je vaše, budete vylúčení z predmetu!