The Common Sense of Object Oriented Programming
Last updated at 6:40 am UTC on 5 November 2020
The Common Sense of Object Oriented Programming
Trygve Reenskaug
Department of Informatics, University of Oslo, Norway
Home: http://folk.uio.no/trygver
http://heim.ifi.uio.no/trygver/2009/commonsense.pdf
Abstract
The essence of object orientation is that networks of collaborating objects work together to achieve a common goal.
Surely, the common sense of object oriented programming should reflect this essence with code that specifies how the objects collaborate.
Our industry has, unfortunately, chosen differently and code is commonly written in terms of classes.
A class tells us everything about the properties of the individual objects that are its instances.
It does not tell us how these instances work together to achieve the system behavior.
The result is that our code does not reveal everything about how a system will work.
This is clearly not satisfactory, and we need a new paradigm as the foundation for more expressive code.
We propose that DCI (Data-Context-Interaction) is such a paradigm.
DCI separates a program into different perspectives where each perspective focuses on certain system properties.
- Code in the Data perspective specifies the representation of stand-alone objects.
- Code in the Context perspective specifies runtime networks of interconnected objects.
- Code in the Interaction perspective specifies how the networked objects collaborate to achieve the system behavior.
BabyIDE is an interactive development environment that supports the DCI paradigm with specialized browsers for each perspective. These browsers are placed in overlays within a common window so that the programmer can switch quickly between them.
DCI with BabyIDE marks a new departure for object oriented programming technology. It opens up a vista of new and interesting product opportunities and research challenges. Some of these challenges and opportunities are touched upon in a final chapter of this report.
Keywords.
- Object-oriented programming
- Object oriented methods
- Static object structures
- Dynamic object structures
- late binding
- collaboration
- role model
- IDE
- BabyUML –
See also
BabyIDE