На этом уроке мы настроим нашу форму, напишем несколько волшебных строчек, и ... программа заработает!!! У нас будет много-много кружков на экране 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, и будет опять просто предупреждение о том, что метод затрется. Почему не запрещено это?
Наблюдение. Возникла необходимость сделать метод, чтобы он был доступен везде, кроме производного класса (похожая ситуация еще могла бы быть: сделать метод в производном классе доступным везде, кроме базового класса). Сначала я задумался, какой поставить модификатор доступа, но потом опомнился, что для такой ситуации нужен полиморфизм. И отсюда я ощутил, что, пожалуй, часть понятия полиморфизм можно понимать, как более хитрый модификатор доступа.
Валера, круто, мне нравится что ты сделал свое - с права!!! И меня на идеи натолкнул, хотя она у меня уже до этого появилась, тоже попробую все же реализовать! :)
Научился: Отображать кружки на экране. Интересный рандом... некоторые зоны по несколько кружков друг в друге, а некоторые (в центре парочка) совсем пустые...
Научился: Повторил рисование, нарисовал кружки и инициализировал поле для игры.Пока дело до интерфейса не дошло, но чувствую скоро , скоро) Трудности: Обидно за то,что был близок к результату, когда делал сам(Но зато теперь буду точно знать как это делается, и что нужно было через кнопку это реализовывать, а я пытался рисовать сразу после инициализации формы.