Author: Christian.Queinnec@lip6.fr

## 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/