Pour en savoir plus

Il y a de nombreux livres sur la programmation à objets, mais hélas encore peu de bons livres. La liste ci-dessous ne se veut ni exhaustive, ni sélectionnant les meilleures ouvrages, mais quelques pointeurs illustrant des idées ou des langages précis.

Des documents directement liéés au cours

Le chapitre ?? est assez bien couvert par l’article [Rém94], toutefois plus technique. La présentation d’Objective Caml est également disponible en ligne à l’adresse http://pauillac.inria.fr:caml. La formalisation d’Objective Caml, en partie présentée dans les chapitres ?? et ??, est décrite en détail dans [RV97]. La référence pour le sous-typage des types récursifs est [AC93], mais l’algorithme simple et efficace est décrit dans [KP93].

Des pointeurs pour un approfondissement plus théorique

La différence en héritage et sous-typage est le mieux décrit dans [CHC93].

Pour comprendres les objets dans un calcul plus simple (mais explicitement typés) on pourra regarder

• Un codage dans le système F_{<:}^{Ω}. [PT94]

• Une théorie des objects primitifs [AC94, AC95].

Pour une très bonne comparaison entre les différentes façons de représenter les objets [BCP96].

La meilleure référence sur la théorie et le typage des objets est certainement un livre à paraître en été 1996 par M. Abadi et L. Cardelli.

Documents plus pratiques

Les autres documents décrivent des cours sur les objets ou des langages à objets.

56

Références

[AC93] Roberto M. Amadio and Luca Cardelli. Subtyping recursive types. Transactions on Programming Languages and Systems. ACM, 15(4) :575–631, 1993.

[AC94] Martín Abadi and Luca Cardelli. A theory of primitive objects : Untyped and first-order systems. In Theoretical Aspects of Computer Software, pages 296–320. Springer-Verlag, April 1994.

[AC95] Martín Abadi and Luca Cardelli. A theory of primitive objects : Second-order systems. Science of Computer Programming, 25(2-3) :81–116, December 1995. Preliminary version appeared in D. Sanella, editor, Proceedings of European Symposium on Programming, pages 1-24. Springer-Verlag, April 1994.

[BCP96] Kim Bruce, Luca Cardelli, and Benjamin Pierce. Comparing objects encodings. Presented at the FOOL’3 workshop. Available electronically in informal workshop proceedings, July 1996.

[CHC93] William R. Cook, Walter L. Hill, and Peter S. Canning. Inheritance is not subtyping. In Carl A. Gunter and John C. Mitchell, editors, Theoretical Aspects Of Object-Oriented Programming. Types, Semantics and Language Design. MIT Press, 1993.

[KP93] Dexter Kozen and Jens Palsberg. Efficient recursive subtyping. In Proc. 20th symp. Principles of Programming Languages, pages 419–428. ACM press, 1993.

[PT94] Benjamin C. Pierce and David N. Turner. Simple type-theoretic foundations for object-oriented programming. Journal of Functional Programming, 4(2) :207–247, April 1994. A preliminary version appeared in Principles of Programming Languages, 1993, and as University of Edinburgh technical report ECS-LFCS-92-225, under the title “Object-Oriented Programming Without Recursive Types”.

[Rém93] Didier Rémy. Type inference for records in a natural extension of ML. In Carl A. Gunter and John C. Mitchell, editors, Theoretical Aspects Of Object-Oriented Programming. Types, Semantics and Language Design. MIT Press, 1993.

[Rém94] Didier Rémy. Programming objects with ML-ART : An extension to ml with abstract and record types. In Masami Hagiya and John C. Mitchell, editors, Theoretical Aspects of Computer Software, volume 789 of Lecture Notes in Computer Science, pages 321–346. Springer-Verlag, April 1994.

[RV97] Didier Rémy and Jérôme Vouillon. Objective ML : A simple object-oriented extension to ML. In Proceedings of the 24th ACM Conference on Principles of Programming Languages, January 1997. To appear. Also presented at the FOOL’3 workshop, available electronically in informal workshop proceedings.