Problème de compréhension - Java - Programmation
Marsh Posté le 23-02-2006 à 16:59:45
Citation : On me dit que la classe Tree à telle méthode et on me demande d'utiliser @Override pour réécrire les méthodes size(),toString() dans Tree ,or on ne peut pas utiliser 2 méthodes d'une même classe ayant la même signature,profil,... |
Non, on te demande d'ajouter le tag (javadoc) @Override aux méthodes que tu aura redéfinies dans une des classes fille.
PS : j'aurais vu Node comme classe abstraite plutot que comme une interface.
Marsh Posté le 23-02-2006 à 22:59:06
(#Override est une annotation pas un tag javadoc, mais à priori n'a qu'un interet documentaire)
Marsh Posté le 24-02-2006 à 08:10:08
Bidem a écrit :
|
Bonjour,
est ce que tu pourrais m'indiquer comment tu fais pour savoir qu'il est préférable d'utiliser une classe abstraite plutot qu'une interface dans le cas de cet exercice et dans un cas général.
Pour cet exo,si je définis la classe Node comme étant une classe abstraite,il n'y aura que des méthodes abstraites de définit car dans cette classe Node,il n'y a pas possibilites d'écrire un constructeur ou d'autres méthodes communes à InternalNode et Leaf.
Cela sera donc comme si c'était une interface
Marsh Posté le 24-02-2006 à 08:36:33
la question est simple, si les deux classes qui vont dérivé ou implémenté ont du code commun, alors Classe abstraite, sinon Interface...
Marsh Posté le 24-02-2006 à 09:54:15
Une interface ne définit que des signatures de méthodes (que des méthodes abstraites).
Une classe abstraite est une classe qui ne sera jamais instanciée mais qui peut quand même définir quelques méthodes non abstraites.
Dans ton cas, il y a l'attribut data est définit dans Leaf et InternalNode et je pense qu'il devrait se trouver au niveau de Node et la méthode contains() aussi.
Après il faut voir si tu dois redéfinir contains() dans les classes filles (ou pas ).
Marsh Posté le 24-02-2006 à 12:01:14
Bidem a écrit : Une interface ne définit que des signatures de méthodes (que des méthodes abstraites). |
Salut,je n'avais pas mis l'énoncé en entier mais il faut redenir toutes les methodes suivantes :
Citation : |
Donc en faite ma classe Node sera comme ceci
abstract class Node {
private int data;
int size();
boolean contains(int i);
}
Marsh Posté le 24-02-2006 à 12:19:02
D'après moi contains devrait être implémentée ici (et redéfinie dans InternalNode).
Mais cela n'engage que moi, quand on modélise un truc comme ça, il y a toujours plusieurs solutions valides
Marsh Posté le 23-02-2006 à 13:57:02
Bonjour,
J'ai un probème de compréhension de l'énoncé qui me demandait de faire cet exo.
On me dit que la classe Tree à telle méthode et on me demande d'utiliser @Override pour réécrire les méthodes size(),toString() dans Tree ,or on ne peut pas utiliser 2 méthodes d'une même classe ayant la même signature,profil,...
Je voudrais savoir si quelqu'un avait une idée de ce qui doit être fait car je bloque.
Merci
Voici l'énoncé et ce que j'ai fait
Une classe Tree implémente des arbres dont les noeuds (noeuds internes ou feuilles) contiennent une donnée de nom data (un int) et ont un nombre quelconque de fils.Pour éviter de stocker une liste de fils dans les noeuds sans fils (les feuilles),on utilise 2 classes Leaf et InternalNode.
La classe Leaf représente les noeuds sans fils ayant un ou plusieurs fils .Dans les noeuds internes ,les fils sont représentés par un champ children de type List<Node>.
La classe Tree comprend
1)Expliquer brièvement pourquoi on a besoin d'un super-type Node
2)Doit-on utiliser une interface ou une classe abstraite pour représenter le super-type Node?Justifier votre choix.
3)Expliquer pourquoi il faut un constructeur dans la classe Tree qui prend en ragument la racine de l'arbre.Écrire le code correspondant.
4)Indiquer l'ensemble des modificateurs de visibilité possibles pour la méthode size() de Node.
5)Écrire les autres classes (déclarations ,champs et constructeurs).Attention aux modificateurs de visibilité.Par exemple le code suivant
crée l'arbre ci-dessous(l'arbre est comme cela:
l'arbre a pour racine 1 qui a trois fils 2,3,4(de gauche a droite), 3 a deux fils 5 et 6 )
6)Écrire une méthode size() dans la classe Tree.La taille d'un arbre est son nombre de noeuds.
Indiquer le code des méthodes à ajouter dans les autres classes.Utiliser l'annotation @Override.
<...>
j'ai écrit l'interface et les différentes classes que l'on me demandait de faire dans un exercice.