Иллюстрированный самоучитель по Visual Basic .NET

Терминология ООП. Отношения между классами в программах.

Отправной точкой во всей терминологии ООП является понятие класса. Классом называется шаблон, по которому создаются объекты.

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

Члены класса Employee должны соответствовать специфике решаемых задач (например, в свойстве Name будет храниться имя работника, а метод Raise-Salary будет использоваться для повышения зарплаты).

Отношения между классами в программах

В традиционном ООП предусмотрены три типа отношений между классами:

  • Использование: непосредственная зависимость.
  • Включение: иногда называется агрегированием. Реализует логические связи типа "является составной частью".
  • Наследование: реализует логические связи типа "является частным случаем".

Примечание
В таких языках, как VB.NET, C# и Java, кроме классических типов существует четвертый тип отношений между классами – реализация интерфейса (отношение типа "поддерживает"). Суть реализации интерфейса заключается в том, что для поддержки некоторых функциональных возможностей ваш класс принимает на себя обязательства, по которым он должен содержать определенные члены. Интерфейсы существуют в VB начиная с версии 5 и часто используются в VB.NET. В главе 5 эта тема рассматривается гораздо подробнее
.

Вернемся к классической тройке. Отношение использования, самое очевидное и распространенное, всего лишь означает, что один класс зависит от другого. Во всех ситуациях, когда один объект посылает сообщение другому объекту, можно говорить о зависимости между этими объектами. В обобщенном случае класс А использует класс Б, если:

  • член класса А отправляет сообщение объекту класса Б

…или:

  • член класса А создает или возвращает объекты класса Б

Примечание
Постарайтесь свести к минимуму количество взаимодействующих классов. Иначе говоря, избегайте лишних связей между классами, без которых можно обойтись. Если класс А не использует класс Б, то изменения в классе Б никак не отразятся на работе класса А (а следовательно, модификация класса Б не станет причиной ошибок в классе А!)
.

Термин "включение" (агрегирование) означает, что объект класса А содержит внутренние объекты класса Б.

На базе включения реализуется методика делегирования, когда поставленная перед внешним объектом задача перепоручается внутреннему объекту, специализирующемуся на решении задач такого рода. Агрегирование с делегированием методов было очень распространенным явлением в прежних версиях VB, поскольку этот принцип использовался при создании новых элементов (вспомните, как создавались новые, специализированные текстовые поля – вы размещали текстовое поле внутри формы пользовательского элемента, а затем запускали программу-мастер, которая автоматически генерировала код делегирования).

Агрегирование по-прежнему широко используется в VB.NET, но во многих ситуациях ему на смену приходит наследование – третий тип отношений между классами. Наследование считается одним из четырех "краеугольных камней" ООП наряду с абстракцией, инкапсуляцией и полиморфизмом. Все четыре концепции будут рассмотрены в ближайших четырех разделах.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.