Comment exprimer, avec des objets (héritage, etc.) la situation suivante (qu'il m'est arrivé maintes fois de rencontrer) :
Soit une entité, Véhicule, avec tout un tas de choses qui lui sont propres (couleur, poids, etc.).
Soit une autre entité, Voiture, qui correspond à un Véhicule doté de quelques propriétés supplémentaires (genre le type de carburant).
Et encore, une autre entité, Vélo, qui correspond aussi à un Véhicule doté de propriétés supplémentaires (genre le nombre de plateaux et de pignons). Enfin, une entité Parking, qui peut contenir des Véhicules, qu'ils soient des Voitures ou des Vélos.
L'idée courante, je pense serait de définir une classe Véhicule, puis de la spécialiser en Voiture et en Vélo (via de l'héritage).
Cependant, le parking contenant des Véhicules, comment peut-il accéder aux propriétés spécifiques d'un Vélo ou d'une Voiture ?
En faisant de l'introspection ? N'y a-t-il pas un moyen plus élégant ? Je déteste écrire du code du genre :
if vehicule is Voiture: voiture = (Voiture)vehicule ...