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

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

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

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

  • Очень хочется все элементы снеговика поместить в один массив.
    Сейчас это сделать нельзя - придётся делать три массива - для кругов, для линий, для боксиков...
    Решение гениальное - создаём базовый класс фигуры - Shape, создаём массив фигур, и все фигуры помещаем в этот массив!
    После размещения фигур в массив можно видеть, что каждая фигура в нём хранится не как фигура, а под своим типом.
    А все под одной крышей они могут находится потому что все они - фигуры, так как унаследованы от Shape.
  • Дата отправки отчёта: 6 августа 2018 г.
  • Задание выполнено: за 3 час. 53 мин.
  • Чему научился: Сделал всё по списку. Метод Draw(Shape shape) попробовал реализовать тремя разными способами и все удачно заработали. Первый реализовал через проверки as и is.
    Пример:
    if (shape is Circle)
            Draw(shape as Circle);
              ...
    Второй сделал через функцию obj.Equals().
    Пример:
    if (shape.GetType().Equals(typeof(Circle)))
                Draw((Circle)shape);
                ...
    А третий попробовал, как мне кажется, не очень хорошим способом через switch() case, приводя тип объекта к строковому виду и сравнивая со строкой пути к классу.
    Пример:
    switch(shape.GetType().ToString())
                {
                    case "Geometry.Circle":
                            Draw((Circle)shape);
                            break;
                    ...
    Ну, вроде тоже заработал. И мне кажется есть еще много способов.
  • Что было сложным: Не сложно было.
  • Оценка видео-уроку:
Отчёт от 4732 за Теория ООП / Фигуральный базовый класс


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




Оцени работу

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

7119. --
Новопашин Владимир
Новопашин Владимир
ответить
→  Sergey  # Теория ООП / Фигуральный базовый класс / 2018-08-16 15:04

Прочитал отчет и у меня четко сложилось мнение, что пора в курс внедрить такой паттерн проектирования, как фабрика. Еще на ум другой пришел паттерн проектирования как стратегия. Сделать интерфейс IDrawable  с методом draw и все объекты имеет этот интерфейс. Что-то мне подсказывает, что этих if с типами фигур быть не должно. Хотя могу ошибаться - давненько я этих снеговиков рисовал.


  • Отчёт оценивали:
    6452Кирилл Шмойлов+1   17606Виктор+1   19525Александр Балбашов0   3922Александр+1   17947Dmitry Sinitsin+1   9014Николай Денисов+1   16218Дмитрий+1   10895Danil42Russia+1   1Евгений Волосатов+1   10494Алексей В.+1   3747Сергей+1   791Валерий Жданов+1   18131Александр+1   8822Alex+1   11019Trira+1   8877gorynych+1   459Сергей Сергеевич+1   7645Александр Львович+1   17255Слава+1   7119Новопашин Владимир+1  

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





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

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

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

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


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


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