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

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

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

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

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

Комментариев нет:

Отправить комментарий