Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

UML / АСУ_Фонотов_uml

.pdf
Скачиваний:
48
Добавлен:
03.03.2016
Размер:
3.35 Mб
Скачать

Углубленное изучение

атрибутов класса

Кафедра Автоматизированных систем управления

Атрибут – предназначен для хранения данных класса.

Часто возникает необходимость хранить данные не только в момент выполнения программы

Объекты которые сохраняют значения своих атрибутов даже после того, как завершился поток управления, мы будем называть хранимыми

(persistent).

Объекты, значения атрибутов которых хранить не требуется, будем называть transient

© Фонотов Анастас Михайлович

 

 

 

 

 

 

Углубленное изучение

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

атрибутов класса

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

управления

 

Статические атрибуты класса

 

 

Если имя атрибута подчеркнуто, то это означает,

 

 

систем

 

 

 

что областью действия данного атрибута является

 

 

 

класс, а не экземпляр класса. (обычно в языках

АвтоматизированныхКафедра

 

 

 

 

 

 

программирования для создания таких атрибутов

 

 

 

 

 

 

 

 

применяется ключевое слово static).

© Фонотов Анастас Михайлович

 

 

 

 

 

 

 

Углубленное изучение

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

атрибутов класса

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

После описания атрибута мы можем задать его

 

 

управления

 

 

 

свойства используя {}

 

Возможные значения:

 

 

систем

 

 

 

 

{addOnly} – При изменении значений атрибута новое

 

 

 

 

 

 

значение должно добавляться в массив значений, но

 

 

 

 

 

 

 

АвтоматизированныхКафедра

 

 

 

 

 

 

старые значения не меняются и не исчезают. Такой

 

 

 

 

 

 

атрибут «помнит» историю своего изменения.

 

 

 

 

 

 

 

 

 

 

 

 

{frozen} или {readOnly} – Значение атрибута задается при

 

 

 

 

 

 

 

инициализации и не может быть изменено.

© Фонотов Анастас Михайлович

Углубленное изучение

атрибутов класса

Часто возникает вопрос является ли атрибут класса

управлениясистемАвтоматизированныхКафедра

обычными данными или экземпляром другого

класса.

 

© Фонотов Анастас Михайлович

 

 

 

 

 

 

Углубленное изучение

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

операций класса

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Свойства операции:

 

управления

 

 

Concurrency – определяет семантику параллельного

 

 

вызова данной операции

 

 

 

 

 

 

систем

 

 

 

 

isQuery – указывает, влияет ли операция на состояние

 

 

 

 

системы или просто делает вычисления (true – по

 

 

 

 

 

 

АвтоматизированныхКафедра

 

 

 

 

умолчанию, не меняет состояние системы)

 

 

Leaf – запрещает переопределение реализации операции в

 

 

 

 

подклассах (false - значение по умолчанию).

© Фонотов Анастас Михайлович

 

 

 

 

 

 

Углубленное изучение

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

операций класса

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Свойство Concurrency может принимать значения:

 

управления

 

 

{sequential} – не допускает параллельного вызова

 

 

(значение по умолчанию)

 

 

 

 

 

 

систем

 

 

 

 

{guarded} – Допускаются параллельные вызовы, но

 

 

 

 

только один из них выполняется, остальные блокируются

 

 

 

 

 

 

АвтоматизированныхКафедра

 

 

{concurrent} – допускается произвольное число

 

 

 

 

параллельных вызовов, операция гарантирует свое

 

 

 

 

 

 

правильное выполнения

© Фонотов Анастас Михайлович

Шаблон (template)

Кафедра Автоматизированных систем управления

Шаблон – сущность с параметрами

Шаблон – классификатор, который в своем описании имеет несколько формальных параметров

Параметром может выступать

Тип составляющей

Кратность атрибута

Параметры шаблона описываются в пунктирном прямоугольнике, который присоединяется к стандартному обозначению класса

Шаблон не указывается в модели

Связывание класса с шаблоном (binding) осуществляется явным указанием значений параметров

© Фонотов Анастас Михайлович

Шаблон (template)

Кафедра Автоматизированных систем управления

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

T:String

k:Integer=2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Список формальных

 

СвязныйСписок

 

 

 

 

 

 

 

 

 

 

 

параметров шаблона

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Имя шаблона

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

элемент: T[k]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Список атрибутов

 

 

 

 

 

 

 

 

 

шаблона

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Список операций

 

 

 

 

 

 

 

<<bind>>

 

шаблона

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

<T->Адрес, k->4>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

© Фонотов Анастас Михайлович

Шаблон (template). Типы связывания

Кафедра Автоматизированных систем управления

Связывание (binding)

Явное – отношение зависимости со стереотипом “bind”

Неявное – Имя класса имеет формат

Имя_классификатора : имя_шаблона <аргументы>

class Class Model

 

 

T

 

 

n

 

 

Array

Positions

-

items[n]:T: int

«bind»

 

 

 

 

<n=50, T=Position>

n-число элементов массива, T-тип элементов массива

© Фонотов Анастас Михайлович

Шаблон (template). Генерация кода

 

 

 

Position.h

 

Array.h

 

 

 

class Positions

 

 

 

 

template<T, n>

 

{

управления

 

 

class Array

 

Positions();

{

 

 

 

public:

 

 

 

систем

public:

 

};

Array();

 

 

 

 

virtual ~Positions();

Автоматизированных

virtual ~Array();

 

 

 

};

 

}

 

 

 

Position.cpp

 

private:

 

#include "Positions.h«

 

int items[n]:T;

 

 

 

 

 

Positions::Positions(){

Кафедра

 

 

Positions::~Positions(){

 

 

 

 

 

 

}

 

 

 

 

© Фонотов Анастас Михайлович

Соседние файлы в папке UML