Return 3 strings [Résolu]

Signaler
Messages postés
20
Date d'inscription
mardi 30 mars 2010
Statut
Membre
Dernière intervention
27 avril 2012
-
Messages postés
20
Date d'inscription
mardi 30 mars 2010
Statut
Membre
Dernière intervention
27 avril 2012
-
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

Messages postés
600
Date d'inscription
samedi 20 mai 2006
Statut
Membre
Dernière intervention
8 juillet 2016
10
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...
Messages postés
20
Date d'inscription
mardi 30 mars 2010
Statut
Membre
Dernière intervention
27 avril 2012
2
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 !
Messages postés
600
Date d'inscription
samedi 20 mai 2006
Statut
Membre
Dernière intervention
8 juillet 2016
10
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() + ")");
Messages postés
20
Date d'inscription
mardi 30 mars 2010
Statut
Membre
Dernière intervention
27 avril 2012
2
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 ?
Messages postés
600
Date d'inscription
samedi 20 mai 2006
Statut
Membre
Dernière intervention
8 juillet 2016
10
je ferais sans doute quelque chose comme ça:
new MonInterface(outil.lancement()).setVisible(true);


à toi de modifier ton code en conséquence ^^

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.)
Messages postés
20
Date d'inscription
mardi 30 mars 2010
Statut
Membre
Dernière intervention
27 avril 2012
2
Merci cormandyr.
J'ai exécuté le donnees = outil.lancement(); dans le initComponents(){} et tout fonctionne correctement dans l'ordre.

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.)
Messages postés
20
Date d'inscription
mardi 30 mars 2010
Statut
Membre
Dernière intervention
27 avril 2012
2
C'était déjà fait.