Звоните! 
 (926)274-88-54 
 Бесплатная доставка. 
 Бесплатная сборка. 
Ассортимент тканей

График работы:
Ежедневно. С 8-00 до 20-00.
Почта: soft_hous@mail.ru
Читальный зал -->  Диаграммы параллельных состояний 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 [ 50 ] 51 52 53 54 55 56 57

Тип Показателя

Строка

0..1

0..1w

Показатель

диапазон: КоличественныйДиапазон

Измерение

значение:Количество

0..1

Наблюдение

моментВремени

Пациент

последнееЗначение (Тип Показателя): Количество показатель (Тип Показателя): Показатель

Рис. 11.7. Другая модель спецификации наблюдения пациента

что Измерение обладает количеством. Класс Измерение можно совсем удалить из модели спецификации, предположив, что любое наблюдение обладает количеством (которое может иметь неопределенное значение null).

Мы могли бы все же оставить отдельный класс Измерение с полями величина и тип показателя, но при этом никто за пределами данного пакета не будет знать о существовании данного класса. Чтобы обеспечить создание соответствующего класса, нам может понадобиться добавить методы образца Фабрика (Factory) (Гамма и др., 1995 [20]) либо в класс Наблюдение, либо в класс Пациент.

Я оставлю это дополнение в качестве упражнения для читателей и перейду к автоматическому связыванию Показателя с Измерением.

Этот общий процесс изображен на рис. 11.7.



Сначала необходимо добавить метод вызова в конструктор класса Измерение.

Class Measurement public Measurement (Quantity amount, PhenomenonType phenomenonType, Patient patient, Date whenObserved)

Initialize (patient, whenObserved);

amount = amount ;

phenomenonType = phenomenonType;

.phenomenon = calculatePhenomenonFor( amount);

Далее эта задача делегируется классу Тип Показателя.

Class Measurement public Phenomenon calculatePhenomenonFor(Quantlty arg) {

return .phenomenonType.phenomenonlncluding(arg);

Далее no очереди запрашивается каждый показатель. Class PhenomenonType

public Phenomenon phenomenonlncluding (Quantity arg) { Enumeration e = phenomenaO; while (e.hasMoreElementsO ) {

Phenomenon each = (Phenomenon) e.nextElementO; if (each.includes(arg)) return each;

return null;

Class Phenomenon public boolean Includes (Quantity arg) { return (.range == null ? false:.range.includes (arg));

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

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



солютно все возможности языка UML. Вполне достаточно пользоваться только теми из них, которые представляются вам полезными.

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

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

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

Дополнительную информацию по данному примеру можно найти на моем сайте. В приведенной там версии примера более детально рассмотрены вопросы взаимосвязи данной модели с пользовательским интерфейсом.



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 [ 50 ] 51 52 53 54 55 56 57



ООО «Мягкий Дом» - это Отечественный производитель мебели. Наша профильная продукция - это диваны еврокнижка. Каждый диван можем изготовить в соответствии с Вашими пожеланияи (размер, ткань и материал). Осуществляем бесплатную доставку и сборку.



Звоните! Ежедневно!
 (926)274-88-54 
Продажа и изготовление мебели.


Копирование контента сайта запрещено.
Авторские права защищаются адвокатской коллегией г. Москвы
.