Сделай Сам Свою Работу на 5

Диаграммы классов, диаграммы пакетов, диаграммы объектов





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

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

Как говорилось ранее, контроллер посылает системе из двух баков сигналы, управляющие поведением кранов Vinput, V1 и V2. Для правильного управления системой баков ему необходимо иметь значения интервалов времени Time1 и Time2, уровней L_plus и L_minus, а также получать от системы баков значение уровня воды во втором баке h2, необходимое для управления поведением выходного крана V2.

Как видно из рис.2, класс Controller содержит атрибуты h2 (для ясности описанный как элемент группы "inputs"), VinOn, VinOff , V1On, V1Off, V2On , V2Off (объединенные в группу "outputs "), Time1, Time 2, L_plus , L_minus (объединенные в группу "state "). Также класс содержит операции send_VinOn (), send_V 1On (), send _V2On (), send_V 2Off, необходимые для подачи сигналов на включение входного крана Vinput, крана V1, крана V2 и отключение крана V2. В описание класса внесена некая избыточность в виде сигналов VinOff, V1Off (избыточность, так как эти сигналы никогда не посылаются). Это сделано для того, чтобы в дальнейшем логичнее построить модель системы (так как логично предполагать, что если кран можно включить, то его можно и отключить). Также они введены на случай, если в задании потребуется, например, в определенный момент отключить подачу воды в систему, или изолировать баки друг от друга. И хотя в данном варианте задания эти сигналы никогда не будут посылаться, в дальнейшем в других элементах системы теоретическое существование этих сигналов также будет учитываться.



 

Рисунок 2 "Диаграмма классов №1"

 

Как описано в задании, система двух баков должна реагировать на сигналы контроллера, а именно, управлять открытием/закрытием кранов, а также отслеживать ситуацию, когда уровень воды во втором баке становится выше уровня Н и при возникновении такой ситуации изменять скорость поступления воды во второй бак в соответствии с формулой (3). Также система должна отслеживать ситуацию переполнения баков и должным образом на нее реагировать. Исходя из этих требований можно провести декомпозицию системы на несколько частей, а именно выделить элемент, отвечающий за открытие (закрытие) крана Vinput, элемент, управляющий открытием/закрытием задвижек Р1 и Р2 (один для обоих кранов, так как описанные в формуле (5) функции, определяющие индивидуальные свойства кранов V1 и V2 совпадают друг с другом с точностью до коэффициента при 10-4 и коэффициента в показателе экспоненты). Третьим элементом системы можно выделить сами два бака, на которые возлагается задача управления протеканием воды между баками и отслеживания аварийной ситуации переполнения.



Первый элемент можно описать следующим классом Vinput_Control:

 

Рисунок .3 "Диаграмма классов №2"

 

Как видно из рис.3, класс Vinput_Control содержит атрибуты VinOn, VinOff (объединенные в группу "inputs"), Vin (для ясности описанный как элемент группы "outputs") описывающий входной поток воды в систему. Также класс содержит операции open_Vin (), close_Vin () управляющие входным потоком в зависимости от получаемых от контроллера сигналов в соответствии с формулой (1).

Второй элемент можно описать классом К_Control:

 

Рисунок 4 "Диаграмма классов №3"

 

Как видно из рис.4, класс K_Control содержит атрибуты Param_1, Param_2 (объединенные в группу "parameters") и представляющие собой как раз те коэффициенты, различающие между собой формулы (5) и (6) , VXOn, VXOff (объединенные в группу "inputs"), атрибут K (для ясности описанный как элемент группы "outputs"), описывающий выходной поток воды из первого и второго бака; атрибут Р (для ясности описанный как элемент группы "state") и управляющий положением задвижки в кранах V1 и V2. Также класс содержит операции up_K (), open_K (), down_K (), close_K () управляющие значением функций, определяющих свойства кранов V1 и V2 в зависимости от получаемых от контроллера сигналов в соответствии с формулами (5) - (6).



Третий элемент можно описать классом Two_Tanks:

Рисунок 5 "Диаграмма классов №4"

 

Как видно из рис.5, класс Two_Tanks содержит атрибуты K1, K2, Vin (объединенные в группу "input"), представляющие собой управляющие потоками V12 и Vout функции и входной поток в систему, h1 и h2 (объединенные в группу "outputs") представляющие собой уровни воды в первом и втором баках; H, D1, D2, A1, A2, V12, Vout (объединенные в группу "state") представляющие собой расстояние между дном первого и второго баков, диаметры баков, площади их оснований , а также выходные потоки воды из первого и второго баков. Также класс содержит операции up_V12_Vout (), down_V 12_Vout () вычисляющие значения h1 и h2 и управляющие выходным потоком из первого бака (в зависимости от уровня воды во втором баке и значения К1 в соответствии с формулой (3)) и выходным потоком из системы (в зависимости от значения К2 в соответствии с формулой (4)).

