Звоните! 
 (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

observatlons.addElement(newObs);

private Vector observations = new VectorO; }

С помощью следующего фрагмента кода я могу создавать наблюдения.

new Patient( Adams ).perslst();

new Observatlon(PhenomenonType.get( gender ),

phenomenonNamed( male ), Patient.get( Adams ),

new Date (96, 3, 1) ); class PhenomenonType {

public Phenomenon phenomenonNamed(Strlng name) {

Enumeration e = phenomenaO;

while (e.hasMoreElementsO )

Phenomenon each = (Phenomenon)e.nextElement(); If (each.name().equals(name)) return each;

return null;

После создания наблюдений необходимо иметь возможность поиска самого последнего показателя.

class Patient public Phenomenon phenomenonOf (PhenomenonType phenomenonType)

return (latestObservatlon(phenomenonType) == null ? new NullPhenomenonO : latestObservatlon(phenomenonType).phenomenonO );

private Obsertatlon

latestObservation(PhenomenonType value) {

return latestObservatlonln(observatlonsOf(value) );

private Enumeration

observatlonsOf(PhenomenonType value) { Vector result = new VectorO; Enumeration e = observatlonsO; while (e.hasMoreElementsO ) {

Observation each = (Observation) e.nextElementO; if (each.phenomenonTypeO = = value) result.addElement(each);



return result.elementsO;

private Observation latestObservationln (Enumeration observationEnum)

if (!ObservationEnum.hasMoreElementsO )

return null; Observation result =

Observatlon)observationEnum. nextElementO; if (! ObservationEnum. hasMoreElementsO )

return result; do {

Observation each =

(Observation)observationEnum. nextElementO; if (each.whenObserved().

after(result.whenObservedO ) ) result = each;

while (observationEnum. hasMoreElementsO ); return result;

class Observation public PhenomenonType phenomenonType() { return phenomenon.phenomenonType() ;

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

Теперь можно рассмотреть добавление поведения для измерений.

Во-первых, давайте посмотрим на определение класса Измерение (Measurement) и его конструктор.

public class Measurement extends Observation { public Measurement(Quantity amount, PhenomenonType phenomenonType, Patient patient, Date whenObserved) { initialize (patient, whenObserved); amount = amount ; phenomenonType = phenomenonType;

public PhenomenonType phenomenonType() { return phenomenonType; };



public String toStrlngO { return .phenomenonType + : + amounts;

private Quantity amount;

private PhenomenonType .phenomenonType; }

class Observation protected void lnitiallze(Patlent patient, Date whenObserved) { patient.observationsAdd(thls); whenObserved = whenObserved;

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

И снова нам требуется самое последнее измерение. Class Patient

public Quantity latestAmountOf(phenomenonType value) { return ((latestMeasurement(value) == null) ) ? new NullQuantlty():latestMeasurement(value).amount();

private Measurement

latestMeasurement(PhenomenonType value) { if (latestObservatlon(value) == null) return null;

if (!latestObservatlon(value).lsMeasurement() ) return null;

return (Measurement)latestObservatlon(value);

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

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

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

Глядя на эту диаграмму, мы можем сделать вывод, что единственное различие между классами Измерение и Наблюдение заключается в том.



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 
Продажа и изготовление мебели.


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