Imaginons que l’on veuille modéliser des véhicules (bon l’exemple ne sera pas forcément très cohérent, mais c’est juste pour représenter un genre de situation que je rencontre assez souvent), dont on s’intéresse à la vitesse moyenne, par exemple. On veut pouvoir modéliser un vélo et une moto. Concernant le vélo, on s’intéresse (entre autres) au nombre de pignons et de plateaux dont il dispose, et pour la moto, on veut pouvoir savoir quel carburant elle utilise.
Ce qui peut nous conduire, par exemple à une modélisation de ce type :
Je n’ai mis que quelques données, pour réduire mon problème à l’essentiel.
Avec cette modélisation, un objet qui traite un ensemble de véhicules pourra recevoir des motos ou des vélos, et appliquer dessus tout ce qui est visible au niveau de l’interface publique de Véhicule (on pourrait par exemple accéder à leur vitesse moyenne), mais on n’a aucun moyen de bénéficier des informations spécifiques aux classes filles (Moto et Vélo). À moins de faire de l’introspection, mais ça ne m’intéresse pas car je devrai modifier les classes utilisant des véhicules à chaque fois que j’ajouterai une spécialisation.
Connaissez-vous des solutions élégantes pour gérer ce type de problèmes ?