Абстрактные операции и классы

Иногда требуется перенести реализацию операции в подклассы. В примере с классом Shape операция Shape::draw( g : Graphics ) – как раз такой случай. В самом классе Shape обеспечить какую-либо разумную реализацию этой операции невозможно, поскольку неизвестно, как должны отрисоваться «фигуры». Понятие «отрисовка фигуры» слишком абстрактное, чтобы иметь конкретную реализацию.
Отсутствие реализации операции можно обозначить, сделав ее абстрактной операцией. В UML для этого имя операции просто записывается курсивом.
Класс с одной или более абстрактными операциями является неполным, поскольку в нем есть операции, не имеющие реализации. Это означает невозможность создания экземпляров подобных классов. Поэтому такие классы называют абстрактными. Чтобы показать, что класс является абстрактным, его имя записывается курсивом.
Абстрактный класс Shape имеет две абстрактные операции: Shape::draw( g : Graphics ) и Shape::getArea() : int. Эти операции реализуются подклассами Square и Circle. Хотя Shape является неполным, и его экземпляр не может быть создан, оба его подкласса предоставляют недостающие реализации, являются полными и могут иметь экземпляры. Любой класс, экземпляр которого может быть создан, называется конкретным классом.
Операция getBoundingArea() является конкретной операцией класса Shape, потому что контактная площадь (bounding area) любой фигуры вычисляется одинаково: ширина фигуры умножается на высоту.
Использование абстрактных классов и операций обеспечивает два серьезных преимущества:
• В абстрактном суперклассе можно определять ряд абстрактных операций, которые должны быть реализованы всеми подклассами Shape. Это можно рассматривать как определение «контракта», который должны реализовать все конкретные подклассы Shape.
• Можно написать код управления фигурами и затем подставить Circle, Square и другие подклассы Shape соответственно. Согласно принципу замещаемости код, написанный для управления Shape, должен работать для всех подклассов Shape.

Запись опубликована в рубрике Компьютеры и интернет с метками . Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

code