Napište rozhranní Operand, které bude deklarovat metodu Operand plus(Operand).Dále napište třídy Vector a Matrix, které budou toto rozhranní implementovat.
Třída Vector bude mít atribut value (pole celých čísel). Metoda plus příčte parametr Operand k hodnotě vektoru, ze kterého byl vyvolán a výslednou hodnotu vrátí. V případě, že operand nebude Vector a nebo nebude souhlasit délka vektorů bude vyvolána výjimka InvalidOperandException s chybovým hlášením popisujícím, k jaké chybě došlo.
Třída Matrix bude mít atribut value (dvourozměnré pole celých čísel). Metoda plus příčte parametr Operand k hodnotě matice, ze které byl vyvolán a výslednou hodnotu vrátí. V případě, že operand nebude Matrix a nebo nebude souhlasit rozměr matic bude vyvolána výjimka InvalidOperandException s chybovým hlášením popisujícím, k jaké chybě došlo.
Obě třídy přetíží metodu toString tak, aby vrátila řetězec obsahující hodnotu příslušného objektu.
Třída Matrix bude mít metodu main, která udělá nasledující:
- Vytvoří tří instance třídy Vector a tři instance třídy Matrix. Dvě instance budou stejného typu třetí odlišného.
- Vypište hodnotu součtu dvou vektorů stejného typu.
- Vypište hodnotu součtu dvou matic stejného typu.
- Zkuste sečíst dva vektory různých délek, zachyťte vyvolanou výjimku a vypište její chybové hlášení.
- Zkuste sečíst dvě matice rýzných typů, zachyťte vyvolanou výjimku a vypište její chybové hlášení.
- Zkuste sečíst vektor a matici, zachyťte vyvolanou výjimku a vypište její chybové hlášení.