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

новый

Измерение

сердечный ритм: Тип Показателя

медленный сердечный ритм; Показатель

нормальный

найти

Показатель ()

нормальный сердечный ритм

включает (Количество)

ложно

включает 1( Количество)

истинно

Рис. 11.6. Диаграмма последовательности наблюдения пациента

Первое, на что следует обратить внимание, - это ассоциация между ними: должен ли интерфейс допускать навигацию в обоих направлениях? По моему мнению, в данном случае именно так и должно быть, поскольку при этом оба направления будут одинаково важными и, в любом случае, эти понятия тесно связаны друг с другом. На практике данную ассоциацию удается реализовать с помощью указателей в обоих направлениях. Однако эту ассоциацию я сделаю неизменяемой, поскольку даже при обновлении данных соответствующие объекты не будут модифицироваться часто, а если и будут, мы всегда можем создать их заново.

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

Давайте рассмотрим некоторые определения.



public class PhenomenonType extends DomainObject { public PhenomenonType(String name){ super(name); };

void frlendPhenomenonAdd(Phenomenon newPhenomenon) {

\\ ОГРАНИЧЕН: используется только Показателем

.phenomena. addElement (newPhenomenon); };

public void setPhenomena(String[] names) { for (int i = 0; i < names.length; i++) new Phenomenon(names[l], this);

public Enumeration phenomenaO { return .phenomena.elementsO;

private Vector .phenomena = new Vector(); private QuantityRange validRange;

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

public class Phenomenon extends DomainObject { public Phenomenon (String name, PhenomenonType type) { super (name); type = type;

type.frlendPhenomenonAdd(this); };

public PhenomenonType phenomenonTypeO { return type; };

private PhenomenonType type; private QuantityRange range;

package observations;

public class DomainObject { public DomainObject(String name) { name = name;

public DomainObjectO {};



public String nameO { return name;

public String toStringO { return name;

protected String name = no name ; }

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

Теперь я могу описать эти объекты с помощью следующего кода:

PhenomenonType sex =

new PhenomenonType ( gender ). persistO; String[] sexes = { male , female }; sex.setPhenomena(sexes);

Операция persist() сохраняет Тип Показателя в специальном объекте-реестре, чтобы впоследствии его снова можно было получить с помощью статического метода get(). Детали реализации этого я опущу.

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

public class Observation extends DomainObjest { public Observation (Phenomenon relevantPhenomenon, Patient patient, Date whenObserved) { .phenomenon = relevant Phenomenon;

patient.observationsAdd(this); whenObserved = whenObserved;

private Phenomenon .phenomenon;

private Date whenObserved; }

public class Patient extends DomainObject { public Patient(String name) { super(name);

void observationsAdd(Observation newObs) {



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


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