Смекни!
smekni.com

Модель программного обеспечения холодильника (стр. 2 из 3)

Посмотреть температуру на индикаторе(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