Skip to content

Надкласс — подкласс

Мы обсуждали уже, что и категории могут быть тоже категоризированы. Давайте поймём, что это значит в более строгом смысле, и как это может быть выражено в новых терминах.

Оказывается, есть два формальных (точно определённых, онтологических) отношения, которые могут быть так описаны. Сначала обсудим первое из них.

Мы говорили, что категория «Шуруповёрт Makita» относится к категории «Шуруповёрт»

На «бытовом» уровне мы понимаем, что любой шуруповёрт, выпущенный фирмой Makita, является шуруповёртом.

Мы объединяем все столы (конкретные физические объекты) в класс «Стол», это отношение «экземпляр класса – класс».

Некоторые из столов (сделанные из дерева) входят в другой класс — «Деревянный стол».

При этом все деревянные столы также входят в класс «Стол», то есть один класс включает в себя все экземпляры другого класса.

Мы говорим, что «Деревянный стол» - подкласс класса «Стол». А «Стол» - надкласс для класса «Деревянный стол».

Все предметы класса «Стол» также входят в класс «Мебель». Получается, что «Стол» — надкласс для «Деревянный стол» и подкласс для «Мебель».

Точно так же мы понимаем, что любая лошадь – является непарнокопытным, любая лошадь является позвоночным. В обратную сторону такого соотношения нет – не любое позвоночное является лошадью, есть ещё множество других позвоночных, коровы и овцы, например.

Итак, если все элементы класса А принадлежат также классу Б – мы говорим, что класс А является подклассом класса Б, а класс Б – является надклассом класса А. Все объекты, которые входят в подкласс, также входят в надкласс.

На картинке выше – белые желуди (класс «Белый желудь») являются подклассом класса «Желудь». В класс «Желудь» входят разные индивидуальные жёлуди. В класс «Белый желудь» входят только белые жёлуди.

Для отношения надкласс-подкласс есть гораздо меньше синонимов. Это отношение называют отношением специализации – подкласс является более узкой выборкой элементов надкласса, это «более специальный» набор элементов. Можно также услышать, что «класс А входит в класс Б», «класс Б шире класса А».

Обратное отношение называют также генерализацией, так как оно отражает обобщение понятий от подклассов к надклассам.. То же самое имеют в виду, когда говорят, что надклассы выражают более абстрактные понятия, чем их подклассы. Переход к надклассу – это обобщение, избавление от каких-то черт, свойств и признаков. Поэтому переход от класса к надклассу могут называть абстрагированием, а обратный переход, к подклассу – конкретизацией. Но с этими терминами надо быть осторожнее – иногда их используют и для описания переходов от экземпляров к классам и наоборот!

Математики скажут «множество А является подмножеством множества Б» и напишут “А***⊂***Б”.

Чтобы определить подкласс для какого-то класса (определить эту более узкую выборку) – обычно указывают такое дополнительное свойство, чтобы примеров стало меньше.

Признак «сделаны из дерева» является отличительным свойством, определяющим класс «Деревянный стол», который уже, чем просто класс «Стол».

И наоборот, если вы хотите отразить в модели новое свойство– определите класс обладающих им объектов как подкласс более широкого класса.

Класс «Инструмент Makita*»* вводится для того, чтобы можно было отмоделировать свойство«изготовлен фирмой Makita».

Заметим, что иногда люди используют слово «например» не совсем так, как мы обсуждали в предыдущем разделе. Можно услышать такое: «продукты, например, овощи». То есть в качестве примера приводится не экземпляр класса, а его подкласс (ведь понятно, что «Овощ» - подкласс для «Продукт питания»). Хорошо ли, что в ответ на просьбу привести пример вам отвечают чуть менее абстрактно, указывают более узкий класс? Этого может оказаться вполне достаточно для понимания, но это редко проясняет ситуацию до конца. Мы в руководстве будем следить за различением примеров (экземпляров) и более узких классов (подклассов).