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í:
  1. Vytvoří tří instance třídy Vector a tři instance třídy Matrix. Dvě instance budou stejného typu třetí odlišného.
  2. Vypište hodnotu součtu dvou vektorů stejného typu.
  3. Vypište hodnotu součtu dvou matic stejného typu.
  4. Zkuste sečíst dva vektory různých délek, zachyťte vyvolanou výjimku a vypište její chybové hlášení.
  5. Zkuste sečíst dvě matice rýzných typů, zachyťte vyvolanou výjimku a vypište její chybové hlášení.
  6. Zkuste sečíst vektor a matici, zachyťte vyvolanou výjimku a vypište její chybové hlášení.