Основы офисного программирования и язык VBA


Проект "Люди и Машины"


Проектирование семейства классов, как правило, начинают с проектирования схемы, задающей иерархию и связи в семействе, определения прародителей, определяющих базовые свойства и поведение. Приведем в качестве примера семейство классов, объектами которого будут Люди и машины. Вот одна из возможных схем, определяющая классы этого семейства и отношения между ними.

Схема семейства классов "Люди и Машины"

Рис. 5.3.  Схема семейства классов "Люди и Машины"

Мы не станем давать полную реализацию этой схемы. Для наших целей достаточно ограничиться ее частичной реализацией, где будут два родителя, имеющие общего потомка. У нас уже построен класс Личность, - пусть он и будет одним из родительских классов. Другим базовым родительским классом пусть будет класс Машина, задающий машины. Потомком этих двух родительских классов будет класс ВладелецМашины. Он наследует интерфейсы класса Личность и класса Машина. Поэтому объекты этого класса смогут входить и обрабатываться в разных группах, - в группе личностей и в группе машин. В нашем примере родительские классы не будут абстрактными. Напомним, что определенный в предыдущей лекции класс Личность является классом с событиями, так что его объекты могут реагировать на некоторые события, происходящие с ними. Мы не будем повторять здесь его описание. Класс Машина будет достаточно простым. Вот его определение:

Пример 5.4.

(html, txt)

У класса Машина имеется:

  • три закрытых свойства, обладающие статусом Read only,
  • два конструктора, - закрытый конструктор по умолчанию и открытый конструктор НоваяМашина,
  • один типичный для классов открытый метод, задающий печать свойств - PrintDataCar

Интерфейс класса составляют два открытых метода, они и будут наследоваться классом - потомком. Класс - потомок ВладелецМашины значительно больше унаследует от своего другого родителя - класса Личность. Вот определение класса ВладелецМашины:

Пример 5.5.

(html, txt)

Прокомментируем этот довольно длинный текст. Вот на какие моменты следует обратить внимание:

  1. Для того, чтобы реализовать полноценное наследование свойств и поведения родителей, а не только наследование интерфейсов, используется встраивание, - в классе определены свойства Сам класса Личность и свойство ЕгоМашина класса Машина.
  2. В конструкторе по умолчанию Class_Initialize, вызываемом при создании объекта класса ВладелецМашины, объекты Сам и ЕгоМашина инициализируются, - будут вызваны их конструкторы по умолчанию класса Личность и класса Машина.
  3. При наследовании интерфейсов класса Личность почти для всех методов наследовалось поведение родительского класса.


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



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