Concept-Oriented Programming

Object-oriented programming (OOP) is aimed at describing the structure and behaviour of objects by hiding the mechanism of their representation and access in primitive references. In this article we describe an approach, called concept-oriented programming (COP), which focuses on modelling references assuming that they also possess application-specific structure and behaviour accounting for a great deal or even most of the overall program complexity. References in COP are completely legalized and get the same status as objects while the functions are distributed among both objects and references. In order to support this design we introduce a new programming construct, called concept, which generalizes conventional classes and concept inclusion relation generalizing class inheritance. The main advantage of COP is that it allows programmers to describe two sides of any program: explicitly used functions of objects and intermediate functionality of references having cross-cutting nature and executed implicitly behind the scenes during object access.

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

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

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

[4]  Thomas R. Gruber,et al.  A Translation Approach to Portable Ontologies , 1993 .

[5]  Martin P. Ward Language-Oriented Programming , 1994, Softw. Concepts Tools.

[6]  Bjarne Stroustrup,et al.  Concepts: linguistic support for generic programming in C++ , 2006, OOPSLA '06.

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

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

[9]  Lynn Andrea Stein,et al.  Delegation is inheritance , 1987, OOPSLA '87.

[10]  Alexandr A. Savinov,et al.  Concepts and Concept-Oriented Programming , 2008, J. Object Technol..

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

[12]  Bent Bruun Kristensen,et al.  Abstraction mechanisms in the BETA programming language , 1983, POPL '83.

[13]  Alexandr A. Savinov,et al.  An Approach to Programming Based on Concepts , 2007, ArXiv.

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

[15]  Alexandr Savinov,et al.  Hierarchical Multidimensional Modelling in the Concept-Oriented Data Model , 2005, CLA.

[16]  Christopher G. Lasater,et al.  Design Patterns , 2008, Wiley Encyclopedia of Computer Science and Engineering.

[17]  William Kent A RIGOROUS MODEL OF OBJECT REFERENCE, IDENTITY, AND EXISTENCE , 1994 .

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

[19]  Marvin Minsky,et al.  A framework for representing knowledge , 1974 .

[20]  Context-Oriented Programming for Pervasive Systems , 2002 .

[21]  Roel Wieringa,et al.  Object Identifiers, Keys, and Surrogates: Object Identifiers Revisited , 1995, Theory Pract. Object Syst..

[22]  Thomas R. Gruber,et al.  Toward principles for the design of ontologies used for knowledge sharing? , 1995, Int. J. Hum. Comput. Stud..

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

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

[25]  Bent Bruun Kristensen,et al.  The BETA Programming Language , 1987, Research Directions in Object-Oriented Programming.

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

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

[28]  Alexandr A. Savinov Query by Constraint Propagation in the Concept-Oriented Data Model , 2006, Comput. Sci. J. Moldova.

[29]  Henry Lieberman,et al.  Using Prototypical Objects to Implement Shared Behavior in Object Oriented Systems , 1986, OOPSLA.

[30]  Henry Lieberman,et al.  Using prototypical objects to implement shared behavior in object-oriented systems , 1986, OOPLSA '86.

[31]  Christophe Dony,et al.  Split objects: a disciplined use of delegation within objects , 1996, OOPSLA '96.

[32]  G. G. Stokes "J." , 1890, The New Yale Book of Quotations.

[33]  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.

[34]  Andry Rakotonirainy,et al.  Context-oriented programming , 2003, MobiDe '03.

[35]  Cyril S. Ku,et al.  Design Patterns , 2008, Wiley Encyclopedia of Computer Science and Engineering.

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

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

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