Napište rozhraní CoderInt, které bude definovat metody:
- void encode()
- void decode()
Dále nadefinujte abstraktní třídu AbstCoder (implementace CoderInt), která bude mít atributy:
- String data - nezakódovaná data
- key - klíč použitý pro zakódovanání/dekódování textu
- byte[] encoded - zakódovaná data
Třída bude mít navíc metody
- void input() - načte text ze standardního vstupu (viz. příklad na přednášce)
- void outputEnc() - vypíše zakódovaný text na standardní výstup
- void outputDec() -vypíše dekódovaný text na standardní výstup
- konstruktor, který inicializuje klíč na hodnotu, která je konstrkutoru předána jako parametr.
Napište třídu Vernam, která je potomkem třídy AbstCoder a implementuje Vernamovo kódování.
Napište třídu Main, která bude demonstrovat správnost implementace, pomocí zakódování a dekódování textu zadaného uživatelem na standradní vstup. Klíč bude přdán z příkazové řádky.
Převod String -> byte[] a byte[] -> String realizujte příslušnými metodami třídy String.