Appel de methode
Résolu/Fermé
#thegoat
Messages postés
3
Date d'inscription
mercredi 23 mars 2016
Statut
Membre
Dernière intervention
24 mars 2016
-
23 mars 2016 à 18:19
greg6614 Messages postés 592 Date d'inscription vendredi 7 août 2009 Statut Membre Dernière intervention 3 juin 2017 - 24 mars 2016 à 11:53
greg6614 Messages postés 592 Date d'inscription vendredi 7 août 2009 Statut Membre Dernière intervention 3 juin 2017 - 24 mars 2016 à 11:53
3 réponses
greg6614
Messages postés
592
Date d'inscription
vendredi 7 août 2009
Statut
Membre
Dernière intervention
3 juin 2017
107
Modifié par greg6614 le 23/03/2016 à 20:47
Modifié par greg6614 le 23/03/2016 à 20:47
Hello, alors concernant ton problème c'est normal, car tu appel ta méthode
Tu dois écrire
Ensuite pense aux boucles simplifiées java qui s'écrivent :
Et qui se lisent "Pour tout éléments d de type Document contenu dans documents ...".
Au passage il est inutile de faire un
Je t'ai donc fais quelques petites modifications sur ton code que voici :
En espérant t'avoir aidé
Greg
getAuteur()sur un objet de type
Documentmalgré ton cast.
Tu dois écrire
((Livre)d).getAuteur()et là tu appel la méthode sur un objet de type Livre.
Ensuite pense aux boucles simplifiées java qui s'écrivent :
for (Document d : documents){ System.out.println(d) }
Et qui se lisent "Pour tout éléments d de type Document contenu dans documents ...".
Au passage il est inutile de faire un
System.out.println(d.toString());car
toString()est appelé automatiquement. JAVA appel la première méthode
toString()qu'il trouve en remontant l'abre d'héritage.
Je t'ai donc fais quelques petites modifications sur ton code que voici :
public class Document { private int numero; private String titre; //Constructers public Document(int numero, String titre) { this.numero=numero; this.titre=titre; } //gets public int getNumero() { return numero; } public String getTitre() { return titre; } //Expliquer le code de cette méthode public boolean equals(Object obj) { return obj instanceof Document && ((Document) obj).numero == numero; } public String toString() { return titre + " Numéro : " + numero; } }
public class Livre extends Document{ private String auteur; private int nombrePages; public Livre(int numero, String titre, String auteur, int nombrePages){ super(numero,titre); this.auteur=auteur; this.nombrePages=nombrePages; } public String getAuteur(){ return auteur; } public int getNombrePages(){ return nombrePages; } public String toString(){ return super.toString()+" Auteur: "+auteur+" Nombre de pages: "+nombrePages; } }
import java.util.Vector; public class Bibliotheque { //Attributs private Vector<Document> documents; //Constructeurs public Bibliotheque(){ documents= new Vector<Document>(); } //Affichage de tous les documents de la bibliothèque public void afficherDocuments(){ for(Document d : documents){ System.out.println(d); } } //Afficher tous les auteurs de la bibliothèque. //Attention, seuls les documents de type Livre et Roman possèdent des auteurs public void afficherAuteurs(){ for(Document d : documents){ if(d instanceof Livre){ System.out.println(((Livre) d).getAuteur()); } } } //fin afficherAuteurs //Supprimer un document de la collection de documents public boolean supprimer(Document doc){ return(documents.remove(doc)); } //Ajouter un document public boolean ajouter(Document doc){ return(documents.add(doc)); } //Obtenir le document à l'indice i public Document getUnDocument(int i){ return (documents.get(i)); } }
En espérant t'avoir aidé
Greg
#thegoat
Messages postés
3
Date d'inscription
mercredi 23 mars 2016
Statut
Membre
Dernière intervention
24 mars 2016
23 mars 2016 à 22:43
23 mars 2016 à 22:43
Merci beaucoup pour votre aide Greg, cela m'a a été très utile! Donc si je comprends bien en java les boucles s'utilisent plutôt de la forme (for d : type) au lieu d’incrémenter un compteur initialisée comme dans tout autre(enfin je crois) langages...
totodunet
Messages postés
1377
Date d'inscription
mercredi 18 mars 2009
Statut
Membre
Dernière intervention
5 mars 2020
199
Modifié par totodunet le 23/03/2016 à 22:55
Modifié par totodunet le 23/03/2016 à 22:55
si la classe implémente l'interface Iterable tu peux faire directement une boucle for(Type objet:collection)
Là la collection Vector implémente cette interface ( https://docs.oracle.com/javase/7/docs/api/java/util/Vector.html )
c'est pas automatique sur toutes les classes même si pratiquement toutes les classes types Collection de Java l'implémente. Pour un tableau classique, il faut mettre en place un compteur.
Là la collection Vector implémente cette interface ( https://docs.oracle.com/javase/7/docs/api/java/util/Vector.html )
c'est pas automatique sur toutes les classes même si pratiquement toutes les classes types Collection de Java l'implémente. Pour un tableau classique, il faut mettre en place un compteur.
greg6614
Messages postés
592
Date d'inscription
vendredi 7 août 2009
Statut
Membre
Dernière intervention
3 juin 2017
107
24 mars 2016 à 11:53
24 mars 2016 à 11:53
Voilà comme a-dit toto si la classe implémente l'interface Iterable et que tu n'a pas nécessitè d'utiliser les indices tu peux utiliser cette forme sinon la forme classique sera obligatoire.
Avec plaisir pour l'aide.
Avec plaisir pour l'aide.
#thegoat
Messages postés
3
Date d'inscription
mercredi 23 mars 2016
Statut
Membre
Dernière intervention
24 mars 2016
24 mars 2016 à 08:09
24 mars 2016 à 08:09
Un grand merci a vous aussi pour vos precisions totodunet !