Sélection simple
En programmation orientée objet, la sélection simple (ou sélection de méthode à aiguillage simple) traduit le fait qu'un seul argument est utilisé par le compilateur pour sélectionner la méthode à appeler. Exemple (donné en C++) :
class C {
public:
void f(D* d){/*...*/}
void f(Derived* d){/*...*/}
};
class D {};
class Derived : public D{
public:
void g(){}
};
/* ... */
D* myD = new Derived;
C* c = new C;
c->f(myD);
On pourrait s'attendre à ce que l'expression c->f(myD) appelle la méthode C::f(Derived*). Il n'en est rien. En fait le compilateur ne s'est basé que sur le type réel de c (C*), mais n'a pas cherché à connaître le type réel de myD (Derived), dont il n'a retenu que le type apparent (D*). Ainsi, le compilateur a choisi la méthode C::f(D*). Ce comportement est implémenté en C++, Java et bien d'autres langages. Pour pallier cela, il faut utiliser le design pattern visiteur en C++, ou l'introspection en Java.
Notes et références
- Portail de l’informatique
Cet article est issu de Wikipedia. Le texte est sous licence Creative Commons – Attribution – Partage à l’identique. Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.