общую информацию о людях, занимающихся разведением цветов, и ожидаю, что Фло,
будучи представителем этой категории, в общих чертах будет соответствовать шаблону.
Мы можем использовать термин Florist для описания категории (или класса) всех людей,
занимающихся цветоводством, собрав в нее (категорию) все то общее, что им
свойственно. Эта операция является вторым принципом объектно-ориентированного
программирования:
Все объекты являются представителями, или экземплярами, классов. Метод,
активизируемый объектом в ответ на сообщение, определяется классом, к которому
принадлежит получатель сообщения. Все объекты одного класса используют одни и те же
методы в ответ на одинаковые сообщения.
Проблема сообщества объектно-ориентированных программистов заключается в
распространенности различных терминов для обозначения сходных идей. Так, в языке
Object Pascal класс называется «объектом» (тип данных object), а надклассы (которые
вкратце будут описаны ниже) известны как родительский класс, класс-предок и т. д.
Словарь-глоссарий в конце этой книги поможет вам разобраться с нестандартными
терминами. Мы будем использовать соглашение, общее для объектно-ориентированных
языков программирования: всегда обозначать классы идентификаторами, начинающимися
с заглавной буквы. Несмотря на свою распространенность, данное соглашение не является
обязательным для большинства языков программирования.
1.4.4. Иерархии классов и наследование
О Фло у меня имеется больше информации, чем содержится в категории Florist. Я знаю,
что она разбирается в цветах и является владелицей магазина (shopkeeper). Я
догадываюсь, что, вероятно, меня спросят о деньгах в процессе обработки моего запроса и
что после оплаты мне будет выдана квитанция. Все вышеперечисленное справедливо
также для зеленщиков, киоскеров, продавцов магазинов и т. д. Поскольку категория Florist
является более узкой, чем Shopkeeper, то любое знание, которым я обладаю о категории
Shopkeeper, справедливо также и для Florist, и, в частности, для Фло.
Один из способов представить организацию моего знания о Фло — это иерархия
категорий (рис. 1.1). Фло принадлежит к категории Florist; Florist является подкатегорией
категории Shopkeeper. Далее, представитель Shopkeeper заведомо является человеком, то
есть принадлежит к категории Human — тем самым я знаю, что Фло с большой
вероятностью является двуногим существом. Далее, категория Human включена в
категорию млекопитающих (Mammal), которые кормят своих детенышей молоком, а
млекопитающие являются подкатегорией животных (Animal) и, следовательно, дышат
кислородом. В свою очередь животные являются материальными объектамидуумов с
различными линиями наследования. Классы представляются в виде иерархической
древовидной структуры, в которой более абстрактные классы (такие, как Material Object
или Animal) располагаются в корне дерева, а более специализированные классы и в
конечном итоге индивидуумы располагаются на его конце, в ветвях. Рисунок 1.2
показывает такую иерархию классов для Фло. Эта же самая иерархия включ ает в себя
мою жену Бет, собаку Флеш, Фила — утконоса, живущего в зоопарке, а также цветы,
которые я послал своей бабушке.
PDF created with pdfFactory Pro trial version www.pdffactory.com