Парадокс расширения-специализации
Парадокс расширения-специализации
Наследование иногда рассматривается как расширение, а иногда как специализация. Хотя эти два толкования как будто противоречат друг другу, оба они истинны - но с разных точек зрения.
Все снова зависит от того, смотрим ли мы на класс как на тип или как на модуль. В первом случае наследование, представляющее отношение "является", - это специализация: "собака" более специальное понятие, чем "животное", а "прямоугольник" - чем "многоугольник". Как уже отмечалось, это соответствует отношению включения подмножества во множество: если B наследник A, то множество объектов, представляющих во время выполнения B является подмножеством соответствующего множества для A.
Но с точки зрения модуля, при которой класс рассматривается как поставщик служб, B реализует службы A и свои собственные. Малому числу объектов часто позволяют иметь больше компонентов, так как это приводит к увеличению информации. Переходя от произвольных животных к собакам, мы можем добавить специфическое для них свойство "лаять", а при переходе от многоугольников к прямоугольникам можно добавить компонент "диагональ". Поэтому по отношению к реализованным компонентам отношение включения направлено в другую сторону: компоненты, применимые к экземплярам A, являются подмножеством компонент, применимых к экземплярам B.
Таким образом, наследование является специализацией с точки зрения типов и расширением с точки зрения модулей. Это и есть парадокс расширения-специализации: чем больше применяемых компонентов, тем меньше объектов, к которым они применяются.
Парадокс расширения-специализации - это одна из причин для устранения термина "подкласс", предполагающего понятие "подмножество". Другой, уже отмеченной, является встречающееся в литературе сбивающее с толку использование термина "подкласс" для обозначения как прямого, так и непрямого наследования. Эти проблемы не возникают при использовании точно определенных терминов: наследник, потомок и собственный потомок и двойственных к ним терминов: родитель, предок и собственный предок.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Симуляция частичной специализации по виду аргумента шаблона
Симуляция частичной специализации по виду аргумента шаблона Использовать полученную метафункцию IsPointer‹T› для симуляции частичной специализации по виду аргумента шаблона можно примерно следующим образом:// Реализация общего случая: T не является указателем. template‹class
R.18.1 Расширения
R.18.1 Расширения В этом разделе перечисляются основные расширения языка С, введенные в
16.9. Специализации шаблонов классов A
16.9. Специализации шаблонов классов A Прежде чем приступать к рассмотрению специализаций шаблонов классов и причин, по которым в них может возникнуть надобность, добавим в шаблон Queue функции-члены min() и max(). Они будут обходить все элементы очереди и искать среди них
16.10. Частичные специализации шаблонов классов A
16.10. Частичные специализации шаблонов классов A Если у шаблона класса есть несколько параметров, то можно специализировать его только для одного или нескольких аргументов, оставляя другие неспециализированными. Иными словами, допустимо написать шаблон, соответствующий
Расширения
Расширения Слово extensible (англ. расширяемый) в расшифровке аббревиатуры XSLT исторически происходит из названия языка XSL, но оно вполне применимо и к самому XSLT: спецификация этого языка позволяет разрабатывать собственные функции и элементы и использовать их в
Расширения
Расширения Xalan С++ позволяет вызывать в XSLT-преобразовании пользовательские функции расширения, написанные на языке С. Кроме того, в дополнение к базовым функциям XSLT, Xalan С++ реализует несколько наиболее часто используемых функций, например, функцию nodeset. В текущей версии (1.2)
Расширения
Расширения Расширения для Saxon могут быть созданы на языке Java в виде функций и элементов. Saxon отличает возможность использования Java-функций расширения, написанных для других Java-процессоров (в частности Xalan и Oracle XSLT Processor).Для программирования элементов расширения Saxon
NASDAQ: от феномена к иллюзии через парадокс Сергей Голубицкий
NASDAQ: от феномена к иллюзии через парадокс Сергей Голубицкий Опубликовано 14 июня 2013 Принято считать, что технологические акции на фондовом рынке пережили свой звездный час на исходе ХХ столетия, а затем, после схлопывания доткомовского пузыря в
Парадокс линуксописательства
Парадокс линуксописательства LinuxFormat, #141 (февраль 2011)Уже много лет я задаю себе вопрос: для кого пишут авторы, сочиняющие про Linux сотоварищи? И для чего они это делают?Конечно, ответ на второй вопрос очевиден: они пишут о том, что им интересно. Потому что писать можно только о
Парадокс концентрации: почему деятельность в сфере информационных технологий стягивается к столицам, несмотря на их дороговизну? Михаил Ваннах
Парадокс концентрации: почему деятельность в сфере информационных технологий стягивается к столицам, несмотря на их дороговизну? Михаил Ваннах Опубликовано 04 июля 2013 Есть один парадокс, весьма интересный и крайне важный для всех, кто занят в
Парадокс Уоллеса, или Почему мы обладаем столь крупным мозгом Дмитрий Шабанов
Парадокс Уоллеса, или Почему мы обладаем столь крупным мозгом Дмитрий Шабанов Опубликовано 21 апреля 2013 В результате естественного отбора дикарь был бы наделён мозгом, лишь слегка превосходящим мозг обезьяны, тогда как на деле его мозг лишь
Парадокс информационной ответственности Сергей Голубицкий
Парадокс информационной ответственности Сергей Голубицкий Опубликовано 02 сентября 2013 Судя по всему, тема непрекращающихся информационных сливов становится ключевой в современном медийном потоке. Каждый день я читаю о борьбе государственных и