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

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

основатель — Волосатов Евгений Витольдович

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

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




Оцени работу

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

19022. KF
Олег Чудновский
Олег Чудновский
ответить
→  Олюшка  # Теория ООП / Фигуральный базовый класс / 2018-08-04 14:14

Привет Олюшка, молодец, что не смотря на трудности в обучении идешь дальше.
Я тоже с нетерпением хочу посмотреть, как это нужно сделать.
Как вариант, нарисовал массив фигур Снеговика следующим образом:
private void Draw(Shape shape)
        {
            if (shape.GetType() == typeof(Circle))
            {
                Draw((Circle)shape);
            }
            else if (shape.GetType() == typeof(ColorCircle))
            {
                Draw((ColorCircle)shape);
            }
            else if (shape.GetType() == typeof(Line))
            {
                Draw((Line)shape);
            }
            else if (shape.GetType() == typeof(ColorLine))
            {
                Draw((ColorLine)shape);
            }
            else if (shape.GetType() == typeof(Box))
            {
                Draw((Box)shape);
            }
            else if (shape.GetType() == typeof(ColorBox))
            {
                Draw((ColorBox)shape);
            }
        }

Те берем объект из массива, определяем к какому типу он пренадлежит, приводим объект к типу которому он пренадлежит, и вызываем метод для полученного типа
Удачи в обучении !!!!



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





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

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

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

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


Научился: Знакомство с классом фигур Shape.
Трудности: Не сложно, но все ново.
Все отлично. Как реализовать функцию Draw - понятия не имею.


Научился: Создал все, что необходимо было в видео уроке.
Трудности: Попробовал реализовать вывод Draw. Для этого, перегрузив этот метод, решил из него передать в одноименный метод Draw фигуру shape, в связи с чем в каждом отдельном методе Draw для рисования каждой из фигур необходимо было принять именно экземпляр этого класса, поменял на Shape, а Shape у нас пустой и поля этого метода не вызываются из формы (...Решил в класс Shape перенести все необходимое из других классов и передать из конструкторов других классов через base все необходимое. Теперь в методе Draw стало возможным обращаться к полям Shape, но все равно нарисовать объект так и не удалось, так как компилятор начал ругаться теперь и на bitmap. В общем, мне кажется, я углубился не в ту степь, не туда полез, надо смотреть как надо делать в следующих уроках...