Il n'y a pas de définition universellement admise pour l'objet (si on prends par exemple celle de B. Meyer, aucun langage n'est objet si ce n'est Eiffel).
Par contre, il y a un sous-ensemble commun aux différentes définitions :
- Une certaine forme de définition de type personnalisé plus ou moins encapsulé et modulaire.
- Le sous-typage (ce que tu appelles héritage au-dessus, mais d'une part l'héritage connote un sous-typage nominal et laisse de côté le sous-typage structurel et d'autre part certains langages proposent de l'héritage qui ne créé pas de sous-type, par exemple l'héritage privé de C++).
- Le polymorphisme de sous-typage aka d'inclusion (et si je précise de sous-typage, c'est bien parce qu'il existe d'autres polymorphismes qui n'ont rien à voir avec l'objet : coercition, surcharge ou paramétrique).
- Du dispatch dynamique sur le type dynamique de l'objet.
Les deux derniers sont souvent regroupés en grosse partie car ils ont un intérêt essentiellement lorsqu'ils sont tout deux présents mais ça reste des mécanismes différents.
Partager