суббота, 12 февраля 2011 г.

с. 155 Оптимизация диаграммы

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

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

Пришла в голову интересная идея...
Показатель определяется Диапазоном, однако для того, чтобы выбрать Диапазон, нужно ведь произвести какое-то измерение. То есть сначала что-то измеряем, находим значение, а затем смотрим, к какому диапазону это значение относится. Таким образом, любой Диапазон можно сопроводить Измерением, а любое Измерение можно сопоставить с некоторым Диапазоном. Что и этого следует?
Вариант первый. Ассоциировать Диапазон с Измерением. В этом случае любое Наблюдение будет Показателем. Однако любой показатель должен сопровождаться Измерением.
Вариант второй. Ассоциировать Измерение с Диапазоном. То есть каждое Измерение можно сопоставить с некоторым Диапазоном. В этом случае Показатель не должен иметь ввиду какое-то Измерение. Зато для каждого Измерения нужно искать свой Диапазон. И в чём тогда будет различие между Измерением и Показателем? Тем, что Измерение будет расширенным вариантом показателя, за счёт обладания точным значением измерения.
В любом случае, можно выделить такие классы: с измерением, с диапазоном и с обоими понятиями вместе. Последний класс расширяет первые два. Какую цепочку наследования выбрать?
Что на самом деле является расширением? Измерение расширяет диапазон или диапазон расширяет измерение? Что первично, а что вторично? Что уточняет другое? 38 градусов - это какая температура? А высокая температура - это сколько градусов?
Не хочется мне что-то уже ничего менять. Пускай остаётся так, как есть. Посмотрим, что из этого получится.

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

c. 154 Диаграмма объектов наблюдения

При построении диаграммы объектов (диаграммы экземпляров) возникли трудности с определением Диапазона для Типа Показателя "Группа крови". Для группы крови нельзя указать верхнюю и нижнюю границу, она просто "Первая", к примеру. В общем, получилось, что Диапазон может применяться только для исчисляемых величин, которые имеют единицы измерения и значение, определяемое в этих единицах. Для неисчисляемых величин нужно ввести новое понятие вместо Диапазона. Или просто пока принять, что обязательным полем для Диапазона является только "название". Может быть, в дальнейшем такая детализация и не понадобится. У Фаулера, по крайней мере, её нет.
А вот Фаулер и сам говорит про Диапазон. Его идея относительно Количественного Диапазона может быть решением проблемы, так как подразумевает возможность создания других типов диапазонов, реализующих общий интерфейс Диапазон.

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

с. 153 Сравнение диаграмм

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