Так как классы Vinput_Control, K_Control и Two_Tanks были ранее выделены как элементы системы двух баков, то логично создать класс Tank_System, находящийся в отношении композиции с этими классами (рис.6):

 

Рисунок 6 "Диаграмма классов №5"

В свою очередь, класс Tank_System и класс Controller логично связать отношением композиции с классом System, представляющий собой всю систему двух баков (рис.7):

 

Рисунок 7 "Диаграмма классов №6"

 

На диаграмме объектов №1 для данной системы представлены объект класса Controller, объект класса Vinput_Control, объект класса Two_Tanks и два объекта класса K_Control, определяющие поведение крана К1 и К2 (рис.8):

 

Рисунок 8 "Диаграмма объектов №1"

 

На диаграммах объектов №2 и №3 представлены два составных объекта – объект класса Tank_System и класса System (рис.9 и рис.10):

Рисунок 9 "Диаграмма объектов №2"

 

Рисунок 10 "Диаграмма объектов №3"

 

Диаграмма вариантов использования

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

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

"Режим нормальной работы системы" содержит следующие требования:

В начальный момент времени контроллер посылает системе двух баков сигнал открыть входной кран,

По истечении Time1 контроллер посылает системе двух баков сигнал открыть кран V1,

В течении 80 сек. происходит открытие крана V1,

По истечении Time2 контроллер посылает системе двух баков сигнал открыть кран V2,

В течении 80 сек. происходит открытие крана V2.

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

"Периодическое открытие/закрытие выходного крана" расширяет основной вариант использования и содержит следующие дополнительные требования:

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

В течении 80 сек. происходит закрытие крана V2,

Если уровень воды во втором баке становится выше уровня L_plus, то контроллер посылает системе двух баков сигнал открыть кран V2;

В течении 80 сек. происходит открытие крана V2.

Далее цикл замыкается и система работает в режиме периодического открытия/закрытия выходного крана.

"Переполнение первого бака" также расширяет основной вариант использования и содержит следующие дополнительные требования:

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

"Переполнение второго бака" также расширяет основной вариант использования и содержит следующие дополнительные требования:

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

Диаграмма вариантов использования представлена на рис.11:

 

Рисунок 11 "Диаграмма вариантов использования"

 

Диаграмма последовательности

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

В задаче о двух баках диаграммой последовательности удобно описать поведение системы в основном варианте использования - "Режим нормальной работы системы".

Диаграмма последовательности для данного варианта использования представлена на рис.12 (временные интервалы соответствуют параметрам, представленным в табл.1):

Рисунок 12 "Диаграмма последовательности"

 

Диаграмма деятельностей

Диаграммы деятельностей удобны для изображения взаимодействия вариантов использования. Также они удобны для описания вариантов использования, содержащих условные переходы.

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

На рис.13 представлена диаграмма, описывающая взаимодействие вариантов использования:

 

Рисунок 13 "Диаграмма деятельностей №1"

 

На рис.14 представлено описание варианта использования "Периодическое открытие/закрытие выходного крана":

 

 

Рисунок 14 "Диаграмма деятельностей №2"

 

На рис.15 представлено описание вариантов использования Переполнение первого бака и Переполнение второго бака:

 

Рисунок 15 "Диаграмма деятельностей №3"

 

 

Диаграмма состояний

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

Исходя из этого, а также используя ранее построенные диаграммы, в задаче о двух баках можно определить диаграммы состояний следующих объектов: Controller : Controller, Two_Tanks : Two_Tanks, Vin_Control : Vinput _Controller; а также диаграмма состояний объектов K1_Control и K2_Control класса K_Control (общая для обоих объектов, так как у них одинаковая логика поведения).

Диаграмма состояний объекта Controller : Controller представлена на рис.16:

 

Рисунок 16 "Диаграмма состояний №1"

 

