Napište abstraktvní třídu AbstraktniMatice a třídy CelociselnaMatice a BoolovskaMatice, ktere budou implementovat rozhrani Matice. Hodnoty matic budou nahodne vygenerovane pomoci metod tridy java.util.Random. U soucinu boolovskych matic pouzijte misto aritmetickeho soucinu logicky soucin a misto aritmetickeho souctu logicky soucet. Vypis matic realizujte pretizenim metody toString do bezne podoby (viz JavaDoc komentar v Matice.java) Trida AbstraktniMatice bude deklarovat pouze atribut rad a definovat metodu velikost, ktera vraci rad matice. Tridy CelociselnaMatice a BoolovskaMatice budou obsahovat dvourozmerna pole prislusnych typu, ktera budou inicializovana v konstruktoru. Dale dodefinuji abstraktni metody tridy AbstraktniMatice.