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

Формула программиста
основатель — Волосатов Евгений Витольдович

Теория ООП / Интерфейс. Запускаем кружки на площадку!

  • На этом уроке мы настроим нашу форму,
    напишем несколько волшебных строчек,
    и ... программа заработает!!!
    У нас будет много-много кружков на экране 8-о
  • Дата отправки отчёта: 2 ноября 2015 г.
  • Задание выполнено: за 5 час. 00 мин.
  • Чему научился: усложнив задачу, я теперь твердо уяснил много моментов
  • Что было сложным: сочинять код, когда нет готового решения
  • Комментарии: Решил себе усложнить задачу:
    сделать так, чтобы кружки друг на друга не накладывались.
    Идея была сразу: нужно сохранять в список все созданные кружки и при создании новых проверять, чтобы край нового круга не попадал внутрь уже имеющихся. А вот в реализации обнаружил для себя немало неочевидных тонкостей в обычном программировании, которые не сразу удалось учесть.
    В итоге, в моей форме слева реализация по Витольдовичу, справа с моим усложнением.

    В процессе возникли такие вопросы:
    1. Пусть у нас есть некий класс с методом Show(). Мы наследуем новый класс, в котором тоже будет метод Show(), который усовершенствует метод Show() базового класса, т.е. в новом Show() будет такой же код, как в базовом Show() плюс еще. Возможно ли в C#,а также в других языках, сделать так, чтобы  при создании Show() в производном классе - вызвать код из базового Show()  наподобие, как это можно сделать при вызове конструкторов через base?

    2. Опять эта же ситуация: базовый класс с Show () и производный с Show (). Если не писать virtual и override, то код компилируется, но пишется предупреждение, мол действительно ли вы там собирались затереть базовый Show (), сделайте это как-то очевидно. Почему существует такая ситуация? т.е. почему не запрещено без слов virtual и override затирать базовый метод?
    А еще можно написать virtual в базовом, а в производном ничего не писать или даже написать virtual, и будет опять просто предупреждение о том, что метод затрется. Почему не запрещено это?

    Наблюдение.
    Возникла необходимость сделать метод, чтобы он был доступен везде, кроме производного класса (похожая ситуация еще могла бы быть: сделать метод в производном классе доступным везде, кроме базового класса). Сначала я задумался, какой поставить модификатор доступа, но потом опомнился, что для такой ситуации нужен полиморфизм. И отсюда я ощутил, что, пожалуй, часть понятия полиморфизм можно понимать, как более хитрый модификатор доступа.
  • Оценка видео-уроку:
Отчёт от 4889 за Теория ООП / Интерфейс. Запускаем кружки на площадку!




Оцени работу

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

2146. Иван
Иван
ответить
→  Валера Луцевич  # Теория ООП / Интерфейс. Запускаем кружки на площадку! / 2015-11-02 22:29

Здорово! И ведь получилось! Очень классно!


1. Евгений Витольдович
Евгений Витольдович
ответить
→  Валера Луцевич  # Теория ООП / Интерфейс. Запускаем кружки на площадку! / 2015-11-02 21:46

Валера, ты молодец, ты философ.
1. Конечно, можно вызывать базовый метод: base.Show ().
2. Это вопрос скорее к архитекторам си шарпа.


24. Оля
Оля
ответить
→  Валера Луцевич  # Теория ООП / Интерфейс. Запускаем кружки на площадку! / 2015-11-02 21:15

Валера, круто, мне нравится что ты сделал свое - с права!!! И меня на идеи натолкнул, хотя она у меня уже до этого появилась, тоже попробую все же реализовать! :)


  • Отчёт оценивали:
    24Оля+1   3850Григорий+1   5705Андрей +1   1Евгений Витольдович+1   5419Роман+1   5029Андрей Поляков+1   6885lomik+1   2146Иван+1   6458Илья+1   459Сергей Сергеевич+1   6987MichGar+1   4004Елена+1   7226Наталья+1   7871Мария+1   4395Денис+1   6925Артём+1   1803Саша+1   5565Frank+1   4485Vlad Yakovlev+1   429Максим Базуев+1  

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




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

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

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

Ты в любой момент сможешь отписаться от рассылки.
Научился: Создавать будущих "игроков"
Трудности: Все просто
Спасибо!
Научился: Углубился в интерфейсы, и узнал немного про графику в WinForms
Трудности: Ничего
Гуд