ПОНЯТНО О Visual Basic NET (том 3)


Создаем шары Завершаем проект - часть 7


Поговорим о конструкторе. Чтобы объект Шар передвигал по форме именно свое изображение, а не чужое, он должен знать свой номер в массиве шаров. Идея сообщения ему этого номера та же, что и у номера садового участка в 22.6. Организуется статическая переменная Число_созданных_шаров, увеличивающая свое значение на 1 с каждым созданным шаром, и переменной Номер_шара присваивается ее значение.

Кроме этого конструктор занимается тем, что создает для объекта Шар элемент управления PictureBox с изображением шара. Механика такого создания разобрана в 15.8. Здесь она аналогична. Отличие в том, что здесь мне не пришлось организовывать цикл, так как каждый объект Шар создает себе только одно изображение. Строка

        Форма.pictШар(Номер_шара).SizeMode = PictureBoxSizeMode.StretchImage

понадобилась для того, чтобы картинка шара на элементе управления PictureBox подстраивала свой размер под указанный размер элемента управления PictureBox.

Об инкапсуляции. Обратите внимание, что шар у нас получился на загляденье – весь «бронированный». Вся механика – в себе. Своим изображением на форме он не только управляет, но даже его порождает. Все переменные – Private. Методов всего два – Начальная_установка и Действие. В общем, безопасность соблюдена.

С формой дела обстоят тоже неплохо. Снаружи видны только одна переменная и массив изображений шара. Но здесь уже некуда было деваться. Методов – вообще ни одного. Правда, элементы управления формы по умолчанию видны снаружи, но их тоже можно сделать недоступными.

Испытания. Задайте побольше шаров, скажем, 100 или 1000. Запустите проект. Почему так медленно движутся шары и редко сменяются цифры в счетчике времени? Причина – в «холостых» импульсах таймера (см. 13.2).

Теперь, когда вы разобрались в проекте, снова поиграйте значениями шагов ловца и шара, их размерами, числом шаров, интервалом таймера и другими величинами, каждый раз пытаясь объяснить изменения в поведении проекта.




Начало  Назад  Вперед



Книжный магазин