Студопедия

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Абстрактные, корневые, листовые и полиморфные элементы

Читайте также:
  1. A. Элементы резания при точении
  2. II. Материальные элементы (МЭ)
  3. III.4.3) Виды и элементы вины.
  4. А) Основные элементы измерительных приборов
  5. Базовые элементы рукопашного боя
  6. Безынерционные нелинейные элементы
  7. Биогенные элементы и факторы, лимитирующие продукцию
  8. Более сложные элементы ER-модели
  9. Буферные элементы, элементы с тремя состояниями на выходе.

Отношения обобщения используются для моделирования иерархии классов, верхние уровни которой занимают общие абстракции, а ниже находятся специализированные (см. главы 5 и 10). Внутри этой иерархии некоторые классы определяют как абстрактные, то есть не имеющие непосредственных экземпляров (см. главу 13). В языке UML имя абстрактного класса пишут курсивом. Например, как видно из рис. 9.5, абстрактными являются классы Icon, Recfcangularlconи ArbitraryIcon. Наоборот, конкретными называются классы, которые могут иметь непосредственные экземпляры (на рис. 9.5 это Buttonи OkButton).

При моделировании класса часто возникает потребность задать ему свойства, унаследованные от более общих классов и, наоборот, предоставить возможность более специализированным классам наследовать особенности данного. Такая семантика легко обеспечивается для классов средствами UML. Можно определить и такие классы, у которых нет потомков. Они называются листовыми и задаются в UML с помощью свойства leaf, написанного под именем класса. Например, класс OkButtonна рис. 9.5 является листовым и поэтому не имеет потомков.

Реже используется, хотя и остается весьма полезной, возможность задать класс, не имеющий родителей. Такой класс называется корневым и специфицируется с помощью свойства root, записанного под его именем. На рис. 9.5 корневым является класс Icon. Если имеется несколько независимых иерархий наследования, то начало каждой удобно обозначать таким способом.

Операции могут иметь сходные свойства. Как правило, операции являются полиморфными, - это значит, что в различных местах иерархии классов можно определять операции с одинаковыми сигнатурами. При этом те операции, которые определены в классе-потомке, перекрывают действие тех, что определены в родительских классах. Когда во время исполнения системы поступает какое-то сообщение (см. главу 15), операция по его обработке вызывается полиморфно, - иными словами, выбирается та, которая соответствует типу объекта. На рис. 9.5 операции displayи islnsideявляются полиморфными, а Icon::display (), кроме того, еще и абстрактна. Это значит, что она неполна и реализацию должен предоставить потомок. В UML имена абстрактных операций пишутся курсивом, как и в случае с классами. Напротив, операция Icon::getID ()является листовой, на что указывает слово leaf. Это означает, что данная операция не полиморфна и не может быть перекрыта другой.



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

Абстрактные операции соответствуют чисто виртуальным операциям языка C++, листовые операции - не виртуальным операциям этого языка.


Дата добавления: 2015-01-01; просмотров: 45; Нарушение авторских прав


<== предыдущая лекция | следующая лекция ==>
Видимость | Кратность
lektsii.com - Лекции.Ком - 2014-2017 год. (0.007 сек.) Главная страница Случайная страница Контакты