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

Формула программиста
основатель — Волосатов Евгений Витольдович
1-2-3 мая - Создай online игру!
Вебинар «Карточки памяти на Android» начнётся через 1 час. 06 мин.

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

  • Очень хочется все элементы снеговика поместить в один массив.
    Сейчас это сделать нельзя - придётся делать три массива - для кругов, для линий, для боксиков...
    Решение гениальное - создаём базовый класс фигуры - Shape, создаём массив фигур, и все фигуры помещаем в этот массив!
    После размещения фигур в массив можно видеть, что каждая фигура в нём хранится не как фигура, а под своим типом.
    А все под одной крышей они могут находится потому что все они - фигуры, так как унаследованы от Shape.
  • Дата отправки отчёта: 10 апреля 2016 г.
  • Задание выполнено: за 15 мин.
  • Чему научился: Как привести различные классы к одному типу
  • Что было сложным: Что такое полиморфизм я не знаю. Но если у нас цель только снеговик, а не универсальный метод рисования, то можно сделать в методе draw рисование по порядку всех нужных фигур.
  • Комментарии:    
  • Оценка видео-уроку:
Отчёт от 1967 за Теория ООП / Фигуральный базовый класс




Оцени работу

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


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




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

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

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

Ты в любой момент сможешь отписаться от рассылки.
Трудности: Придумать ответ на вопрос
По сути функция Draw (Shape shape) и не нужна. Необходимо выполнять проверку типа if (SnowMan1[i] is ФИГУРА) и тогда рисовать часть снеговика с приведением к нужной фигуре. Draw((ФИГУРА)(SnowMan[i]);
Научился: вот такой метод реализовал: private void Draw(Shape shape) { Type t = shape.GetType(); if (t.Equals(typeof(Box))) Draw((Box)shape); else if (t.Equals(typeof(ColorBox))) Draw((ColorBox)shape); else if (t.Equals(typeof(Line))) Draw((Line)shape); else if (t.Equals(typeof(ColorLine))) Draw((ColorLine)shape); else if (t.Equals(typeof(Circle))) Draw((Circle)shape); else Draw((ColorCircle)shape); }
Трудности: зная про полиморфизм набирать весь этот код )