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


Движем ловца – вторая ступень проекта - часть 7


Ждем следующего импульса и так далее. Вот и вся механика ловца.

 Теперь поговорим об инкапсуляции. В проекте я старался максимально придерживаться принципа инкапсуляции, все что можно я делал Private. Посмотрим по порядку.

Объекты Форма, Ловец и константу Размер_ловца я объявил в стандартном модуле. Потому что все они будут нужны не в одном, а в нескольких модулях. Естественно, я сделал их Public.

В форме все процедуры объявлены Private. Потому что в нашем проекте форма – это тот пульт, из которого осуществляется управление проектом. Ее процедуры предназначены, чтобы управлять, а не управляться. Чего не скажешь об элементах управления, которые видны снаружи формы и управляются из классов.

Теперь поглядите повнимательнее в код ловца. Координаты ловца на форме x и y я сделал Private, но поскольку знаю, что они понадобятся шару (который должен знать их величину, чтобы вовремя исчезнуть при столкновении), я создал два соответствующих свойства только для чтения: Xл и Yл.

Наводит на размышление тот факт, что методами класса стали именно те процедуры, которые должны вызываться из формы в ответ на какие-то события формы. Их просто нельзя было сделать Private. Это Начальная_установка (реагирует на загрузку формы и на кнопку Начинай сначала),  Действие (реагирует на таймер) и Реакция_на_клавиатуру (реагирует на клавиатуру). О конструкторе я не говорю. Если его сделать Private, то нельзя будет создать объект.

Поведение ловца определяется процедурами и функцией, определенными в коде ловца. Именно они обеспечивают механику его работы. Никакая процедура и функция снаружи класса в этой механике не участвует. Ловец самодостаточен. Снаружи осуществляется только запуск трех методов объекта. Именно поэтому они сделаны Public, иначе их снаружи и запустить было бы нельзя. Но вся механика этих методов, опять же, находится внутри ловца, так что никакого нарушения суверенитета нет. Остальные процедуры и функция сделаны Private, они снаружи и не видны и недоступны.

Обратите внимание, что разные модули могут использовать одноименные компоненты. Например, процедура Начальная_установка. Проблемы в этом нет, так как если процедура задана, как Private, то из других модулей она просто не видна, а если даже Public, то перед своим именем она будет требовать имени хозяина.

Вот и все о второй ступени проекта.




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