пятница, 1 апреля 2011 г.

с.164

Новый класс Quantity. Опять самому придумывать?..
-----
Measurement. Метод public String toString().
Переменная _amounts - это на самом деле _amount ?
Экземпляр класса PhenomenonType используется в методе toString(), однако это класс не имеет аналогичного метода, значит выводиться будет чёрт знает что.
-----
Observation. Метод protected void initialize(Patient patient, Date whenObserved).
Это тот же самый конструктор, но без Показателя. Measurement не может использовать настоящий конструктор своего родителя. Как-то это странно выглядит, однако.
-----
NullQuantity - из серии "тоже сам выдумывай"...
И Observation.isMeasurement() тоже.
И Measurement.amount() ...
Я понимаю, что в книге необязательно размещать весь код, но как-то всё равно неприятно.
-----
"Роль от Типа Показателя к Показателю моделируется как некая квалифицированная роль, поскольку это главный интерфейс класса Тип Показателя. Аналогично показана связь Наблюдения с Типом Показателя, поскольку и здесь существует интерфейс, хотя имеется только одно измерение с прямым указателем на Показатель."
Честно говоря, полная белиберда для меня... Не могу отсюда выудить ни одного полезного момента. Попробую подумать очень хорошенько...

вторник, 29 марта 2011 г.

c. 163 Поиск последнего наблюдения показателя


Неужели у меня тоже получится так сложно?..
-----
Patient
public Phenomenon phenomenonOf (PhenomenonType phenomenonType)
По названию метода никак не понятно, что он возвращает последний показатель указанного типа.
---
public Phenomenon phenomenonOf (PhenomenonType phenomenonType).
return ( latestObservation(phenomenonType) == null ? new NullPhenomenon() : latestObservation(phenomenonType).phenomenon() );
Неясно, что такое NullPhenomenon. Как именно этот объект будет использоваться? Почему не возвращается простой null? Это нужно знать, чтобы правильно его написать.
По идее, NullPhenomenon должен наследовать Phenomenon, однако для Phenomenon не определён конструктор Phenomenon(). Соответственно, нет такого конструктора и у NullPhenomenon. И как это должно заработать?

public class NullPhenomenon extends Phenomenon {
    public NullPhenomenon() {
        super (name, type); // Какие значения я должен сюда положить? Особенно интересует type, который не может быть null.
    }
}
-
Два раза вычисляется latestObservation(phenomenonType).
Observation. Метод phenomenon() нужно дописать самому.
---
private Enumeration observationsOf (PhenomenonType value).
Enumeration e = observations();
Метод observations() тоже нужно писать самому. И если это просто _observations.elements(), то зачем отдельный метод?
---
Observation. Метод whenObserved() тоже не описан. Выдавать просто дату?
---
После "парного программирования" с Лёнькой получился такой код:
public Observation getLatestObservation (ResolutionType resolutionType) {
 List resolutionTypeObservations = this.getObservations (resolutionType);
 return resolutionTypeObservations.isEmpty () ? new NullObservation (resolutionType) : Collections.max (resolutionTypeObservations); 
    }
    
      private List getObservations (ResolutionType resolutionType) {
 List resolutionTypeObservations = new ArrayList();
 for (Observation observation : this.history) {
     if (observation.getResolutionTypeName().equals(resolutionType.getName())) {
  resolutionTypeObservations.add(observation);
     }
 }
 return resolutionTypeObservations;
    }

понедельник, 28 марта 2011 г.

с. 162 Создание наблюдения


Для того, чтобы заработал это код, пришлось написать несколько методов. Надеюсь, их интерфейс я понял и реализовал правильно. Посмотрим, что будет дальше.
А мой код для создания наблюдения получился таким:
ResolutionType sex = new ResolutionType("gender");
 String[] sexes = {"male", "female"};
 sex.addNewResolutionValues (sexes);
 Patient patient = new Patient("Adams");
 Calendar dateAndTime = Calendar.getInstance();
 dateAndTime.set(96, 3, 1);
 Observation observation = 
  new Resolution (sex.getResolutionValue ("male"), dateAndTime);
 patient.addObservation(observation);

Страничка закончилась. Код пока не работает. С интересом перехожу на следующую...