| 
 | 
 | 
# Skúška 31.1.2022
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
- 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).
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
---
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
Na vypracovanie zadania máte 60 minút. 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
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
( 10bodov)
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
Vytvorte si rozhranie:
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
```csharp
 | 
| 
 | 
 | 
public interface ITextProcessor
 | 
| 
 | 
 | 
{
 | 
| 
 | 
 | 
    string GetText();
 | 
| 
 | 
 | 
}
 | 
| 
 | 
 | 
```
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
Vytvorte si triedu `TextProcessor` ktorá implementuje toto rozhranie. V konštruktore bude jeden parameter - cesta k súboru.
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
`GetText()` vráti obsah tohoto súboru (súbor si dajte priamo k binárke, nestrácajte čas).
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
## Úloha 2
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
( 20bodov)
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
Vytvorte si abstraktnú triedu `TextDecorator` a triedy `AddSpaceDecorator, UnderscoreDecorator` a implementujte návrhový vzor decorator (zvážte, ktoré triedy majú čo implementovať a od čoho dediť).
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
__Poznámka:__ `AddSpaceDecorator` pridá medzeru medzi každú dvojicu znakov, tzn. `abc` -> `a b c` (nedávajte medzeru na začiatok / koniec) a `UnderscoreDecorator` nahradí medzery podčiarkovníkom: `a b c` -> `a_b_c`
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
__Poznámka 2:__ môžete predpokladať, že vstupný reťazec neobsahuje žiadne špeciálne znaky (ako napr. `\` )
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
## Úloha 3
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
(10 bodov)
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
Zabezpečte nasledovnú interakciu s konzolou (nezabudnite na výpis aktuálneho stavu):
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
- `q` - ukončí sa program
 | 
| 
 | 
 | 
- `u` - pridá sa `UnderscoreDecorator`
 | 
| 
 | 
 | 
- `s` - `AddSpaceDecorator`
 | 
| 
 | 
 | 
- `r` - reset
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
Na vymazanie obsahu konzoly môžete použiť `Console.Clear()` |