Данная диаграмма отражает логику поведения объекта Controller. Процесс начинается с начальной точки, затем следует мгновенный переход в состояние Ожидание_1, в котором входным действием является посылка сигнала VinOn, открывающего входной кран Vinput. По истечении времени Time1 происходит переход в состояние Ожидание_2, в котором входным действием является посылка сигнала V1On, открывающего кран между баками. По истечении времени Time2 происходит переход в состояние Ожидание_3, в котором входным действием является посылка сигнала V2On, открывающего выходной кран V2. В данном состоянии объект находится до тех пор, пока не станет истинным условие перехода h2<L_minus, говорящий о том, что уровень воды во втором баке стал ниже уровня L_minus. Если условие выполняется, то объект переходит в состояние Ожидание_4, в котором входным действием является посылка сигнала V2Off, отключающее кран V2. Объект находится в этом состоянии до тех пор, пока не выполняется условие перехода h2>=L_plus, говорящее о том, что что уровень воды во втором баке стал выше уровня L_plus. Тогда объект переходит обратно в состояние Ожидание_3 и цикл замыкается.

Диаграмма состояний объекта Two_Tanks : Two_Tanks представлена на рис.17:

Рисунок 17 "Диаграмма состояний №2"

 

Данная диаграмма отражает логику поведения объекта Two_Tanks. Процесс начинается с начальной точки, затем следует мгновенный переход в состояние Вычисление_1, в котором выполняется вычисление значений V12, Vout, h1 и h2 до тех пор пока не станет истинным одно из условий перехода. Если истинным станет условие [(h1>=1)^(h2>=1)], то есть, произойдет переполнение какого-либо из баков, то происходит переход в состояние Блокировка, где система блокируется от подачи воды и баки изолируются друг от друга (то есть система как бы «застывает» в состоянии в котором произошла данная аварийная ситуация). Если становится истинным условие [h2>H], то есть, уровень воды во втором баке поднимается выше уровня подключения к нему трубы от первого бака, то объект переходит в состояние Вычисление_2 в котором уменьшается скорость подачи воды во второй бак и так же происходит вычисление значений V12, Vout, h1 и h2. Это происходит до тех пор, пока истинным не станет одно из условий перехода. Если истинным станет условие [(h1>=1)^(h2>=1)], то произойдет переход в состояние Блокировка, а если истинным станет условие [h2<=H], то есть уровень воды во втором баке опустится до уровня подключения к нему трубы от первого бака, то объект переходит в состояние Вычисление_1 и цикл замкнется.

Диаграмма состояний объекта Vin_Control : Vinput_Control представлена на рис.18:

 

Рисунок 18 "Диаграмма состояний №3"

 

Данная диаграмма отражает логику поведения объекта Vin_Control. Процесс начинается с начальной точки, затем следует мгновенный переход в состояние Выключен, в котором выполняется выключение крана Vinput. Объект находится в этом состоянии до тех пор, пока не поступит сигнал VinOn и не станет истинным условие [VinOn=true]. Тогда объект переходит в состояние Включен, в котором происходит включение крана Vinput. Объект находится в этом состоянии до тех пор, пока не станет истинным условие [VinOff=true], то есть не будет получен сигнал о выключении входного крана. Тогда объект вернется в состояние Выключен и цикл замкнется.

Диаграмма состояний объектов К1_Control и К2_Control представлена на рис.19:

Рисунок 19 "Диаграмма состояний №4"

 

Данная диаграмма отражает логику поведения объектов К1_Control и К2_Control.

Она состоит из двух суперсостояний - Закрытие и Открытие, определяющих закрытие и открытие крана V1 (или V2). Процесс начинается с начальной точки, затем следует мгновенный переход в состояние Закрытие, в котором объект находится до тех пор, пока не выполниться условие [VXOn=true], обозначающее приход сигнала VXOn, включающего кран V1 (или V2). Тогда объект переходит в состояние Открытие, в котором находится до тех пор, пока не придет сигнал на закрытие крана, то есть не станет истинным условие [VXOn=true]. По этому сигналу объект возвращается в предыдущее состояние и цикл замыкается. В суперсостоянии Закрытие содержаться два подсостояния - Выключение и выключен. При попадании в данное суперсостояние объект сразу попадает в состояние Выключение в котором происходит выключение крана до тех пор, пока не выполниться условие [P>=80]. Это означает, что задвижка крана дошла до предельного состояния. В этот момент выполняется выходное действие, закрывающее кран, и объект переходит в состояние Выключен. В нем он находится до тех пор, пока не будет получен сигнал на переход во второе суперсостояние. При попадании во второе суперсостояние объект сразу попадает в состояние Включение в котором происходит включение крана до тех пор, пока не выполниться условие [P<=0]. Это означает, что задвижка крана дошла до предельного состояния. В этот момент выполняется выходное действие, открывающее кран, и объект переходит в состояние Включен. В нем он находится до тех пор, пока не будет получен сигнал на переход обратно в первое суперсостояние. Тогда объект переходит обратно в состояние Закрытие и цикл замыкается.

 

 








Не нашли, что искали? Воспользуйтесь поиском по сайту:



©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.