Посмотреть температуру на индикаторе(Look T on indicator)
Краткое описание
Данный вариант использования описывает просмотр температуры на индикаторе холодильника пользователем.
Основной поток событий
1. Пользователь узнает текущую температуру холодильника
Альтернативный поток
1. Возможны поломки
2. В журнал заноситься информация о поломке
Предусловия
Термометр измеряет текущую температуру и выводит на индикаторе.
Постусловия
Пользователь узнал температуру.
5. Проектирование системы
5.1 Иерархия системы
Описание классов
Граничные классы (Boundary):
1. Дверца холодильника(Door)
2. Таймер(Timer)
3. Звуковое устройство(Sound Device)
4. Регулятор(Regulator)
5. Термометр(Thermometer)
6. Индикатор(Indicator)
7. Мотор(Motor)
Рисунок 3 - Граничные классы
Классы сущности (Entity):
Журнал (Journal)
Рисунок 4 - Класс сущности Журнал (Journal)
Управляющие классы (Control):
Контроллер холодильника (Controllerofrefrigerator)
Рисунок 5 - Управляющие класс контроллер (Controller)
Добавление операций и атрибутов к классам
1. Дверца холодильника(Door)
Операции:
CloseDoor() : Boolean– Операция закрытия дверцы холодильника.
OpenDoor() : Boolean– Операция открытия дверцы холодильника.
При выполнении операций они возвращают 1 - если операция выполнилась без ошибок, 0 – если произошла поломка. Значение сохраняется в состоянии дверцы (StateofDoor).
Рисунок 6 - Класс Door<<boundary>> с операциями и аргументами
2. Таймер(Timer)
Операции:
Switch on Timer() : Boolean – Операциявключениятаймера.
SwitchoffTimer() : Boolean– Операция выключения таймера (Сброса значения на 0).
При выполнении операций они возвращают 1 - если операция выполнилась без ошибок, 0 – если произошла поломка. Значение сохраняется в состоянии таймера (StateofTimer).
Атрибуты:
StateofTimer: Boolean- Состояние таймера (Рабочее/Не рабочее).
Рисунок 7 - Класс Timer<<boundary>> с операциями и аргументами
3. Звуковое устройство(Sound Device)
Операции:
SwitchonSoundDevice() : Boolean– Операция включения звукового сигнала при условии, что таймер отсчитал 30 секунд.
SwitchoffSoundDevice() : Boolean– Операция выключения звукового сигнала.
При выполнении операций они возвращают 1 - если операция выполнилась без ошибок, 0 – если произошла поломка. Значение сохраняется в состоянии звукового устройства (StateofSoundDevice).
Атрибуты:
StateofSoundDevice: Boolean– Состояние звукового устройства (Рабочее/Не рабочее).
Рисунок 8 - Класс SoundDevice<<boundary>> с операциями и аргументами
4. Регулятор(Regulator)
Операции:
ChangefactorT2() : Boolean– Операция изменения температуры T2 (Определение нижней границы температуры в холодильнике)
При выполнении операций они возвращают 1 - если операция выполнилась без ошибок, 0 – если произошла поломка. Значение сохраняется в состоянии регулятора (StateofRegulator).
Аргументы:
FactorT2 : Float– Величина заданной температуры.
StateofRegulator- Состояние устройства (Рабочее/Не рабочее).
Рисунок 9 - Класс Regulator<<boundary>> с операциями и аргументами
Термометр (Thermometer)
Операции:
MeasureT1() : Float– Операция измерения температуры в холодильнике. Выполняется постоянно.
При выполнении операций они возвращают 1 - если операция выполнилась без ошибок, 0 – если произошла поломка. Значение сохраняется в состоянии регулятора (StateofThermometer).
Аргументы:
StateofThermometer: Boolean- Состояние устройства (Рабочее/Не рабочее).
FactorT1 : Float– Аргумент хранит текущую температуру в холодильнике.
Рисунок 10 - Класс Thermometer<<boundary>> с операциями и аргументами
5. Индикатор(Indicator)
Операции:
ShowT1() : Float– Вывести температуру на экран.
При выполнении операций они возвращают 1 - если операция выполнилась без ошибок, 0 – если произошла поломка. Значение сохраняется в состоянии регулятора (StateofIndicator).
Аргументы:
FactorT1 : Float– Хранит значение переданной от термометра температуры.
StateofIndicator: Boolean- Состояние устройства (Рабочее/Не рабочее)
Рисунок 11 - Класс Indicator<<boundary>> с операциями и аргументами
6. Мотор(Motor)
Операции:
StartMotor() : Boolean– Операция запускает мотор при условии если T1>T2 (текущая температура с термометра превышает нижний порог заданный регулятором).
StopMotor() : Boolean– Операция останавливает мотор если T1≤T2 (текущая температура с термометра ниже или равна нижнему порогу заданному регулятором). При выполнении операций они возвращают 1 - если операция выполнилась без ошибок, 0 – если произошла поломка. Значение сохраняется в состоянии регулятора (StateofMotor).
Атрибуты:
StateofMotor: Boolean- Состояние устройства (Рабочее/Не рабочее).
Рисунок 12 - Класс Motor<<boundary>> с операциями и аргументами
7. Журнал(Journal)
Операции:
Savedata() – Сохранить данные направленные в журнал.
Аргументы:
Data: String– В него сохраняются данные.
Рисунок 13 - Класс Journal<<entity>> с операциями и аргументами
8. Контроллерхолодильника(Controller of refrigerator)
Операции:
CheckStatesonbreakage() : Boolean– Операция проверки на работоспособность устройств холодильника. Вся информация об ошибках записывается в журнал.
CheckTimeonTimer() : BooleanПроверить прошедшее время со включения таймера. Если время превышает 29 секунд, то передает команду на включение звукового сигнала.
CompareT1 & T2() – Сравнивает температуры, непрерывна. Если T1>T2 (текущая температура с термометра превышает нижний порог заданный регулятором) отдаёт команду на включение мотора.
Если T1≤T2 (текущая температура с термометра ниже или равна нижнему порогу заданному регулятором) передает команду мотору остановиться.
Рисунок14 - КлассController of the refrigerator <<control>> соперациямииаргументами
5.2 Построение диаграммы классов (Class Diagram)
Диаграмма классов является основным логическим представлением модели и содержит детальную информацию о внутреннем устройстве объектно-ориентированной программной системы.
Рисунок 15 - Диаграмма классов (ClassDiagram)
5.3 Построение диаграммы состояний (Statechart Diagram)
Определение состояний для классов моделируется с помощью диаграмм состояний. Главное назначение диаграммы состояний - описать возможные последовательности состояний и переходов, которые в совокупности характеризуют поведение моделируемой системы в течение всего ее жизненного цикла. Диаграмма состояний представляет динамическое поведение сущностей, на основе спецификации их реакции на восприятие некоторых конкретных событий.
Рисунок 16 - Диаграммы состояний (StatechartDiagram)
6. Реализация системы
6.1 Диаграммы компонентов (Component Diagram)
Диаграмма компонентов служит частью физического представления модели, играет важную роль в процессе ООАП и является необходимой для генерации программного кода.
Рисунок 17 - Диаграммы компонентов (ComponentDiagram)
6.2 Диаграмма размещения
Диаграмма развертывания является второй составной частью физического представления модели и разрабатывается, как правило, для территориально распределенных систем. В данном проекте этот тип диаграммы не нужен, так как холодильник не имеет внешних связей с другими устройствами.
6.3 Генерация кода
Процесс генерации кода состоит из четырех основных шагов:
1. Проверка корректности модели.
2. Установка свойств генерации кода.
3. Выбор класса, компонента или пакета.
4. Генерациякода.
Выполнимпредложенные шаги:
1. Проверим модель на содержание ошибок.(Tools> CheckModel).
2. Назначим компонентам классы(С помощью команды Assign) и выберем для всех компонент язык генерации ANSIC++.
3. Выберем все компоненты, которым назначили классы.
4. Выберем команду сгенерировать код на языке ANSIC++.
Получившийсякод
Controller of the refrigerator.h
#ifndef CONTROLLEROFTHEREFRIGERATOR_H_INCLUDED_B6AD0DF2
#define CONTROLLEROFTHEREFRIGERATOR_H_INCLUDED_B6AD0DF2
//##ModelId=49521FA001E4
class Controller of the Controller of the refrigerator
{
public:
//##ModelId=495227D60148
Boolean Check States on Check States on breakage();
//##ModelId=49522913008C
Boolean Check Time on Check Time on Timer();
//##ModelId=4952295E0251
T1 Compare T1 T2();
};
#endif /* CONTROLLEROFTHEREFRIGERATOR_H_INCLUDED_B6AD0DF2 */
Controller of the refrigerator.cpp
#include "C:/Код/Controller of the refrigerator.h"
//##ModelId=495227D60148
Boolean Controller of the refrigerator::Check States on breakage()
{
}
//##ModelId=49522913008C
Boolean Controller of the refrigerator::Check Time on Timer()
{
}
//##ModelId=4952295E0251
Controller of the refrigerator::Compare T1 & T2()
{
}
Journal.h
#ifndef JOURNAL_H_INCLUDED_B6AD5CEA
#define JOURNAL_H_INCLUDED_B6AD5CEA
//##ModelId=4952203B037A
class Journal
{
public:
//##ModelId=495225C6036B
Save data();
//##ModelId=495225E7033C
String Data;
};
#endif /* JOURNAL_H_INCLUDED_B6AD5CEA */
Journal.cpp
#include "C:/КОД/Journal.h"
//##ModelId=495225C6036B