среда, 23 февраля 2011 г.

с. 157 Момент последнего наблюдения


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

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

То есть интересует не просто последнее наблюдение, а последнее классифицированное наблюдение. А какой в этом смысл? Допустим, последнее наблюдение для типа показателя "Сердечный ритм" было измерением, и оказалось, что результат равен "90 ударов в минуту", а вот предпоследнее наблюдение было определением показателя и результат был "высокий". И что нам выдадут методы? Несоответствующие друг другу результаты. Ладно, может быть, я не так понял. Но зачем два метода? Почему нельзя обойтись простым последнееНаблюдение(ТипПоказателя) ? Этот метод выдаст результат в зависимости от реального реализатора интерфейса Наблюдение: если это было Измерение, то будет "90 ударов в минуту", если Показатель, то "высокий".
Из конкретного измерения можно, в принципе, определить диапазон и, соответственно, Показатель. В обратную сторону такое не сработает. Но кто будет заниматься этим сопоставлением? Это тот самый кто-то, занимающийся обобщением для Показателя, но которого нет на диаграмме. Если он на ней появится, то в Измерении можно будет создать метод, запрашивающий диапазон, соответствубщий результату.


Ещё один момент... Наблюдение на диаграмме Фаулера связано с Показателем. Однако Показателя для некоторого Наблюдения может и не быть (0...1). Тогда что это за наблюдение? Ни Показателя, ни Измерения. Смысл такого объекта Наблюдение?..

вторник, 22 февраля 2011 г.

с. 156 Диаграмма уровня спецификации

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