Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Диаграммы классов (class diagrams)




Интерфейсы

Интерфейс (interface) служит для спецификации параметров модели, которые видимы извне, без указания их внутренней структуры. В языке UML интерфейс является классификатором и характеризует только ограниченную часть поведения моделируемой сущности. Применительно к диаграммам вариантов использования, интерфейсы определяют совокупность операций, которые обеспечивают необходимый набор сервисов для актеров.

На диаграмме вариантов использования интерфейс изображается в виде маленького круга, рядом с которым записывается его имя. В качестве имени может быть существительное или строка текста. Если имя записывается на английском языке, то оно должно начинаться с заглавной буквы I.

Графический символ отдельного интерфейса соединяется на диаграмме сплошной линией или пунктирной линией со стрелкой с тем вариантом использования, который его поддерживает. Сплошная линия указывает, что связанный с интерфейсом вариант использования должен реализовывать все необходимые для него сервисы. Пунктирная линия со стрелкой означает, что вариант использования предназначен для спецификации только того сервиса, который необходим для реализации данного интерфейса.

Таким образом, интерфейс отделяет спецификацию операций системы от их реализации и определяет общие границы проектируемой системы.

Примечания

Примечания (notes) в языке UML предназначены для включения в модель произвольной текстовой информации, имеющей непосредственное отношение к контексту разрабатываемого проекта. В качестве такой информации могут быть комментарии разработчика (например, дата и версия разработки диаграммы или ее отдельных компонентов), ограничения (например, на значения отдельных связей или экземпляры сущностей) и помеченные значения.

Графически примечания обозначаются прямоугольником с загнутым верхним правым углом. Внутри прямоугольника содержится текст примечания.

Если в примечании указывается ключевое слово «constraint», то оно является ограничением, налагаемым на соответствующий элемент модели.

 

Билет 61. Основные принципы объектно-ориентированного подхода.

 

1. Основные понятия ООП

Как уже говорилось ранее, UML реализует объектно-ориентированный подход к разработке сложных систем. Для начала рассмотрим основные идеи объектно-ориентированного подхода.

Основные идеи ООП - это возможность декомпозиции системы на множество отдельных сущностей (классов), каждая из которых может быть размножена на любое количество экземпляров (объектов), имеющих свои особенности. Объекты, соединенные связями описывают структуру системы. Итак,

Класс - это группа сущностей (объектов), обладающих сходными свойствами, а именно, данными и поведением.

ООП характеризуется тремя основными свойствами:

Инкапсуляция - это объединение данных с соответствующими операциями, работающими с этими данными. Инкапсуляция предполагает структурирование данных внутри класса, определение возможных операций для манипуляции с ними и установление прав доступа к данным.

Наследование - это возможность определения класса объектов и дальнейшее использование всех его свойств для построения иерархии порожденных классов с возможностью для каждого порожденного класса, относящегося к иерархии, доступа к данным и операциям базового класса. При использовании наследования важно помнить, что если некая характеристика класса однажды определена, то все классы, находящиеся ниже его по иерархии, наследуют эту характеристику.

Полиморфизм - это, по сути, возможность определения у класса некого действия с дальнейшим переопределением содержания этого действия в соответствующих объектах этого класса. Так, например, можно определить функцию, которая, в зависимости от контекста, будет работать с целыми или вещественными аргументами.

 

Билет 62 UML. Диаграммы классов. Классы, атрибуты, операции.

Диаграммы классов (class diagrams)

2. Назначение диаграмм классов

Диаграммы классов (class diagrams) показывают статическую структуру системы, то есть определяют типы объектов системы и различного рода статические связи и отношения между ними. Диаграммы классов содержат набор статических элементов, как, например, классы, типы, их связи, объединенные в граф. На диаграммах классов также изображаются атрибуты классов, операции классов и ограничения, которые накладываются на связи между объектами. Диаграммы классов могут быть логически объединены в пакеты.

3. Класс

Класс(class) - это сущность, описывающая множество объектов со сходной структурой, поведением и связями с другими объектами.

На диаграммах класс изображается в виде прямоугольника со сплошной границей, разделенного горизонтальными линиями на 3 секции (рис. 2.1):

Рисунок 2.1 "Пример изображения класса"

Верхняя секция (секция имени) содержит имя класса и другие общие свойства (в частности, тип класса, о чем будет рассказано позже). В средней секции содержится список атрибутов, а в нижней - список операций. Атрибуты хранят инкапсулированные данные класса, а операции описывают поведение объектов класса.

Любая из секций атрибутов и операций может не изображаться. Для отсутствующей секции не нужно рисовать разделительную линию и как-либо указывать на наличие или отсутствие элементов в ней.

Классы могут объединяться в более крупные компоненты, называемые пакетами. Область видимости класса - это пакет, в котором он описан. Это означает, что имена классов должны быть уникальны среди имен классов того же пакета. По умолчанию считается, что указываемый класс определен в текущем пакете. Если необходимо сослаться на класс из другого пакета, это указывается явно:

