Next: Héritagesous-typage et conformance
Up: Panoramique et comparaison de
Previous: Panoramique et comparaison de
Rappel sur l'origine de l'orienté objet
La programmation à grande échelle nécessite une méthodologie et un support qui permettent au moins
- la compilation séparée
- la protection des détails d'implémentation
- la réutilisation du code
- compilation séparée: un programme peut se découper en morceaux que l'on peut compiler séparément (ex: Modula-2, TurboPascal, etc.), cela est le minimum.
- types de données abstraits: on peut cacher une partie de l'implémentation en ne fournissant à l'extérieur qu'une interface abstraite (ex: packages dans ADA).
- héritage: on peut réutiliser du code en étendant et composant des définitions préexistantes (cela concerne plutôt la réutilisation du code au niveau des sources, comme par exemple avec les generic packages de ADA).
- polymorphisme: on peut réutiliser du code en écrivant des fonctions
génériques capables d'opérer sur des données de types différents
(cela concerne plutôt la réutilisation du code à l'exécution, par exemple ML).
On distingue normalement entre
- polymorphisme vertical
- c'est celui de ML: on utilise du code ayant un type générique avec des instances de ce type, obtenues normalement par substitution de variables de type.
- polymorphisme horizontal
- c'est celui qui est répandu le plus dans le monde
à objets: on utilise du code avec des objets contenant plus
d'informations que celles requises par le code (ex: enregistrements avec
plus de champs), mais c'est aussi ce qui se passe par exemple dans le
mécanisme de signature matching pour les modules de SML ou Objective Caml.
Cela correspond souvent à ce qu'on appelle sous-typage en théorie
des systèmes de types.
Les difficultés et la grande complexité de la plupart des langages dits à objets
viennent de l'ambition de ces langages de capturer tous ces aspects à la
fois, et cela en utilisant une seule notion, celle d'objet.
On va voir comment nos trois langages traitent ces problèmes dans ce qui suit, en les comparant élément par élément, problème par problème.
Next: Héritagesous-typage et conformance Up: Panoramique et comparaison de Previous: Panoramique et comparaison de Roberto DiCosmo
Mon Jun 3 18:29:31 MET DST 1996