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

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

основатель — Волосатов Евгений Витольдович
Только до конца месяца: Вступление в Клуб Формулистов с 50% + 20% скидкой.
Робот Шарп работает!

Вебинар «Создание игры Lines на C# и Unity для Android» начнётся через 14 час. :5 мин.

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

  • Очень хочется все элементы снеговика поместить в один массив.
    Сейчас это сделать нельзя - придётся делать три массива - для кругов, для линий, для боксиков...
    Решение гениальное - создаём базовый класс фигуры - Shape, создаём массив фигур, и все фигуры помещаем в этот массив!
    После размещения фигур в массив можно видеть, что каждая фигура в нём хранится не как фигура, а под своим типом.
    А все под одной крышей они могут находится потому что все они - фигуры, так как унаследованы от Shape.
  • Дата отправки отчёта: 21 декабря 2018 г.
  • Задание выполнено: за 1 час. 56 мин.
  • Чему научился: Создал все, что необходимо было в видео уроке.
  • Что было сложным: Попробовал реализовать вывод Draw. Для этого, перегрузив этот метод, решил из него передать в одноименный метод Draw фигуру shape, в связи с чем в каждом отдельном методе Draw для рисования каждой из фигур необходимо было принять именно экземпляр этого класса, поменял на Shape, а Shape у нас пустой и поля этого метода не вызываются из формы (...Решил в класс Shape перенести все необходимое из других классов и передать из конструкторов других классов через base все необходимое. Теперь в методе Draw стало возможным обращаться к полям Shape, но все равно нарисовать объект так и не удалось, так как компилятор начал ругаться теперь и на bitmap. В общем, мне кажется, я углубился не в ту степь, не туда полез, надо смотреть как надо делать в следующих уроках...
  • Оценка видео-уроку:
Отчёт от 16568 за Теория ООП / Фигуральный базовый класс


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




Оцени работу

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

10558. --
Иван Воронин
Иван Воронин
ответить
→  Игорь Тюлькин  # Теория ООП / Фигуральный базовый класс / 2018-12-21 14:12

Молодец, хорошая попытка, видимо для твоего опыта она ещё слишком глобальная, дальше в уроках увидишь как это делается.


16568. KF
Игорь Тюлькин
Игорь Тюлькин
ответить
→  Иван Воронин  # Теория ООП / Фигуральный базовый класс / 2018-12-21 15:07

Привет. Да, Иван. У меня вообще опыта очень мало. Каждый видео урок как сундук с сокровищем =)). Смотрю, обдумываю, представляю как можно использовать там или тут подобные конструкции. Стараюсь экспериментировать, иногда получается, иногда нет. Этот ресурс мне тем и нравится, что хоть действительно учусь и получаю опыт. В вузе заочников ничему не учат к сожалению, а научиться охота очень...


1. KF
Евгений Волосатов
Евгений Волосатов
ответить

  • Отчёт оценивали:
    6203Николай Миролюбов+1   19525Александр Балбашов+1   17947Dmitry Sinitsin+1   18626superGrover+1   10558Иван Воронин+1   791Валерий Жданов+1   20071New programist+1   Посетитель+1   1Евгений Волосатов+1   17606Виктор+1   14981DimanDOS+1   19384Владимир+1   3922Александр+1   10895Danil42Russia+1  

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





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

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

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

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


Научился: Жить без полиморфизма
Трудности: жить без полиморфизма
Ну раз нельзя использовать полиморфизм, следовательно нужно сначала установить класс объекта: shape.GetType().ToString() , а затем в case вызывать соответствующую функцию.


Научился: Узнал способ объединения классов. Поместил все части рисунка в один массив.
Трудности: Сложность возникла в реализации функции Draw(Shape shape). Самый логичный способ использовать полиморфизм. Можно перенести функции Draw(Line line), Draw(Box box), Draw(Circle circle) и др. в их классы. При помощи оператора foreach ( var class in snowman ) class.Draw(); Но я столкнулся с проблемой, что объект Graphics graph инициализируется в методе Main().
Интересно посмотреть как же решить эту задачу.