Premium Posted April 16, 2006 Share Posted April 16, 2006 Bonjour, j'ai un souci pour créer mes classes dans l'exercice suivant . J'ai crée mes classes de cette manière Animal(classe abstraite) Mammifere(interface) Serpent(interface) Singe hérite de Animal et implémente Mammifere Felin hérite de Animal et implémente Mammifere Boa hérite de Animal et implémente Mammifere Chimpanze hérite de singe OrangOutan hérite de singe Tigre hérite de félin Lion hérite de félin Mon souci est que j'écris toutes les méthodes dans la classe abstraite Animal et que je ne sais pas quoi mettre dans les interfaces Mammifere et Serpent. Si quelqu'un pouvait m'aider à mieux répartir les méthodes? Merci d'avance Link to comment Share on other sites More sharing options...
Sentinel Posted April 16, 2006 Share Posted April 16, 2006 A mon avis, Boa est un Serpent plutôt qu'un Mammifère A part ça, je verrais plutôt : CA Animal CA Serpent extends Animal CA Mammifère extends Animal CA Singe extends Mammifère CA Felin extends Mammifère Et ensuite pour les animaux, que des classes concrètes dérivant de ces classes. Tu colles tout dans Animal puisque toutes les méthodes demandées sont communes à tous les animaux. Pour leur description, tu peux faire une description générale dans Animal en réimplémentant la méthode toString(), et l' "overrider" dans certaines sous-classes pour proposer des descriptions plus fines (par exemple pour le Boa, qui est protégé). Link to comment Share on other sites More sharing options...
Premium Posted April 16, 2006 Author Share Posted April 16, 2006 A mon avis, Boa est un Serpent plutôt qu'un Mammifère A part ça, je verrais plutôt : CA Animal CA Serpent extends Animal CA Mammifère extends Animal CA Singe extends Mammifère CA Felin extends Mammifère Et ensuite pour les animaux, que des classes concrètes dérivant de ces classes. Tu colles tout dans Animal puisque toutes les méthodes demandées sont communes à tous les animaux. Pour leur description, tu peux faire une description générale dans Animal en réimplémentant la méthode toString(), et l' "overrider" dans certaines sous-classes pour proposer des descriptions plus fines (par exemple pour le Boa, qui est protégé). Tu me conseilles donc de n'utiliser que des classes abstraites pas d'interface ,c'est bien ça? Les classes Mammifere,Singe et Felin n'auront aucune nouvelle méthode tandis que Serpent aura un nouvel attribut ? Link to comment Share on other sites More sharing options...
Sentinel Posted April 16, 2006 Share Posted April 16, 2006 C'est plus souple : si tu veux faire évoluer ton appli et que, tout à coup, les Mammifères ont un comportement différent des Serpents, il suffira de rajouter une méthode (concrète ou abstraite) dans Mammifère. Plus généralement, tu peux reconnaître qu'il te faut une interface si son nom est un adjectif. Par exemple : Chassable (pour les espèces non protégées) serait plutôt une interface; Mammifère est plutôt une classe, car cela représente un type d' "objet réel". C'est une astuce un peu "à la louche", mais généralement ça fonctionne bien. :) Link to comment Share on other sites More sharing options...
Premium Posted April 16, 2006 Author Share Posted April 16, 2006 C'est plus souple : si tu veux faire évoluer ton appli et que, tout à coup, les Mammifères ont un comportement différent des Serpents, il suffira de rajouter une méthode (concrète ou abstraite) dans Mammifère. Plus généralement, tu peux reconnaître qu'il te faut une interface si son nom est un adjectif. Par exemple : Chassable (pour les espèces non protégées) serait plutôt une interface; Mammifère est plutôt une classe, car cela représente un type d' "objet réel". C'est une astuce un peu "à la louche", mais généralement ça fonctionne bien. :) Merci pour la réponse Est-ce que tu pourrais m'indiquer comment il faudrait faire si je souhaite utiliser une interface pour Mammifere et Serpent? Link to comment Share on other sites More sharing options...
Baldurien Posted April 16, 2006 Share Posted April 16, 2006 Trouver les points communs entre les deux (déplacement, nourriture, etc) et en faire une interface. De toute façon, une interface = classe abstraite avec méthodes publiques et abstraites. Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.