Jump to content

Classe abstraite,interface,classe[Résolu]


Recommended Posts

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

A mon avis, Boa est un Serpent plutôt qu'un Mammifère :transpi:

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

A mon avis, Boa est un Serpent plutôt qu'un Mammifère :modoreussi:

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

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

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

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...