| 
 | 
 | 
# Skúška 7.2.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
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
(8 bodov)
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
Vytvorte si rozhrania:
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
```csharp
 | 
 | 
 | 
 | 
public interface IStringTransformStrategy
 | 
 | 
 | 
 | 
{
 | 
 | 
 | 
 | 
    string TransformString(string str);
 | 
 | 
 | 
 | 
}
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
public interface ITextProcessor
 | 
 | 
 | 
 | 
{
 | 
 | 
 | 
 | 
    string GetText();
 | 
 | 
 | 
 | 
    void SetStringTransformStrategy(IStringTransformStrategy strategy);
 | 
 | 
 | 
 | 
}
 | 
 | 
 | 
 | 
```
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
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
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
( 25bodov)
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
Vytvorte si triedy `NormalStringTransformStrategy, ReverseOrderStringStrategy, UppercaseStringStrategy` a implementujte návrhový vzor strategy (zvážte, ktoré triedy majú čo implementovať a od čoho dediť).
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
__Poznámka:__ `NormalStringTransformStrategy` vráti nezmeneý reťazec (`abc -> abc`), `ReverseOrderStringStrategy` obráti zadaný reťazec (`abc -> cba`) a `UppercaseStringStrategy` vráti all caps (`abc -> ABC`)
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
__Poznámka 2:__ môžete predpokladať, že vstupný reťazec neobsahuje žiadne špeciálne znaky (ako napr. `\` )
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
## Úloha 3
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
(7 bodov)
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
Zabezpečte nasledovnú interakciu s konzolou (nezabudnite na výpis aktuálneho stavu a to, že kód má bežať až kým nie je stlačená klávesa pre ukončenie):
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
- `q` - ukončí sa program
 | 
 | 
 | 
 | 
- `r` - reverse order
 | 
 | 
 | 
 | 
- `u` - uppercase
 | 
 | 
 | 
 | 
- `n` - normal
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
Na vymazanie obsahu konzoly môžete použiť `Console.Clear()` |