2.4.8.Интерфейсы и абстрактные классы
Интерфейс –
множество операций, составляющее
спецификацию услуг, которые предоставляет
класс.
Одно из замечательных
свойств ОО - разработки заключается в
том, что можно изменять интерфейсы
классов независимо от их реализации.
Интерфейс в чистом виде представляет
собой класс без каких-либо деталей
реализации и поэтому содержит определения
только операций, но не тела методов и
поля. Интерфейсы часто определяют с
помощью абстрактных классов. Абстрактный
класс – это
класс, для которого нельзя непосредственно
создать экземпляры объектов. Примером
такой ситуации является текстовый
редактор, изображенный на рисунке 2.8.
Рисунок 2.8. Окно
как абстрактный класс
Чтобы сделать
редактор платформо-независимым, мы
определяем платформо-независимый
абстрактный класс Окно. Этот класс не
содержит операций, он определяет только
интерфейс для текстового редактора.
Платформо-зависимые классы могут быть
использованы по вашему усмотрению. Имя
абстрактного класса в языке UML должно
выделяться курсивом или можно использовать
дескриптор {абстрактный}.
Абстрактные классы
и интерфейсы подобны, в частности
потому, что ни у тех, ни у других нет
непосредственных экземпляров. И те, и
другие позволяют определить интерфейс
и отложить его реализацию на более
позднее время. Но все же между ними
имеется достаточно различий, чтобы
считать их отдельными элементами
моделирования. У абстрактного класса
могут быть атрибуты, а у интерфейса –
нет. Абстрактные классы позволяют
доопределить реализацию некоторых
методов, а интерфейсы требуют отложить
определение всех методов.
1