Return 3 strings

Résolu
Sphaxounet0 Messages postés 20 Date d'inscription mardi 30 mars 2010 Statut Membre Dernière intervention 27 avril 2012 - 23 avril 2012 à 19:53
Sphaxounet0 Messages postés 20 Date d'inscription mardi 30 mars 2010 Statut Membre Dernière intervention 27 avril 2012 - 27 avril 2012 à 09:30
Bonjour,

Si je ne me trompe pas, une méthode ne peut retourner qu'un string, un tableau ou un objet.
Or j'aimerai qu'une méthode me retourne 3 strings (auteur, titre, mots-clefs).
Ces 3 strings je vais souvent les modifier et y accéder par la suite dans mon programme, donc il serait plus aisé de les regrouper dans un objet.

Mais comment faire ?

public class Outil(){
        String donnees;
        donnees = extraireDonnees();

        public static String extraireDonnees(){
               donnees.auteur = "abc";
               donnees.titre = "cde";
               donnees.mots-clefs = "fgh,ijk";

               return donnees;
        }


Je sais bien que ce n'est pas la classe String qu'il faut que j'utilise, mais plutôt un objet que j'aurai moi-même défini, mais comment faire cela ?

Je vous remercie d'avance.

9 réponses

cormandyr Messages postés 600 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 8 juillet 2016 11
23 avril 2012 à 21:58
ben tu fais une simple classe
public class Donnees
{
  protected String auteur;
  protected String titre;
  protected String motsCles;

  public Donnees(String pAuteur, String pTitre, String pMotsCles)
  {
    auteur = pAuteur;
    titre = pTitre;
    motsCles = pMotsCles;
  }

  public String getAuteur() { return auteur; }
  public String getTitre() {return titre; }
  public String getMotsCles() {return motsCles; }

  public String setAuteur(String pAuteur) {auteur  = pAuteur; }
  public String setTitre(String pTitre) { titre= pTitre; }
  public String setMotsCles(String pMotsCles) { motsCles= pMotsCles; }
}


le béaba de la classe java...
3
Sphaxounet0 Messages postés 20 Date d'inscription mardi 30 mars 2010 Statut Membre Dernière intervention 27 avril 2012 2
24 avril 2012 à 15:10
A voilà, je n'avais pas compris qu'il s'agissait de ça. Merci !

Mais je ne comprends pas comment utiliser les instances de cet objet ensuite. Il semblerait que ce soit le principe même du langage objet que je n'aie pas compris.

j'ai donc créé l'objet données, qui est utilisé par MonOutil, et qui doit être affiché sur MonInterface.

Voici une simplification de mes 3 fichiers :

public class Donnees{
...//La class que tu viens de m'expliquer.
}


//La classe qui remplit les données
public class MonOutil{
   public static Donnees lancement(){
      donnees.auteur = fonctionQuiDonneLAuteur();
      donnees = renseignerDonnees(donnees);
      return donnees;
   }
      
   public static Donnees renseignerDonnees(Donnees donnees){
      donnees.setTitre("abc");
      donnees.setMotsClefs("def");
      return donnees;
   }
}


//La classe qui affiche mes résultats obtenus via MonOutil.
public class MonInterface extends javax.swing.JFrame{
   private MonOutil outil;

   public MonInterface(){
      initComponents();
   }

   private void initComponents(){
      ...//déclarations de composants
      jLabel1.setText("L'auteur est : " + outil.donnees.getAuteur());
   }
   private void init(){
   }
   
   public static void main(String args[]){
      java.awt.EventQueue.invokeLater(new Runnable() {

         public void run() {
            try {
               donnees = outil.lancement();
            } catch (blabla){blabla}
            new MonInterface().setVisible(true);
         }
      });
   }
}
 


Pourquoi est-ce que
outil.donnees.getAuteur()
et
donnees = outil.lancement();
posent problème ? Comment dois-je utiliser mon objet ?

Merci d'avance pour ceux qui se pencheront sur mon problème !
0
cormandyr Messages postés 600 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 8 juillet 2016 11
24 avril 2012 à 15:21
tu dois utiliser une instance de ton objet et appeler des méthodes dessus pour le modifier ou avoir accès aux données.
Donnees d = new Donnees(...);
d.setAuteur("Werber");
d.setTitre("Les Fourmis");
d.setMotsCles("Relatif");

System.out.println("Données : " + d.getAuteur() + " a écrit " + d.getTitre() + " (mots-clés : " + d.getMotsCles() + ")");
0
Sphaxounet0 Messages postés 20 Date d'inscription mardi 30 mars 2010 Statut Membre Dernière intervention 27 avril 2012 2
24 avril 2012 à 15:51
J'ai rajouté :
Donnees donnees = new Donnees();

dans les déclarations de variables de MonInterface.

J'arrive maintenant à afficher des bonnes valeurs via les accesseurs donnees.getAuteur().
Mais comment faire pour lancer ma méthode lancement() (dans le run(){} j'imagine) puis afficher mon initComponents() dont la variable donnees aura été mise à jour ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cormandyr Messages postés 600 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 8 juillet 2016 11
24 avril 2012 à 15:57
je ferais sans doute quelque chose comme ça:
new MonInterface(outil.lancement()).setVisible(true);


à toi de modifier ton code en conséquence ^^
0
Utilisateur anonyme
24 avril 2012 à 22:30
Faire un objet... Ou un tableau de 3 Strings par exemple si tu sais comment bien le gérer après.

--
Pylouq
(Lire le Réglement n'a jamais tué personne, au pire ça a instruit des gens.)
0
Sphaxounet0 Messages postés 20 Date d'inscription mardi 30 mars 2010 Statut Membre Dernière intervention 27 avril 2012 2
25 avril 2012 à 12:30
Merci cormandyr.
J'ai exécuté le donnees = outil.lancement(); dans le initComponents(){} et tout fonctionne correctement dans l'ordre.
0
Utilisateur anonyme
26 avril 2012 à 21:38
Passe ton sujet en résolu en cliquant sur "Réponse acceptée" dans ce cas =D

--
Pylouq
(Lire le Réglement n'a jamais tué personne, au pire ça a instruit des gens.)
0
Sphaxounet0 Messages postés 20 Date d'inscription mardi 30 mars 2010 Statut Membre Dernière intervention 27 avril 2012 2
27 avril 2012 à 09:30
C'était déjà fait.
0
Rejoignez-nous