面向概念的编程
——介绍
Concept-Oriented Programming (COP)
在2007年11月中旬,老外Alexandr Savinov提出了一个“面向概念的编程”的新概念,其方法概述为用概念(concept)来代替目前的常规类(conventional class)、用包含关系(inclusion relation)来取代目前的继承(inheritance)。
它推广了OOP概念,允许编程者对交叉关系进行模块化。
在面向概念的编程中,在通过定制行为的定制引用的对象访问期间,大量的函数被隐含地执行。这个新方法主要概括如下:
1)用概念来取代类
在OOP中,使用概念来取代类。概念由一对类来定义:一个引用类(reference class)和一个对象类(object class)。如果一个概念没有定义其引用类,那么它相当于常规类(传统类)。对象类和引用类都带有一些结构和行为方法。
2)包含代替继承
在CoP中使用包含关系类似于在OOP中使用继承。包含扩展了继承的概念,如果一个概念没有定义其引用类,那么包含就等同于继承。一般而言,包含关系用IS-IN关系来解释,而继承是用IS-A来解释。作为其结果之一,父对象可以有许多孩子。另一个结果是对象引用有一个层次结构。
3)双重方法(Dual Methods)
每一个概念为每个方法都提供了两个定义,分别在引用类和对象类中。然而,当方法被使用
4)交叉关系(Cross-cutting concerns)
双亲截取所有的独立于子对象的访问请求的能力使其在已存在的程序中模块化交叉关系称为可能。这意味着双亲概念在AOP中扮演了一个‘方面’的角色,但是它和AOP的方面是完全不同的。
5)数据模型(Data Modelling)
CoP是数据模型新方法的一部份,它被命名为面向概念的数据模型(concept-oriented data model,CoM)。这个数据模型由两部分组成:特征模型(identity modeling)和实体模型(entity modeling)。正因为概念是由这两部份来定义的。CoP用特征模型进行处理,从这点来看,在整合数据模型和编程中,它是很有前途的。