Object-Oriented Programming

Divider

In this page:

divider

Fundamentals

A general textbook on O-O programming languages:

  • I. Craig. The Interpretation of Object-Oriented Programming Languages. New York: Springer-Verlag, 2000.

Online Glossary

Introduction to OOP

  • Rebecca Wirfs-Brock, Brian Wilkerson, Lauren Wiene. Designing Object Oriented Software. Upper Saddle River: Prentice Hall PTR, 1990.
  • B. Meyer. Object-oriented software construction, 2nd Edition. Upper Saddle River: Prentice Hall, 1997. Incomplete online version

Object-oriented analysis & design methods

  • I. Graham. Object-oriented Methods. Harlow: Pearson Education Ltd., 2003.

Principles and mechanisms

Separation of concerns E.W. Dijkstra. A Discipline of Programming. Prentice Hall, 1976.
Information Hiding D.L. Parnas. "On the Criteria To Be Used in Decomposing Systems into Modules".Communications of the ACM, Vol. 15, No. 12 (Dec. 1972), pp. 1053–1058
Encapsulation/modularity P. Clements, D. Parnas, D. Weiss. "The Modular Structure of Complex Systems". IEEE Trans. Software Engineering, Vol. SE-11, No. 3 (Mar. 1985).
Inheritance A. Taivalsaari. "On the Notion of Inheritance". ACM Computing Surveys, Vol. 28, No. 3 (Sep. 1996), pp. 438–479.
Polymorphism L. Cardelli, P. Wegner. "On Understanding Types, Data Abstraction, and Polymorphism". ACM Computing Surveys, Vol. 17, No. 4 (Dec. 1985).
Genericity D.R. Musser, A.A. Stepanov. "Algorithm-Oriented Generic Libraries". Software Practice and Experience, Vol. 24, Vol. 7 (Jul. 1994).
Delegation M. Wolczko. "Encapsulation, Delegation and Inheritance in Object-Oriented Languages." IEE Software Engineering J., Vol. 7, No. 2 (Mar. 1992), pp. 95–101.
divider

Readings

See separate pages:

O-O Analysis

  • Martin Fowler. "Is There Such A Thing as Object Oriented Analysis?" Distributed Computing (Oct. 1999).
  • Martin Fowler. Analysis Patterns. Addison-Wesley, 1997.

Aspect-Oriented Programming

  • G. Kiczales, J. Lamping, A. Mendhekar, C. Maeda, C.V. Lopes, J. M. Loingtier, J. Irwin. "Aspect-Oriented Programming". Proc. 11th European Conf. Object-Oriented Programming—ECOOP, Jyvėskylė, Finland. Lecture Notes in Computer Science 1241. Berlin: Springer-Verlag, 1997.

O-O Application Frameworks

  • M. Fayad, D.C. Schmidt. "Object-Oriented Application Frameworks". Guest editorial, Communications of the ACM, Vol. 40, No. 10 (Oct. 1997).
  • J. Van Gurp, J. Bosch. "Design, implementation and evolution of object oriented frameworks: concepts & guidelines." Software Practice and Experience, Vol. 31, No. 3 (Mar. 2001), pp. 277--300.
  • Object-oriented frameworks (Ralph Johnson)
  • W. Pree. "Meta Patterns—A Means For Capturing the Essentials of Reusable Object-Oriented Design." Proc. 8th European Conf. Object-Oriented Programming—ECOOP, Lecture Notes In Computer Science, Vol. 821, pp. 150-162. London: Springer, 1994.

Programming languages

In C we had to code our own bugs. In C++ we can inherit them.

C lets you shoot yourself in the foot rather easily. C++ allows you to reuse the bullet!
  • B. Stroustrup. The C++ Programming Language, special edition. Reading: Addison Wesley, 2000.
  • B. Stroustrup. The Design and Evolution of C++. Reading: Addison-Wesley, 1994.
  • James Gosling, Bill Joy, Guy L. Steele II. The Java Language Specification, 3rd ed. Sun Microsystems, 2005.
  • A. Goldberg, D. Robson. Smalltalk-80: The Language. Reading: Addison-Wesley, 1989.
divider

Formal aspects of OOP

  • M. Abadi, L. Cardelli. A Theory of Objects. Berlin: Springer, 1996.
  • R.H. Bourdeau, B. H. C. Cheng (1995). "A Formal Semantics for Object Model Diagrams." IEEE Trans. Software Engineering Vol 21, No. 10 (Oct. 1995), pp. 1—25.
  • B.H.C. Cheng, Enoch Y. Wang (2002). "Formalizing and Integrating the Dynamic Model for Object-Oriented Modeling." IEEE Trans. Software Engineering Vol 28, No. 8 (Aug. 2002), pp. 747–762.
  • Amnon H. Eden. "A Theory of Object-Oriented Design." Information Systems Frontiers, Vol. 4, No. 4 (Nov.-Dec. 2002), pp. 379—391. Kluwer Academic Publishers.
  • D. Jackson. "Alloy: A Lightweight Object Modelling Notation." ACM Trans. Software Engineering and Methodology, Vol. 11, No. 2 (Apr. 2002), pp. 256—290.
divider

Object-Oriented Methods

Overview

  • R. Wieringa (1998). "A Survey of Structured and Object-Oriented Software Specification Methods and Techniques". ACM Computing Surveys, Vo. 30, No. 4 (Dec. 1998). New York: Association for Computing Machinery.

Notations

All models are wrong; some of them are useful
-- G. Box
  • LePUS3—Language for Patterns Uniform Specification
  • UML—The Unified Modeling Language
    • Unified Modelling Language, Ver. 2.0 (Object Management Group)
    • IBM Page on Rational
    • James Rumbaugh, Ivar Jacobson, Grady Booch. The Unified Modeling Language Reference Manual, 2nd Edition. Reading: Addison-Wesley, 2004.
    • D. Thomas. "MDA: Revenge of the modellers or UML Utopia?" IEEE Software, Vol. 21, No. 21 (May/Jun. 2004), pp. 15–17.
    • Historical overview: C. Kobryn (1999). "UML 2001: A Standardization Odyssey". Communications of the ACM, Vol. 42, No. 10 (Oct. 1999
    • And don't forget to check these magnificent caveats to UML:
      • Alex E. Bell. "Death by UML Fever." ACM Queue, Vol. 2, No. 1 (March 2004),
      • Bertrand Meyer. UML—The Positive Spin. American Programmer, Vol. 10, No. 3 (Mar. 1997).
  • OMT
    • Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, Michael Stal. Pattern-Oriented Software Architecture—A System of Patterns. New York: Wiley and Sons, 1996.

Use Cases

  • I. Jacobson. Object Oriented Software Engineering: A Use Case Driven Approach. Reading: Addison-Wesley, 1993.

CRC Cards

  • Kend Beck, W. Cunningham (1989). "A Laboratory For Teaching Object-Oriented Thinking". Proc. of OOPSLA, October 1–6, 1989, New Orleans, Louisiana.In: SIGPLAN Notices, Vol. 24, No. 10 (Oct. 1989).

Law of Demeter

divider

Links