4.1. ПРИРОДА КЛАССОВ
69
Для реализации поведения объекта используются функции-члены
класса. При этом,функции-члены экземпляра работают в контексте со-
стояния конкретного объекта и имеют доступ как к членам экземпляра,
так и к статическим членам класса. Статические функции-члены реа-
лизуют поведение собственно класса и имеют доступ только к стати-
ческим членам класса.
Открытые (public) методы класса составляют внешний контракт
(интерфейс) класса по отношению к его клиентам, и, наряду с именем
класса формируют смысл абстракции.
Внутренние классы и интерфейсы используются для ограничения
области видимости определяемых ими абстракций рамками одного клас-
са. Как правило, эти абстракции не используются или не могут быть
использованы извне класса, в котором они объявлены.
Особенности программирования классов на конкретных языках мы
рассмотрим когда будем изучать в деталях языки С++ и Java.
4.1.2 Абстрактные классы,интерфейсы и классы-утилиты.
Абстрактные классы — это классы, которые не могут иметь экзем-
пляров. Практически это означает, что в них присутствуют функции-
члены, которые объявлены, но не определены. Эти функции определя-
ются в наследниках, которые уточняют данную абстракцию.
Интерфейс — это абстрактный класс, который содержит только
объявления методов и статические константные поля. Таким образом,
интерфейс определяет чистую абстракцию поведения. Для интерфей-
са практический смысл имеет только открытый уровень доступа к его
членам. Язык C++ не имеет специальной языковой конструкции для
декларации интерфейса, но для получения эквивалентной абстракции
можно объявить класс, содержащего только чистые виртуальные функ-
ции и статические константы.
Класс-утилита — это класс, в котором присутствуют только ста-
тические члены. Такие классы используются для группировки наибо-
лее часто используемых общих алгоритмов,работающих с другими аб-