Principles of Object-Oriented Software Development
[] readme course preface 1 2 3 4 5 6 7 8 9 10 11 12 appendix lectures resources

talk show tell print


This chapter has given an outline of the major theme of this book, which may be characterized as the unification of a software engineering perspective and a foundational approach. The minor theme may be characterized by saying that a considerable amount of technology is involved.

Themes and variations


slide: Section 1.1: Themes and variations

In section 1 we looked at the terminology associated with object orientation, we studied the mechanisms underlying object computation and we discussed an approach to the development of software that centers around the identification of responsibilities and the definition of abstract data types embodying the mutual responsibilities of a client and a server object in terms of a contract. See slide 1-1.

Paradigms of programming


slide: Section 1.2: Paradigms of programming

Then, in section 2, we looked at object-orientation as a paradigm of programming, extending an abstract data type approach with support for the organization of object types in a polymorphic type structure. See slide 1-2. Further, an overview was given of the literature available on OOP, including a number of landmark papers on which this book was originally based.

The object-oriented software life-cycle


  • software development models -- in particular the role of prototyping
  • software quality -- in relation to reuse and maintenance
  • programming languages -- the choice of a vehicle

slide: Section 1.3: The object-oriented software life-cycle

In section 3 we looked at the object-oriented software life-cycle, consisting of the phases of analysis, design and implementation. We discussed software development models and the role of prototyping, how an object-oriented approach may promote software quality and facilitate maintenance, and we looked at some programming languages as vehicles for the implementation of object-oriented code. See slide 1-3.

Beyond object orientation?


  • modeling -- patterns, UML
  • components -- CORBA, (D)COM, Java
  • heterogeneous systems -- separating logic and control

slide: Section 1.4: Trends and technologies

In section 4 we attempted to discern trends in the research and deployment of object-oriented technologies. We also tried to formulate the challenges we are faced with which concern the utilization of components for the development of knowledge-intensive heterogeneous systems, that allow to factor out the (business) logic in a declarative manner. See slide 1-4.


  1. How would you characterize OOP and what, in your opinion, is the motivation underlying the introduction of OOP?
  2. Characterize the most important features of OOP.
  3. Explain the meaning of the phrase `object orientation reduces the complexity of programming.'
  4. How would you characterize contracts? Why are contracts important?
  5. How is OOP related to programming languages?
  6. What classes of languages support OOP features? Explain.
  7. What influence is an object-oriented approach said to have on the software life-cycle? What is your own opinion? Discuss the problem of maintenance.
  8. How would you characterize software quality?
  9. Mention a number of object-oriented programming languages, and give a brief characterization.
  10. What do you see as the major challenges for research in object orientation?

Further reading

Nowadays there are many books that may serve as a starting point for reading about OO. Dependent on your interest, you may look at  [Surviving], which treats issues of OO project management,  [Meyer97], which gives an extensive introduction to design by contract and programming in Eiffel, or  [Fowler97], which gives a succinct introduction to UML. Alternatively, you may take one of the introductory programming books for Java, from which you will almost certainly learn something about OO as well.

[] readme course preface 1 2 3 4 5 6 7 8 9 10 11 12 appendix lectures resources

draft version 0.1 (15/7/2001)