Exemple #1
0
        static void ProblemOfRepresentative()
        {
            Rect rect = new Rect {
                Height = 2, Width = 5
            };
            int rectArea = AreaCalc.CalcSquare(rect);

            Console.WriteLine($"Rect area = {rectArea}");

            //проблема "is a", квадрат является частным случаем
            //прямоугольника и по логике может наследоваться от
            //него. Но при объявлении инстанции класса квадрат,
            //мы можем задать ему неправильные стороны. Это ошибка
            //при проектировании. Problem of representative
            Rect square = new Square {
                Width = 2, Height = 10
            };
        }
Exemple #2
0
        static void IsAEvil()
        {
            //квадрат частный случай прямоугольник
            //следовательно квадрат можно унаследовать от прямоугольника
            Rect rect = new Rect {
                Height = 2, Width = 5
            };
            int rectarea = AreaCalc.CalculateSquare(rect);

            Console.WriteLine($"React area = {rectarea}");

            //наследование
            //значит можно объявить базовым классом
            //А проинициализировать наследником

            //можем сделать разные стороны у квадрата :((
            Rect square = new Squre {
                Height = 2, Width = 10
            };

            AreaCalc.CalculateSquare(square);
            //нерепрезантивное наследование
            //реальность не соответсвует ООП
            //лучше использовать интрефейс

            IShape rect2 = new Rect2()
            {
                Height = 2, Width = 6
            };
            IShape square2 = new Squre2()
            {
                SideLength = 5
            };

            rect2.CalcSquare();
            square2.CalcSquare();
        }