Неопределенная геометрическая фигура
В C# запрещено создавать экземпляры абстрактных классов
示例#1
0
 static void PrintFigures(Figure[] figures, string message)
 {
     Console.WriteLine(" " + message);
     Console.WriteLine("=============================================");
     foreach (Figure figure in figures)
     {
         Console.WriteLine("{0}. Площадь={1:F2}", figure.WhoAmI(), figure.ComputeArea());
     }
     Console.WriteLine();
 }
示例#2
0
 static void Main()
 {
     Figure[] figures = new Figure[]
         {
             new Rectangle(3,4),
             new Square(3),
             new Ellipse(2.5, 1.9),
             new Circle(3.1),
             new Triangle(3.7)
         };
     PrintFigures(figures, "До сортировки");
     Array.Sort(figures);
     PrintFigures(figures, "После сортировки (по возрастанию площади)");
 }
示例#3
0
 static void Main()
 {
     Figure[] figures = new Figure[]
         {
             new Figure(),
             new Rectangle(3,4),
             new Square(3),
             new Ellipse(2.5, 1.9),
             new Ellipse(3.1, 3.1),
             new Circle(3.1),
         };
     foreach (Figure figure in figures)
     {
         PrintFigure(figure);
     }
 }
示例#4
0
        private static void PrintFigure(Figure figure)
        {
            string whoAmI = figure.WhoAmI();
            string typeName = figure.GetType().Name;
            double area = figure.ComputeArea();

            if (whoAmI != typeName) Console.ForegroundColor = ConsoleColor.Red;

            Console.WriteLine(
                "WhoAmI = {0,-9} ; Имя класса {1,-9} ; Площадь={2:F2}",
                whoAmI,
                typeName,
                area
            );

            Console.ResetColor();
        }
示例#5
0
 static void Main()
 {
     Figure[] figures = new Figure[]
         {
             // Правила языка запрещают создавать экземпляры абстрактных типов
             //new Figure(),
             new Rectangle(3,4),
             new Square(3),
             new Ellipse(2.5, 1.9),
             new Ellipse(3.1, 3.1),
             new Circle(3.1),
         };
     foreach (Figure figure in figures)
     {
         PrintFigure(figure);
     }
 }
示例#6
0
        public static void Main()
        {
            Figure[] figures = new Figure[]
                {
                    new Figure(),
                    new Rectangle(3,4),
                    new Square(3),
                    new Ellipse(2.5, 1.9),
                    new Ellipse(3.1, 3.1),
                    new Circle(3.1),
                    new Triangle(2),
                };
            foreach (Figure figure in figures)
            {
                PrintFigure(figure.WhoAmI(), figure.GetType().Name, figure.ComputeArea());

                #region Неправильная попытка исправить код с помощью проверки типа

                //// Это анти-пример
                //// НИКОГДА НЕ ПИШИТЕ ТАКОЙ КОД!

                //if (figure is Ellipse)
                //{
                //    Ellipse ellipse = (Ellipse)figure;
                //    PrintFigure(ellipse.WhoAmI(), ellipse.GetType().Name, ellipse.ComputeArea());
                //}
                //else if (figure is Circle)
                //{
                //    Circle circle = (Circle)figure;
                //    PrintFigure(circle.WhoAmI(), circle.GetType().Name, circle.ComputeArea());
                //}
                //else if (figure is Square)
                //{
                //    Square square = (Square)figure;
                //    PrintFigure(square.WhoAmI(), square.GetType().Name, square.ComputeArea());
                //}
                //else if (figure is Rectangle)
                //{
                //    Rectangle rectangle = (Rectangle)figure;
                //    PrintFigure(rectangle.WhoAmI(), rectangle.GetType().Name, rectangle.ComputeArea());
                //}

                #endregion
            }
        }
示例#7
0
 static void Main()
 {
     Figure[] figures = new Figure[]
         {
             new Rectangle(3,4),
             new Square(3),
             new Ellipse(2.5, 1.9),
             new Circle(3.1),
             // В классе Triangle метод ToString() отсутствует. Обрати внимание на разницу в выводе
             new Triangle(3.7)
         };
     foreach (Figure figure in figures)
     {
         // WriteLine автоматически вызывает виртуальный метод ToString()
         // Если наш класс и его базовые классы не реализуют его, то будет вызвана реализация System.Object.ToString()
         Console.WriteLine(figure);
     }
 }