Гради Буч - Объектно-ориентированный анализ и проектирование с примерами приложений на С++ (1158635), страница 36
Текст из файла (страница 36)
Второй по популярности вид классификации - по цвету колеспоезда. Сорок из девяносто трех видов классификации были уникальными (тоесть вид содержал только один экземпляр).Экспериментируя с этим рисунком, мы убедились в правоте Степпа иМихальски. Большинство опрошенных нами предлагали один из двухнаиболее популярных видов классификации (по длине состава и цвету колеспоезда). Один опрошенный предложил следующее: в одной группе составыпомечены буквами, нарисованными с помощью только прямых линий (A, Е, F,H и I), в другой - буквами с кривыми линиями. Вот уж, действительно, примернетривиального мышления.Если вы уже справились с заданием, давайте изменим условия.Представим, что круги обозначают груз с токсичными веществами,прямоугольники - лесоматериалы, все остальные знаки обозначаютпассажиров. Попытайтесь теперь классифицировать изображения и заметьте,как дополнительная информация влияет на вашу точку зрения.В наших опытах большинство опрошенных классифицировало поездапо тому, содержит состав токсичный груз или нет.
Мы заключили, что новыесведения о реальной ситуации облегчают и улучшают классификацию.Какие конкретно свойства надо принимать во внимание? Это зависитот обстановки. Например, цвет автомобиля надо зафиксировать в задаче учетапродукции автомобилестроительного завода, но он не интересен программе,управляющей уличным светофором. Вот почему мы говорим, что нетабсолютного критерия классификации, одна и та же структура классов можетподходить для одной задачи и не годиться для другой. Джеймс пишет: "Нельзяутверждать, что некоторая схема классификации лучше других отражаетструктуру и порядок вещей в природе.
Природе безразличны наши попытки вней разобраться. Некоторые классификации действительно важнее других, нотолько в связи с нашими интересами, а не потому, что они вернее или полнееотражают реальность" [25].Современное западное мышление по большей части насквозьпропитано классической категоризацией, однако, как показывает пример свысокими и низкими людьми, этот подход не всегда работает. Косок отмечает,что "естественные категории не четко отграничены друг от друга.Большинство птиц летает, но не все.
Стул может быть деревянным,металлическим или пластмассовым, а количество ног у него целиком зависитот прихоти конструктора. Практически невозможно перечислитьопределяющие свойства естественной категории, так, чтобы не былоисключений" [26]. Это, действительно, коренные пороки классическойкатегоризации, которые и попытались исправить в современных подходах.Ими мы сейчас займемся.Рис. 4-1. Проблема классификацииКонцептуальная кластеризация. Это более современный вариантклассического подхода.
Он возник из попыток формального представлениязнаний. Степп и Михальски пишут: "При таком подходе сначала формируютсяконцептуальные описания классов (кластеров объектов), а затем мыклассифицируем сущности в соответствии с этими описаниями" [27].Например, возьмем понятие "любовная песня". Это именно понятие, а непризнак или свойство, поскольку степень любов-ности песни едва ли можноизмерить. Но если можно утверждать, что песня скорее про любовь, чем прочто-то другое, то мы помещаем ее в эту категорию.Концептуальную кластеризацию можно связать с теорией нечетких(многозначных) множеств, в которой объект может принадлежать кнескольким категориям одновременно с разной степенью точности.Концептуальная кластеризация делает в классификации абсолютныесуждения, основываясь на наилучшем согласии.Теория прототипов.
Классическая категоризация и концептуальнаякластеризация - достаточно выразительные методы, вполне пригодные дляпроектирования сложных программных систем. Но все же есть ситуации, вкоторых эти методы не работают. Рассмотрим более современный методклассификации, теорию прототипов, предпосылки которой можно найти вкниге по психологии восприятия Рош и ее коллег[28].Существуют некоторые абстракции, которые не имеют ни четкихсвойств, ни четкого определения. Лакофф объясняет эту проблему так: "Поутверждению Вит-тгенстейна (Wittgenstein), существуют категории(например, игры), которые не соответствуют классически образцам, так какнет признаков, свойственных всем играм... По этой причине их можнообъединить так называемой семейной схожестью...
Виттгенстейн утверждает,что у категории игр нет четкой границы. Категорию можно расширить ивключить новые виды игр при условии, что они напоминают уже известныеигры" [29]. Вот почему этот подход называется теорией прототипов: классопределяется одним объектом-прототипом, и новый объект можно отнести кклассу при условии, что он наделен существенным сходством с прототипом.Лаков и Джонсон применяют классификацию на основе прототипов купомянутой выше проблеме стульев. Они замечают, что "мы считаем мягкийпуф, парикмахерское кресло и складной стул стульями не потому, что ониудовлетворяют некоторому фиксированному набору признаков прототипа, нопотому, что они имеют достаточное фамильное сходство с прототипом... Нетребуется никакого общего набора свойств прототипа, которое годилось бы идля пуфика и для парикмахерского кресла, но они оба - стулья, так как каждыйиз них в отдельности похож на прототипный стул, пусть даже каждый посвоему.
Свойства, определяемые при взаимодействии с объектом (свойствавзаимодействия), являются главными при определении семейного сходства"[30].Понятие свойств взаимодействия - центральное для теориипрототипов. В концептуальной кластеризации мы группируем в соответствиис различными концепциями. В теории прототипов классификация объектовпроизводится по степени их сходства с конкретным прототипом.Применение классических и новых теорий. Разработчику,озабоченному постоянно меняющимися требованиями к системе и вечносражающемуся с напряженным планом при ограниченных ресурсах, предметнашего обсуждения может показаться далеким от реальности.
Вдействительности, три рассмотренных подхода к классификации имеютнепосредственное отношение к объектно-ориентированному проектированию.На практике мы идентифицируем классы и объекты сначала посвойствам, важным в данной ситуации, то есть стараемся выделить и отобратьструктуры и типы поведения с помощью словаря предметной области."Потенциально возможных абстракций, как правило, очень много" [31].
Еслитаким путем не удалось построить удобоваримой структуры классов, мыпробуем концептуальный подход. В этом случае в центре внимания уделяетсяповедение объектов, когда они взаимодействуютдруг с другом. Наконец, мы пробуем выделить прототипы иассоциировать с ними объекты.Эти три способа классификации составляют теоретическую основуобъектно-ориентированного подхода к анализу, предлагающего многопрактических советов и правил, которые можно применить дляидентификации классов и объектов при проектировании сложнойпрограммной системы.Объектно-ориентированный анализГраницы между стадиями анализа и проектирования размыты, норешаемые ими задачи определяются достаточно четко.
В процессе анализа мымоделируем проблему, обнаруживая классы и объекты, которые составляютсловарь проблемной области. При объектно-ориентированномпроектировании мы изобретаем абстракции и механизмы, обеспечивающиеповедение, требуемое моделью.22Теперь мы рассмотрим несколько проверенных практикой подходов канализу объектно-ориентированных систем.Классические подходы.
Разные ученые находят различные источникиклассов и объектов, согласующихся с требованиями предметной области. Мыназываем эти подходы классическими, поскольку они опираются наклассическую категоризацию.Например, Шлаер и Меллор предлагают следующих кандидатов в классы иобъекты [32]:•Осязаемые предметыАвтомобили, телеметрические данные,датчики давления•РолиМать, учитель, политик•СобытияПосадка, прерывание, запрос•ВзаимодействиеЗаем, встреча, пересечениеЧто-то в этом роде предлагает Росс, исходя из перспектив моделирования базданных [33]:•ЛюдиЧеловеческие существа, выполняющиенекоторые функции•Места•Предметыгруппа объектовОбласти, связанные с людьми или предметамиОсязаемый материальный объект или•ОрганизацииФормально организованнаясовокупность людей, ресурсов, оборудования, которая имеетопределенную цель и существование которой в целом не зависит отиндивидуумов•КонцепцииПринципы и идеи, сами по себенеосязаемые, но предназначенные для организации деятельности и/илиобщения, или же для наблюдения за ними•СобытияНечто случающееся с чем-то в заданное времяили последовательноКоад и Иордан предложили свой список [34]:•СтруктурыОтношения "целое-часть" и "общеечастное"•Другие системыприложениеВнешние системы, с которыми взаимодействует•УстройстваУстройства, с которымивзаимодействует приложение•СобытиязапомненыПроисшествия, которые должны быть•Разыгрываемые ролиРоли, которые исполняют пользователи,работающие с приложением22Обозначения и процессы, описанные в этой книге, в равной степени относятся кфазам и анализа и проектирования (в традиционном понимании), как мы увидим вглаве 6.