Курсы по программированию

Формула программиста
основатель — Волосатов Евгений Витольдович
Новый видеокурс по Git

Теория ООП / Фигуральный базовый класс

  • Очень хочется все элементы снеговика поместить в один массив.
    Сейчас это сделать нельзя - придётся делать три массива - для кругов, для линий, для боксиков...
    Решение гениальное - создаём базовый класс фигуры - Shape, создаём массив фигур, и все фигуры помещаем в этот массив!
    После размещения фигур в массив можно видеть, что каждая фигура в нём хранится не как фигура, а под своим типом.
    А все под одной крышей они могут находится потому что все они - фигуры, так как унаследованы от Shape.
  • Дата отправки отчёта: 30 мая 2015 г.
  • Задание выполнено: за 2 час. 10 мин.
  • Чему научился: Разобралась с методами получения информации о типе переменной - GetType(), typeof(), is / as.
  • Что было сложным: Реализовать функцию Draw (Shape shape), не опираясь на принцип полиформизма. Придумалось, как ни странно, довольно быстро, а вот с реализацией пришлось по возиться - не создавались экземпляры объектов для отрисовки. Выход найден, результат на скриншоте.
  • Комментарии: private void Draw(Shape shape)
            {
                for (int j = 0; j < snowman1.Length; j++)
                {
                    if (snowman1[j].GetType() == typeof(Line))
                    {
                        line = (Line)snowman1[j];
                        Draw(line);
                    }
                    else if (snowman1[j].GetType() == typeof(Circle))
                    {
                        circle = (Circle)snowman1[j];
                        Draw(circle);
                    }
                    else
                    {
                        box = (Box)snowman1[j];
                        Draw(box);
                    }
                }           
            }
  • Оценка видео-уроку:
Отчёт от 1424 за Теория ООП / Фигуральный базовый класс




Оцени работу

 
Сохранить страницу:

  • Отчёт оценивали:
    7319Alpinist573+1  

Начинаем практику по языку C#




Чтобы стать хорошим программистом — нужно писать программы. На нашем сайте очень много практических упражнений.

После заполнения формы ты будешь подписан на рассылку «C# Вебинары и Видеоуроки», у тебя появится доступ к видеоурокам и консольным задачам.

Несколько раз в неделю тебе будут приходить письма — приглашения на вебинары, информация об акциях и скидках, полезная информация по C#.

Ты в любой момент сможешь отписаться от рассылки.
Научился: Научился дальнейшему рефакторингу кода программы, создавать новые классы. Как реализовать функцию Draw (Shape shape) отвечаю — не знаю, т.к. не имею подобного опыта.
Трудности: Ответ на вопрос как реализовать функцию Draw.
Замечаний нет.
Научился: Создавать базовый класс фигур
Трудности: Перегрузка метода Draw(Shape shape). Я не знаю как это реализовать. Подозреваю, что из этого метода нужно вызвать draw, передав ему конкретный тип (Line, ColorBox etc), но как это сделать не понимаю. Не понимаю как из shape получить реальный тип объекта.
Красивая идея использовать общий класс shape для всех фигур. Но реализовать ее я пока не в состоянии