示例#1
0
        static void Main(string[] args)
        {
            Developer dev1 = new Developer();

            dev1.Greet();

            Developer dev2 = new Developer("Nikita", "Kubarko");

            dev2.Greet();

            Console.WriteLine("--------------");

            Software soft1 = new Software();

            soft1.Info();
            Console.WriteLine();

            Software soft2 = new Software("Software 1");

            soft2.Info();
            Console.WriteLine();

            //Console.WriteLine("---- Class Program ----");
            //Program program1 = new Program("Paint", "Alex");
            //program1.Info();
            //Console.WriteLine();

            //Program program2 = new Program();
            //program2.Info();
            //Console.WriteLine();

            Console.WriteLine("---- Class Text Processor ----");
            TextProcessor Note = new TextProcessor();

            Note.Info();
            Console.WriteLine();

            TextProcessor WordPad = new TextProcessor("WordPad", "Pete", "ProgressiveProgers");

            WordPad.Info();
            Console.WriteLine();

            Console.WriteLine("---- Class Word ----");
            Word Word = new Word();

            Word.Info();
            Console.WriteLine();

            Word Word2 = new Word("John");

            Word2.Info();
            Console.WriteLine();

            Console.WriteLine("---- Class Game ----");
            Game game1 = new Game();

            game1.Info();
            Console.WriteLine();

            Game game2 = new Game("Dota 2", "Valve", "MMORPG");

            game2.Info();
            Console.WriteLine();

            Console.WriteLine("---- Class Sapper ----");
            Sapper sapper1 = new Sapper();

            sapper1.Info();
            Console.WriteLine();

            Sapper sapper2 = new Sapper("Mike Sapperson");

            sapper2.Info();
            Console.WriteLine();

            Console.WriteLine("---- Class Virus ----");
            Virus virus1 = new Virus();

            virus1.Info();
            Console.WriteLine();

            Virus virus2 = new Virus("Chameleon", "...", "Data Base");

            virus2.Info();
            Console.WriteLine();

            Console.WriteLine("---- Interfaces Test ----");

            WordPad.Copy();
            Word2.Copy();

            Note.Save();
            Word.Save();

            virus2.Close();
            sapper1.Close();

            Console.WriteLine();
            Console.WriteLine("---- Same Method's Name in Interface and Abstract Class ----");

            Moving TransportableObj = new Transport();

            TransportableObj.Move();
            ((ITest)TransportableObj).Move();
            ITest TransportableObj2 = new Transport();

            TransportableObj2.Move();
            Console.WriteLine();

            Console.WriteLine("---- Overriding Object's Methods Test ----");

            Console.WriteLine(WordPad.ToString());
            Console.WriteLine();
            Console.WriteLine(Word.ToString());
            Console.WriteLine();
            Console.WriteLine(sapper2.ToString());
            Console.WriteLine();
            Console.WriteLine(virus2.ToString());
            Console.WriteLine();

            Console.Write("Объекты game2 и game3 равны? ");
            Program game3 = new Game("Counter Strike", "Valve", "Shooter");

            Console.WriteLine(game2.Equals(game3));//Developer's Name
            Console.WriteLine();

            Sapper TypeSapperObj = new Sapper("George");

            TypeSapperObj.GetStatistics();
            IFunctions ISapperObj = new Sapper("George");

            ISapperObj.GetStatistics();
            //Проверяем возможности преобазований классов и интерфейсов этих классов
            if (ISapperObj is Sapper)
            {
                Console.WriteLine("ISapperObj(объект интерфейсного типа) можно преобразовать в тип Sapper");
            }
            else
            {
                Console.WriteLine("ISapperObj(объект интерфейсного типа) нельзя преобразовать в тип Sapper");
            }
            if (TypeSapperObj is IFunctions)
            {
                Console.WriteLine("TypeSapperObj(объект типа Sapper) можно преобразовать в интерфейсный тип IFunctios");
            }
            else
            {
                Console.WriteLine("TypeSapperObj(объект типа Sapper) нельзя преобразовать в интерфейсный тип IFunctios");
            }
            Sapper TypeSapperObj2 = ISapperObj as Sapper;

            TypeSapperObj2.Info();//Работает метод класса, хотя для интерфейсного типа он не работал (преобразовали из interface в Sapper)
            IFunctions ISapperObj2 = TypeSapperObj as IFunctions;

            //ISapperObj2.Info(); --> error
            Console.WriteLine();


            Program Pr1, Pr2;

            Pr1 = new Word("Mike");
            TextProcessor textProcessorObjFromPr1 = Pr1 as TextProcessor;

            if (textProcessorObjFromPr1 != null)
            {
                textProcessorObjFromPr1.Info();
            }
            else
            {
                Console.WriteLine("Невозможно преобразовать Word к TextProcessor");
            }
            Pr2 = new Game("PUBG", "Valve", "Battle Royale");
            Sapper sapperFromGame = Pr2 as Sapper;

            if (sapperFromGame != null)
            {
                sapperFromGame.Info();
            }
            else
            {
                Console.WriteLine("Невозможно преобразовать Game к Sapper");
            }
            Console.WriteLine();

            Printer Printer = new Printer();

            Object[] objectsMas = new Object[] { WordPad, Word2, game3, sapper2, virus1, Printer };
            for (int i = 0; i < objectsMas.Length; i++)
            {
                Console.WriteLine(Printer.IAmPrinting(objectsMas[i]));
                Console.WriteLine();
            }
        }