Concepts and Concept-Oriented Programming

In the paper we introduce a new programming language construct, called concept, which is defined as a pair of two classes: one reference class and one object class. Instances of the reference class are passed-by-value and are intended to indirectly represent objects. Instances of the object class are passed-by-reference. Each concept has a parent concept specified by means of the concept inclusion relation. This approach where concepts are used instead of classes is referred to as concept-oriented programming (CoP). CoP is intended to generalize object-oriented programming (OOP). Particularly, concepts generalize conventional classes and concept inclusion generalizes class inheritance in OOP. This approach allows the programmer to describe not only objects but also references which are made integral and completely legal part of the program. Program objects at run-time exist within a virtual hierarchal address space and CoP provides means to effectively design such a space for each concrete problem domain.

[1]  Edsger W. Dijkstra,et al.  A Discipline of Programming , 1976 .

[2]  Andreas Paepcke Metaobject Protocols: Why We Want Them and What Else They Can Do , 1993 .

[3]  Alexandr Savinov Concept-Oriented Model , 2009 .

[4]  Gregor Kiczales,et al.  Aspect-oriented programming , 2001, ESEC/FSE-9.

[5]  Alexandr Savinov,et al.  Concept as a Generalization of Class and Principles of the Concept-Oriented Programming , 2005, Comput. Sci. J. Moldova.

[6]  Yannis Smaragdakis,et al.  Implementing Layered Designs with Mixin Layers , 1998, ECOOP.

[7]  Alexandr A. Savinov,et al.  Grouping and aggregation in the concept-oriented data model , 2006, SAC.

[8]  Daniel G. Bobrow,et al.  Metaobject protocols: why we want them and what else they can do , 1993 .

[9]  Bjarne Stroustrup,et al.  The C++ programming language (2nd ed.) , 1991 .

[10]  Robert Bruce Findler,et al.  Super and inner: together at last! , 2004, OOPSLA '04.

[11]  Daniel G. Bobrow,et al.  Book review: The Art of the MetaObject Protocol By Gregor Kiczales, Jim des Rivieres, Daniel G. and Bobrow(MIT Press, 1991) , 1991, SGAR.

[12]  Alexander V. Voinov Netlog - A Concept Oriented Logic Programming Language , 1992, LPAR.

[13]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[14]  Robert Hirschfeld,et al.  Language Constructs for Context-oriented Programming , 2005 .

[15]  B. Mcconnel CONCEPT-ORIENTED PROGRAMMING , 1999 .

[16]  Bjarne Stroustrup,et al.  C++ Programming Language , 1986, IEEE Softw..

[17]  Alexandr A. Savinov,et al.  Concept-Oriented Programming , 2008, ArXiv.

[18]  Alexandr A. Savinov,et al.  Concepts and their Use for Modelling Objects and References in Programming Languages , 2007, ArXiv.

[19]  William R. Cook,et al.  Mixin-based inheritance , 1990, OOPSLA/ECOOP '90.