В следующих статьях описывается новый подход к программированию:
Неформальное введение в концептно-ориентированное программирование
Concept as a generalization of class and principles of the concept-oriented programming
Основная цель состоит в предоставлении средств
опосредованного представления и доступа к объектам. Это означает, что программист имеет возможность описать не только структуру и функции объектов, но также структуру и функции
ссылок, которые используются для их представления. В КОП ссылки являются таким же полноценным элементом программы, как и объекты.
Для описания объектов и ссылок предлагается новая конструкция, называемая
концептом. Концепт это пара классов, состоящая из одного
класса объектов и одного
класса ссылок. Концепт без класса ссылки это самый обычный класс из ООП. Экземпляры класса объектов называются объектами и передаются только по ссылке (формат которой в КОП может определяться программистом). Экземпляры класса ссылок передаются только по значению и предназначены для представления объектов. В концептно-ориентированной программе концепты используются вместо классов.
Концепты связаны отношением
включения, которое обобщает наследование. Объект концепта представляется ссылками его базового концепта, В общем случае объект представляется последовательностью ссылок всех своих базовых концептов. Это то же самое, что и иерархическая адресация, например, почтовые адреса. Во время выполнения объекты живут внутри иерархии, т.е. иерархии существует не только во время компиляции, но и сохраняется и поддерживается во время выполнения. В контексте каждого объекта может существовать множество дочерних объектов. В этом смысле каждый объект работает как контейнер или жизненное пространство для внутренних объектов (за которые он в ответе).
Зачем это нужно? Делается общее предположение, объекты живут в структурированном пространстве, разделенные границами. Доступ в этом случае всегда опосредован, т.е. прямого доступа не существует. Чтобы достать объект, скажем, выполнить его метод, необходимо пересечь промежуточные границы. На этих границах в процессе доступа выполняется множество важных и полезных функций. Задачей программиста в этом случае (в КОП) является описание того, как объекты представляются, и что будет происходить при доступе к ним.