Целью науки является описание взаимодействий во вселенной.
Большая часть работы в науке при продвижении к цели заключается
просто в построении генеалогических деревьев. Когда энтомолог
возвращается с Амазонки с неизвестным ранее насекомым в банке, то
главной его заботой является определение, где это насекомое рас-
полагается в гигантской схеме, на которой собраны научные назва-
ния всех других насекомых. Аналогичные схемы составлены для рас-
тений, рыб, млекопитающих, рептилий, химических элементов, эле-
ментарных частиц и космических галактик. Все они выглядят как ге-
неалогические деревья: с единой всеобщей категорией в вершине и
все увеличивающимися число категорий, которые лежат ниже этой
единственной категории, и разворачиваются веером по мере прибли-
жения к границам разнообразия.
Внутри категории "насекомые" имеется два подразделения: на-
секомые с видимыми крыльями и насекомые со спрятанными крыльями
или вообще бескрылые. Среди крылатых имеется большее число кате-
горий; мотыльки, бабочки, мухи и т.д. Каждая категория содержит
большое число подкатегорий, а ниже этих подкатегорий может иметь-
ся даже еще большее число подкатегорий (см. Рис. 9.1).
Этот процесс классификации называется таксономией. Это прек-
расная начальная метафора для механизма наследования в объект-
но-ориентированном программировании.
Вопросами, которые задает ученый при попытке классификации
некоторого животного или объекта, являются следующие. В чем этот
объект похож на другие объекты из общего класса? В чем он отлича-
ется от других объектов? Каждый конкретный класс имеет множество
свойств поведения и характеристик, определяющих этот класс. Уче-
ный начинает с вершины конкретного генеалогического дерева и про-
ходит по дочерним областям, задавая себе эти вопросы. Наивысший
уровень самый общий, а вопросы самые простые, например, крылатое
или бескрылое? Каждый последующий уровень является более специфи-
ческим, чем предыдущий, и менее общим. В конце концов, ученый до-
бирается до точки подсчета волосков на третьем сегменте задней
ноги насекомого - что воистину специфично. (И скорее всего о нем
следует сказать, что он не энтомолог.)
B.Pascal 7 & Objects /UG - 197 -
┌───────────┐
│ насекомые │
└─┬───────┬─┘
┌───────────────┘ │
│ │
┌────┴─────┐ ┌───┴───────┐
│ крылатые │ │ бескрылые │
└┬───┬───┬─┘ └───────────┘
┌────────┘ │ └───────┐
┌───┴──────┐┌────┴────┐┌─────┴────┐
│ мотыльки ││ бабочки ││ мухи │
└──────────┘└─────────┘└──────────┘
Рис. 9.1 Таксономическая схема насекомых.
Важно помнить то, что если характеристика однажды определе-
на, то все категории, расположенные ниже данного определения, со-
держат эту характеристику. Таким образом, как только вы определи-
ли насекомое, как члена отряда diptera (мухи), то вам не следует
отмечать снова, что у мух имеется одна пара крыльев. Разновид-
ность насекомых, которую мы зовем мухи, наследует эту характерис-
тику от своего отряда.
Как вы поняли, объектно-ориентированное программирование в
большой степени является процессом построения генеалогического
дерева для структур данных. Одной из важных особенностей, которые
объектно-ориентированное программирование добавляет традиционным
языкам типа Паскаль, является механизм, с помощью которого типы
данных могут наследовать характеристики более простых, более об-
щих типов. Этим механизмом является наследование.