Strategic research directions in object-oriented programming

This report is an overview of the eld of object oriented programming. It presents a brief historical perspective of the eld, then summarizes some major achievements. Four strategic research directions are then presented: technologiesintegration,software components, distributedprogramming, and open implementations. Object-oriented programming (OOP) is a technique for improving productivity, quality, and innovation in software development. Whereas procedures are sequences of statements that specify a transformation from inputs to outputs, objects are collections of operations sharing a state that provide persistent services over time. A procedure-oriented system consists of sequentially executed procedures, while an object-oriented system consists of a collection of interacting objects. Procedures express algorithms that implement computable functions, while objects express embedded systems that implement services over time, like banking or airline-reservation applications. Objects typically possess mutable state, operations that change their state, and operations that cause them to in turn invoke operations on other objects. Operations may be described through a well deened interface providing information about attributes and actions visible from clients. The implementation of each object is encapsulated { hidden from clients of the object. Object-oriented programming is about modeling, reusability, and integration: it provides modeling primitives, a framework for high-level reusability, and integrating mechanisms for organizing knowledge about application domains. |Modeling OOP reeects the structure of the application domain by the structure of the program, because there is a direct one-to-one correspondence between objects of the application domain and objects of the computational model. Its concepts of class, subclass, inheritance, and virtual function allow structure at the level of primitive components to be extended to structure at the level of concepts, classiication, and composition. If the application domain is the department of 1 The contributors to this report are

[1]  Ole Lehrmann Madsen Open issues in object‐oriented programming—A scandinavian perspective , 1995, Softw. Pract. Exp..

[2]  Daniel G. Bobrow,et al.  Common lisp object system specification , 1988, SIGP.

[3]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[4]  James O. Coplien,et al.  Pattern languages of program design , 1995 .

[5]  Satoshi Matsuoka,et al.  Analysis of inheritance anomaly in object-oriented concurrent programming languages , 1993 .

[6]  David A. Moon,et al.  Flavors: Message Passing in the Lisp Machine. , 1980 .

[7]  Randall B. Smith,et al.  Self: The power of simplicity , 1987, OOPSLA 1987.

[8]  Wolfgang Pree,et al.  Design Patterns for Object-Oriented Software Development , 1994, Proceedings of the (19th) International Conference on Software Engineering.

[9]  Jørgen Lindskov Knudsen,et al.  Using object-orientation as a common basis for system development education , 1996, SIGP.

[10]  David Robson,et al.  Smalltalk-80: The Language and Its Implementation , 1983 .

[11]  Brad J. Cox,et al.  Object-oriented programming ; an evolutionary approach , 1986 .

[12]  Douglas C. Schmidt,et al.  Using design patterns to develop reusable object-oriented communication software , 1995, CACM.

[13]  James Coplien,et al.  Industrial experience with design patterns , 1996, Proceedings of IEEE 18th International Conference on Software Engineering.

[14]  Gregor Kiczales,et al.  Beyond the Black Box: Open Implementation , 1996, IEEE Softw..

[15]  James Gosling,et al.  The Java Programming Language" The Java Series , 1996 .

[16]  Ole Lehrmann Madsen,et al.  Object-oriented programming in the BETA programming language , 1993 .

[17]  Rachid Guerraoui Modular Atomic Objects , 1995, Theory Pract. Object Syst..

[18]  Bjarne Stroustrup,et al.  The C++ Programming Language, First Edition , 1986 .

[19]  Karl Lieberherr,et al.  Adaptive Object-Oriented Software: The Demeter Method with Propagation Patterns , 1995 .

[20]  Akinori Yonezawa,et al.  Abstracting Object Interactions Using Composition Filters , 1993, ECOOP Workshop.

[21]  Lodewijk Bergmans,et al.  Composing Synchronization and Real-Time Constraints , 1995, J. Parallel Distributed Comput..

[22]  Daniel Ingalls,et al.  The Smalltalk-76 Programming System. , 1978 .