Skúška 12.2.2020
- Je povolené používať svoj (už existujúci) kód a tiež internet na vyhľadanie informácii týkajúcich sa syntaxe jazyka C#, metód a pod. Nie je povolené komunikovať cez Internet (ani inak) s použitím mailu, chatu, Facebooku a pod. Porušenie tohto zákazu je dôvodom pre vylúčenie zo skúšky s hodnotením 0 bodov. Nie je povolená žiadna forma plagiátorstva (čiastkové riešenia problémov môžete použiť, v takomto prípade uveďte do komentárov URL).
- V prípade, že bude odhalený pokus o podvod, všetci zúčastnení na podvode budú vylúčení zo skúšky s hodnotením 0 bodov.
- Ak sú v zadaní uvedené názvy tried, premenných a metód, používajte presne tie mená, ktoré sú uvedené v zadaní.
- Dodržanie bodov uvedených v podmienkach akceptácie zadania – rovnaké podmienky platili pri zápočte.
- Uznané bude len riešenie, ktoré je možné skompilovať a spustiť na testovacom počítači (na ktorom sa budú spúšťať všetky zadania).
- Hotové zadanie nahrajte na Hades - nezabudnite pred zabalením dať clean solution (a vymazať skrytý priečinok .vs)
Na vypracovanie zadania máte 60 minút. Použite konzolovú aplikáciu. Body sa prideľujú iba ak je študent schopný obhájiť svoj kód, nestačí, že to je napísané.
Ak používate kód prebraný z internetu, je nutné uviesť zdroj.
Úloha 1
(30bodov)
Vytvorte si triedy
public abstract class SongComponent
{
void DisplayInfo(); //implementovat v ulohe 2, podla potreby moze byt oznacena ako abstract
void SetLevel(int level); //NEPOVINNE - na zjednodusenie prace, aby ste vedeli, na akej urovni sa nachadza
}
public class Song : SongComponent
{
string GetSongName()
{
}
string GetBandName()
{
}
int GetReleaseYear()
{
}
}
public class SongGroup : SongComponent
{
string GetGroupName()
{
}
string GetGroupDescription()
{
}
}
Implementujte návrhový vzor composite - existujú dva spôsoby, ako ho implementovať. Podľa toho, ktorý ste si zvolili, pridajte nasledujúce metódy na vhodné miesto v horeuvedených triedach:
void Add(SongComponent component);
void Remove(SongComponent component);
IEnumerable<SongComponent> GetChildNodes(); //vrati zoznam vnorenych uzlov
Úloha 2
(15 bodov)
Pridajte si triedu
public class OutputWriter
{
public static OutputWriter GetInstance()
{
//magic
}
void WriteLine(string line)
{
//more magic
}
}
a implementujte ju ako singleton. Vo funkcií WriteLine
zabezpečte výpis na obrazovku.
Implementujte DisplayInfo
tak, aby ste dostali obdobný výpis (pesničky si zvoľte vlastné - nech sú aspoň 3 úrovne hierarchie):
Playlist
-Metal
--PowerMetal
---Powerwolf
----Armata Strigoi - 2015
----Demons Are a Girl's Best Friend - 2018
---Sabaton
----Night Witches - 2014
----Ruina Imperii - 2012
--Classic Heavy Metal
---Iron Maiden
----Number of the Beast - 1982
----Moonchild - 1988
Úloha 3
(10 bodov)
Upravte OutputWriter
tak, aby WriteLine
zapisoval naraz aj na obrazovku a aj do súboru.
Ďalšie body
Dodržanie zapúzdrenia, coding guidelines (5 bodov)