using System;
public class Program
{
public static void Main()
// Priklad na procviceni pokrocileho OOP.
// Chceme program pro praci s mobilnimi zarizenimi.
// 1. Vytvor abstraktni tridu MobilniZarizeni.
// 1a. V ni definuj vlastnost VyrobniKod.
// 1b. Dale tam bude verejna vlastnost OperacniSystem, ktera muze mit hodnoty Windows, Android a iOS.
// 1c. Nakonec tam jeste pridej abstraktni metody Spustit, ktera nic neprijima ani nevraci.
// 2. Vytvor interface definujici, ze zarizeni umi fotit, ktere bude vyzadovat funkci UdelejFotku, ktera nic neprijima a vraci string.
// 3. Vytvor interface definujici, ze zarizeni umi cist otisky prstu, ktere bude vyzadovat funkce NahrajOtisk (nic nevraci, prijima string) a PrectiOtisk (vraci bool a bere string).
// 4. Vytvor tridy Smartphone, Tablet a Notebook. Vsechny jsou potomkem tridy MobilniZarizeni.
// 4a. Pak jim prirad rozhrani: smartphone a tablet umi fotit, smartphone a notebook umi cist otisky prstu.
// 4b. Ve vsech trech tridach bude konstruktor, ktery priradi hodnotu do vlastnosti VyrobniKod. Priste si ukazeme, jak lze udelat dedeny konstruktor.
// 4c. U vsech trid musis prepsat metodu Spustit. Jeji chovani bude muze byt libovolne. Klid at se jien vypise neco jako "Spoustim" + hodnota vlastnosti OperacniSystem.
// 4d. V tridach implementuj funkcionalitu definovanou rozhranimi. Nemusi tam byt zadny kod.
// 5. Vytvor tady par instanci tvych mobilnich zarizeni, strc je vsechny do stejne kolekce a pak pomoci cyklu foreach vsechna nastartuj (metoda Spust).
// 5a. Pote, co zarizeni nastartujes, zjisti pomoci "is", jestli zarize umi cist otisky prstu a pokud ano, pretypuj na IUmiCistOtiskyPrstu a nech precist otisk (nahodny text).
}