Paradigmata programování 3

Aplikaci PP-Polyglot, kterou budeme používat na cvičení, lze stáhnout v tomto odkazu odkazu.

Seznam úkolů

Úkol 1. Křižovatka

Na cvičení 9.11. se bude psát "test", který ověří, že rozumíte kódu, který jste odevzdali. V případě, že test psát z nějakého důvodu nebudete, proběhne odevzdání ústně (např. v konzultačních hodinách).

Definujte třídu semaphore (zvolte pro ni vhodného předka), jejíž instance budou simulovat dopravní semafor. Požadavky:

Definujte třídu crossroads (zvolte pro ni vhodného předka), jejíž instance budou představovat obrázky křižovatky. Požadavky:

  1. Vlastnost items bude nastavitelná uživatelem. Může obsahovat libovolné grafické objekty, z nichž některé mohou být semafory.
  2. Třída definuje vlastnost semaphores (jen ke čtení), která bude obsahovat seznam všech semaforů v křižovatce.
  3. Křižovatka se podobně jako semafor může nacházet v různých fázích. Jednotlivé fáze křižovatky se budou opět přepínat zprávou next-phase a budou uloženy v nastavitelné vlastnosti current-phase. Počet fází bude uložen ve vlastnosti phase-count.
  4. Fáze křižovatky určují, v jakých fázích jsou její semafory. To je zadáno nastavitelnou vlastností program, která obsahuje program semaforu. To je seznam seznamů. Jeho délka udává počet fází, i-tý podseznam programu určuje stav křižovatky v její i-té fázi. Každý podseznam má délku rovnou počtu semaforů v křižovatce a pro každý semafor obsahuje číslo jeho fáze. Příklad: pro křižovatku o třech semaforech a programem ((0 0 0) (0 1 0) (0 2 1)) platí, že je-li křižovatka ve fázi 2, je její první semafor ve fázi 0, druhý ve fázi 2 a třetí ve fázi 1.

Do kódu (zakomentovaného) napište testovací scénář křižovatky, která obsahuje alespoň 3 semafory (:vehicle i :pedestrian).

Úkol je opravován pomocí automatických testů, proto dbejte na správné pojmenování metod a tříd!

Nejzazší datum pro odevzdání je 9.11. ve 11:00. Odevzdávejte pouze soubor s příponou lisp (pojmenování souboru příjmení_jméno.lisp), který obsahuje pouze Váš kód k tomuto úkolu.

Link pro odevzdání: zde (heslo je pp3)

Zápočet

Plagiátorství a odevzdvání úkolů

“Pokud se student dopustí plagiátorství, opisování při písemném testu, opisování při práci na domácím úkolu nebo se jiným způsobem pokusí o podvod, zahájí s ním vedoucí katedry kárné řízení. Pokud se takové jednání studenta opakuje, vedoucí katedry navrhne děkanovi fakulty vyloučit studenta ze studia.” – viz web katedry

Zadaní z prvního cvičení

Vytvořte datové struktury (například pomocí property seznamů) pro geometrické objekty:

Dále máme tyto požadavky:

  1. Napište konstruktory, selektory a mutátory pro tyto datové struktury.
  2. Napište funkci, která zjistí o struktuře jakého je typu.
  3. Napište funkci move, která posune zadaný geometrický objekt o hodnoty x a y.
  4. Zamyslete, jak bychom museli upravit tyto struktury, aby měli nějakou společnou vlastnost. Například pokud by každy geometrický objekt měl obsahovat informaci o své barvě.
  5. Zamyslete se, jaké problémy bychom museli řešit, pokud bychom chtěli přidat další strukturu pro trojúhelník.