Je n'ai pas le temps de tout lire, je le ferai tranquillement ce soir chez moi, mais je m'interroge sur une des premières questions de l'article : l'architecture OO proposée pour les voitures, avions et autres me semble ratée à partir du moment où il est envisagé de fournir des fonctionnalités à des objets qui ne devraient pas en disposer, comme la VoitureVolante.
En effet, selon l'architecture proposée (certes ce n'est qu'un exemple, mais quand même), un Avion ne roule pas. Or, c'est faux. Si on assume qu'un véhicule a forcément des roues, on peut du coup facilement considérer que la classe Véhicule définit une méthode roule() qui peut être abstraite ou non (si on suppose qu'une voiture ne roule pas comme une moto).
Pour le problème de rendre un véhicule volant, pourquoi ne pas utiliser une interface "Volant" (avec une méthode vole()) qu'implémente chaque classe concernée ? Avion devient un Véhicule (roulant) implémentant l'interface Volant, on a réglé le problème de façon propre.
# Une solution au problème VoitureVolante ?
Posté par StraToN . En réponse à la dépêche Je crée mon jeu vidéo E01 : les systèmes à entités. Évalué à 1.
Je n'ai pas le temps de tout lire, je le ferai tranquillement ce soir chez moi, mais je m'interroge sur une des premières questions de l'article : l'architecture OO proposée pour les voitures, avions et autres me semble ratée à partir du moment où il est envisagé de fournir des fonctionnalités à des objets qui ne devraient pas en disposer, comme la VoitureVolante.
En effet, selon l'architecture proposée (certes ce n'est qu'un exemple, mais quand même), un Avion ne roule pas. Or, c'est faux. Si on assume qu'un véhicule a forcément des roues, on peut du coup facilement considérer que la classe Véhicule définit une méthode roule() qui peut être abstraite ou non (si on suppose qu'une voiture ne roule pas comme une moto).
Pour le problème de rendre un véhicule volant, pourquoi ne pas utiliser une interface "Volant" (avec une méthode vole()) qu'implémente chaque classe concernée ? Avion devient un Véhicule (roulant) implémentant l'interface Volant, on a réglé le problème de façon propre.