Такая связь носит название полиморфизм и тесно связана с наследованием и приведением типа объекта класса-наследника к типу класса-предка. При различном переопределении виртуальных операций в классах-потомках допустимо создать экземпляры таких классов-наследников (объектов). Такие объекты могут быть приведены к типу класса-предка и присвоены переменным этого класса. Однако при вызове метода, которому соответствует виртуальная операция, по разному переопределённая в разных классах-наследниках, реально будет вызван не метод класса-предка, а разные методы классов-потомков.
Такое использование приведения типов при наследовании позволяет организовать множественность поведения объектов одного класса, инициализированных различными классами-наследниками данного класса. Такая множественность поведения носит название «полиморфизм». Следует отметить, что полиморфизм особенно ярко проявляется при использовании интерфейсов, поскольку интерфейсы не содержат реализации операций, но позволяют осуществлять вызов переопределённых в классах-потомках операций.
Отношение обобщения устанавливает связь между более общим элементом (предком) и более специфичным или частным элементом (потомком или наследником). Другим названием отношения обобщения является наследование. В качестве элементов, к которым применимо отношение обобщения могут выступать классы, пакеты, интерфейсы и другие элементы языка UML. При наследовании элемент-потомок получает всё содержимое элемента-предка, за исключением содержимого, явно обозначенного, как ненаследуемое.
В случае наследования классов потомок получает от класса-предка все атрибуты и операции, имеющие область видимости (модификатор доступа) public или protected. При этом класс-потомок может расширить возможности класса-предка за счёт использования дополнительных атрибутов и операций.
Отношение обобщения обозначается сплошной линией с треугольной стрелкой на одном конце. Такая стрелка указывает на элемент-предок.
Интерфейс устанавливает видимые извне обязательные операции класса, компонента, пакета или другого элемента без определения внутренней структуры этих операций.
Интерфейс, подобно классу, содержит операции, но не содержит атрибутов, состояний или ассоциаций. Существует два способа условного обозначения интерфейса:
· В виде фигуры класса со стереотипом <<interface>>, соединенной с элементом, который его поддерживает с помощью отношения реализации.
· В виде круга, соединенного сплошной линией с элементом, который его поддерживает.
Отношение реализации подразумевает, что клиент, находящийся у хвоста стрелки, поддерживает или наследует все операции, определенные в поставщике, на который указывает наконечник.
Отношение реализации используется между классом (как потребителем) и его интерфейсом (если интерфейс представлен фигурой Класс со стереотипом <<interface>>) или между реализующим классом (как потребителем) и типом.
Среда Visio предоставляет возможности по управлению тем, в виде каких фигур отображается интерфейс. Для изменения внешнего представления интерфейса щелкните правой кнопкой мыши фигуру Интерфейс, выберите команду Параметры отображения фигуры и установите флажок «Показывать как интерфейс с описанием классов» или «Показывать как интерфейс без описания операций».
Для присвоения имени фигуре «Интерфейс» и добавление значений других свойств используйте диалоговое окно «Свойства UML элемента», для вызова которого дважды щелкните значок элемента в представлении в проводнике по моделям или фигуру элемента в схеме.
Создайте класс, являющийся обобщением группы классов, т.е. классом-предком. Добавьте в этот класс атрибуты и операции, сходные для группы классов-потомков. Добавьте связи обобщения между обобщающим классом и классами-наследниками. Установите правильные модификаторы доступа для операций и атрибутов базового класса. Удалите из классов-потомков атрибуты и операции, объявленные в классе-предке и доступные в классах-потомках согласно их модификаторам доступа.
Выделите одну или несколько операций, одинаковых для части классов-наследников, связанных отношением обобщения с классом-предком, созданным в предыдущем задании, и удалите эти операции. Добавьте на диаграмму интерфейс, содержащий удалённые операции. Добавьте наследование от созданного интерфейса к классам, в которых были удалены операции. При этом удалённые операции должны появиться внутри классов вновь.
Выделите одну или несколько одинаковых операций, наследуемых классами от базового класса или от интерфейса, но выполняемых каждым классом по-разному. Обозначьте эти операции, как полиморфные и укажите их явное переопределение внутри классов-потомков.
Действуя аналогично заданию 1 данной работы, выделите один или несколько классов-предков, которым не соответствует ни один объект из предметной области. Добавьте между этими классами и их классами-потомками отношения обобщения. Обозначьте добавленные классы, как абстрактные.
В данной работе используются те же варианты заданий, что и в первой работе. Необходимо самостоятельно сформировать иерархию классов на основании задания, сформированного в первой работе.
По результатам выполнения лабораторной работы следует оформить отчёт, представляющий собой файл диаграмм Microsoft Office Visio, содержащий разработанную диаграмму классов. Отчёт должен содержать примечание, содержащее информацию о полиморфических операциях, использованных в диаграмме и причины реализации таких операций, как полиморфических.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.