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

Формула программиста

основатель — Волосатов Евгений Витольдович
Поздравляю с 1 сентября! Система начисления Байтов работает.

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

  • Очень хочется все элементы снеговика поместить в один массив.
    Сейчас это сделать нельзя - придётся делать три массива - для кругов, для линий, для боксиков...
    Решение гениальное - создаём базовый класс фигуры - Shape, создаём массив фигур, и все фигуры помещаем в этот массив!
    После размещения фигур в массив можно видеть, что каждая фигура в нём хранится не как фигура, а под своим типом.
    А все под одной крышей они могут находится потому что все они - фигуры, так как унаследованы от Shape.
  • Дата отправки отчёта: 16 апреля 2018 г.
  • Задание выполнено: за 1 час. 5 мин.
  • Чему научился: Объединили в массив все фигуры.
    Урок интересен тем что можно  и даже нужно самостоятельно поработать с выводом последней функции Draw...
    Ход мыслей у меня был такой:
    1) В параметр shape передается текущее значение массива. Общий тип остается Snape , а вот в скобках я увидел Circle
    2) Начал копать как можно получить тип из текущего значения. Нашел функцию GetType()
    3) Взял из нее имя и зная что у меня есть круг, прямоугольник , линия и т д сделал switch
    4) Из прошлого вспомнил, что есть приведение типов. Освежил в памяти как это делается
    Получилось в итоге вот так (в общем заработало):
    private void Draw(Shape shape)
            {
                Type type = shape.GetType();
                switch (type.Name)
                {
                    case "Circle": Draw((Circle)shape); break;
                    case "Box": Draw((Box)shape); break;
                    case "Line": Draw((Line)shape); break;
                    case "ColorCircle": Draw((ColorCircle)shape); break;
                    case "ColorBox": Draw((ColorBox)shape); break;
                    case "ColorLine": Draw((ColorLine)shape); break;
                    default: break;
                }
            }
    Интересно будет дальше посмотреть какое будет решение данной функции в следующем уроке.
  • Оценка видео-уроку:
Отчёт от 16218 за Теория ООП / Фигуральный базовый класс




Оцени работу

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

10558. --
Иван Воронин
Иван Воронин
ответить
→  Дмитрий  # Теория ООП / Фигуральный базовый класс / 2018-04-17 10:58

Так же реализовал через свитч. Вариантов несколько, зависит от версии используемого фреймворка.


  • Отчёт оценивали:
    17575drWatson+1   9980Timoha+1   17443WildOrc+1   17606Виктор+1   6452Кирилл Шмойлов+1   16496Pavlin+1   10558Иван Воронин+1   9156Dimon+1   3922Александр+1   16016Aleksej Fiodorov+1   5394Anton+1   6401Яков0   6203Николай Миролюбов+1   791Валерий Жданов+1   8275Tekashnik+1   17240Андрей Гришагин+1   459Сергей Сергеевич+1   4395Денис+1   16066Bodrik_torf+1   1Евгений Волосатов+1   10494Алексей В.+1   3747Сергей+1   17947Dmitry Sinitsin+1   13417Chip+1  

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





Если вы пришли без приглашения -
введите тысяча двадцать четыре (цифрами).
Чтобы стать хорошим программистом — нужно писать программы. На нашем сайте очень много практических упражнений.

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

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

Ты в любой момент сможешь отписаться от рассылки.


Научился: Повторил базовый класс.
почему в разных книгах базовый класс называют по разному? или супер класс или родительский класс


Научился: Создал класс Shape. Выполнил наследование классов Line, Circle и Box от Shape. Создал два массива c типом элементов Shape.