Включение (концептно-ориентированное программирование)
Материал из Википедии — свободной энциклопедии
Каждый концепт в концептно-ориентированном программировании (КоП) имеет родительский концепт, который указывается с помощью отношения включения. Родительский концепт также называется базовым или над-концептом (супер-концептом). Включение концептов является обобщением отношения наследования классов в ООП.
Иерархия включения концептов используется для определения пространства, где объекты будут существовать во время выполнения. Каждый концепт внутри иерархии включения создает отдельные экземпляры (объекты и ссылки), которые существуют независимо от других экземпляров. В отличие от ООП, части объекта в КоП имеют свои собственные ссылки, описывающие их расположение в контексте родительского объекта. Таким образом, каждый базовый объект может иметь много объектов-расширений. Если наследование понимается как отношение 'IS A', то включение понимается как отношение 'IS IN' (быть внутри).
В следующем примере концепт Button
включен в концепт Panel
:
concept Panel reference { int panelId; ... } object { int color; ... } concept Button in Panel reference { int buttonId; ... } object { String text; ... }
Если бы это было наследование, то каждая кнопка была бы панелью, т.е. экземпляр концепта Button
создавал бы также экземпляр концепта Panel
. Обе части имели бы одну примитивную ссылку для обозначения кнопок, являющейся также панелью (эти части существуют рядом в памяти).
В КоП эти концепты создают отдельные объекты со своими собственными (локальными) ссылками. Внутри одного базового объекта-панели может существовать много объектов-кнопок. Эти кнопки идентифицируются своими собственными ссылками, описанными в классе ссылки. Полный идентификатор кнопки состоит из двух сегментов: ссылка на панель и ссылка на кнопку. Такой идентификатор называется комплексной ссылкой.
Когда к объекту осуществляется доступ, скажем, необходимо установить текст кнопки, то процедура доступа начинает с базовой ссылки и затем продолжается в дочерних сегментах ссылки. Другими словами, панель будет перехватывать любой доступ к своим внутренним объектам, таким как кнопки. Таким образом, любой объект может быть также контейнером, играющим роль среды для своих дочерних объектов (расширений).
[править] См. также
- Концептно-ориентированное программирование
- Концепт
- Включение
- Комплексная ссылка
- Метод продолжения
- Двойственные методы
- Концептно-ориентированная модель