To Learn More
There are a huge number of publications on object-oriented programming. Each
language implements a different model.
A general introduction (still topical for the first part) is ``Langages à
Objets '' ([MNC+91]) which explains the object-oriented approach. A more
specialized book, ``Langages et modèles à objets'' [DEMN98], gives the
examples in this domain.
For modeling, the book ``Design patterns'' ([GHJV95]) gives a catalogue of
design patterns that show how reusability is possible.
The reference site for the UML notation is Rational:
Link
http://www.rational.com/uml/resources
For functional languages with an object extension, we mention the ``Lisp''
objects, coming from the SMALLTALK world,
and CLOS (meaning Common Lisp Object System), as well as a number of
Scheme's implementing generic functions similar to those in CLOS.
Other proposals for object-oriented languages have been made for statically typed
functional languages, such as Haskell, a pure functional language which has
parameterized and ad hoc polymorphism for overloading.
The paper [RV98] presents the theoretical aspects of the
object extension of Objective CAML.
To learn more on the static object typing in Objective CAML, you can look at several
lectures available online.
Lectures by María-Virginia Aponte:
Link
http://tulipe.cnam.fr/personne/aponte/ocaml.html
A short presentation of objects by Didier Rémy:
Link
http://pauillac.inria.fr/~remy/objectdemo.html
Lectures by Didier Rémy at Magistère MMFAI:
Link
http://pauillac.inria.fr/~remy/classes/magistere/
Lectures by Roberto Di Cosmo at Magistère MMFAI:
Link
http://www.dmi.ens.fr/users/dicosmo/CourseNotes/OO/