<имя пакета>::<имя класса>

Так как иерархия пакетов может иметь глубину вложенности большую, чем 1, то путь к классу может содержать более чем один пакет, при этом путь начинается от корня иерархии пакетов:

<имя пакета1>::<имя пакета2>::...::<имя пакетаN>::<имя класса>

В секции имени класса могут находиться (по порядку сверху вниз):

· Тип класса (и/или иконка типа в правом верхнем углу) - необязательное поле, опускается, если речь идет о не специфицированном классе.

· Имя класса (если класс абстрактный - курсивом).

· Дополнительные свойства - имя автора и т.п. (необязательное поле).

Средняя и нижняя секции прямоугольника класса содержат списки его атрибутов и операций. При описании класса не обязательно сразу заполнять эти поля. Это возможно лишь в том случае, когда имеется четкое представление о том, какие операции должен выполнять данный класс и какие атрибуты для этого необходимы. На начальной стадии описания это может быть еще не ясно, поэтому для начала содержимое этих полей может быть опущено.

Атрибут

Атрибут (attribute) - это элемент данных класса, т.е. элемент данных, который содержится в объекте, принадлежащем описываемому классу.

У атрибута должен быть тип (type expression), который может представлять собой простой тип или быть сложным, как например:

CArray<CString *, CPoint *>

Детали, касающиеся типов атрибутов, не специфицированы UML. Более подробное описание типа зависит от того, какой язык программирования используется разработчиками.

Атрибут изображается в виде текстовой строки, отражающей различные его свойства:

<признак видимости><имя>::<тип>=<значение по умолчанию>{свойства}

· Признак видимости имеет С++ семантику видимости членов класса:

· Общий атрибут (public) (обозначается символом +) означает, что любая сущность, имеющая доступ к объекту определяемого класса, имеет доступ и к этому атрибуту.

· Защищенный атрибут (protected) (обозначается символом #) означает, что к атрибуту имеют доступ только методы данного класса и его потомков.

· Секретный атрибут (private) (обозначается символом -) означает, что атрибут доступен только методам класса.

· Символ области видимости может изображаться ключевым словом “public", "private” или “protected” или может быть опущен. Это означает, что область видимости не показывается (а не то, что она не определена или “public” по умолчанию).

· Имя - это идентификатор, представляющий имя атрибута.

· Тип - зависящее от языка реализации описание типа атрибута.

· Значение по умолчанию - зависящее от языка реализации выражение, задающее начальное значение для атрибута вновь созданного объекта. Эта часть определения атрибута не обязательна.

· Свойства - строка дополнительных свойств элемента (необязательная часть). Если свойства не указываются, скобки {} опускаются. Примером свойства может служить имя автора:

{Author = Smith}

По умолчанию атрибут является изменяемым. Указав в его свойствах пометку {frozen} можно объявить атрибут неизменяемым.

Для атрибута можно указывать его множественность. Если она не обозначена, то предполагается, что атрибут может хранить ровно одно значение. Множественность может быть определена в квадратных скобках сразу после имени атрибута:

coords[3]: integer

Операция

Операция (operation) - это сущность, определяющая некое действие, которое может быть выполнено представителем класса. У операции есть имя и список аргументов.

Операция изображается текстовой строкой, имеющей следующую грамматику:

<признак видимости><имя>(список параметров):<тип выражения, возвращающего значения> {свойства}

· Признак видимости, имя и свойства имеют тот же смысл, что и для атрибута.

· Список параметров - список формальных параметров, разделенных запятыми: <имя>:<тип>=<значение по умолчанию>

· Имя - имя параметра.

· Тип - зависящее от языка реализации описание типа параметра.

· Значение по умолчанию - значение параметра по умолчанию.

В последней версии UML предусмотрена также возможность указания вида параметра (входной, выходной или смешанного типа).

· Тип выражения, возвращающего значения - зависящее от языка реализации описание типа значения, возвращаемого функцией. Если оно не указано, то предполагается, что функция не возвращает значения (void для C/C++).

Все операции, определенные в классе, можно разделить на две группы: операции класса и операции представителя. Операции класса - это операции, присущие не объектам класса, а самому классу. Отсюда, в частности, следует, что операции класса не имеют доступа к атрибутам. Типичный пример операции класса - функция создания нового объекта (представителя) класса. Операции класса выделяются подчеркиванием:

createObject(void): PObject

Операция, не изменяющая состояние системы, помечается следующим образом: в список свойств операции помещается свойство {query}.

Элементы списков атрибутов и операций можно группировать по некоторым признакам. В этом случае перед группой элементов ставится заключенная в кавычки строка, определяющая свойство, причем это свойство распространяется на все нижестоящие элементы до нового свойства.

У каждой секции прямоугольника класса может быть имя. При этом, так как секция "Имя класса" обязательна, то ее имя не указывается (рис.2.2).

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...