IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Création de code automatique


Sujet :

avec Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2012
    Messages : 18
    Points : 13
    Points
    13
    Par défaut Création de code automatique
    Alors le titre est très peu clair mais je n'ai pas trouvé comment exprimer mon soucis autrement !

    J'ai donc un projet à faire! J'ai reçu du code, certaines méthode doivent et peuvent être utilisées pour complété le reste du code ( à faire par nous même donc).

    Et ici je suis en train de réaliser une méthode de recherche dans une arraylist ( je suis pas sur que l'utilité soit importante)

    La méthode fonctionne mais au cas par cas! Donc plein de "if" en fonction de ce qu'elle reçoit, ce qui reviens quasiment à faire plusieurs méthode! Mon but maintenant est de généraliser cette méthode!

    Donc elle reçoit en paramètre un entier ( fieldCode) qui lui indique le type de recherche et un string à trouver!

    Dans l'état actuel des choses "j'analyse" le fieldCode pour qu'il sache ce qu'il recherche. MAIS je me suis rendu compte que avec ce fieldCode je disposait d'une méthode qui me renvoyait un string du genre:

    - getAuthor()
    - getTitle()
    - ect

    Je me dis parfait, ça c'est la clef de ma généralisation! Ni une ni deux je me lance dans l'écriture de mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    				String s = book.getFieldValue(bookFieldCode);
    				if (s.contains(value))
    					{resultList.add(book); }
    Mais ca ne va pas! Eclipse me dit qu'il ne peut pas convertir un objet en String.

    Alors que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    book.getFieldValue(bookFieldCode);
    renvoie bien par exemple : getAuthor()
    J'ai testé avec des println...
    Alors je me dis OUI MAIS je dois ajouter un "book." devant, pour qu'il fasse book.getAuthor().

    Mais ca ne marche pas non plus :p ( bon ok ce coup là je l'ai essayer sans trop de conviction)

    Mais donc vous l'aurez compris le but est qu'il fasse

    book.getCequifaut(avec ce foutu fieldCode);

    Et je sens bien que la clef est la mais je l'exploite mal je pense.

    Merci d'avance

  2. #2
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    Bonjour,

    Je pense que tu nous as donné beaucoup d'informations, mais peut-être pas les plus utiles.
    Par exemple, c'est quoi l'objet book ? Quelle est sa classe ? Il en va de même avec bookFieldCode, resultList et value...

    Si je suppose bien, tu récupère une information identifiant ton livre et tu l'ajout à une liste.
    Par exemple, si le livre est un livre de science fiction, alors tu l'ajoute à la liste des résultats ?
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    String typeOfBook = book.getFieldValue("type");
    if(typeOfBook.contains("Science-fiction")){
    	resultList.add(book);
    }
    Une manière plus élégante d'aborder la question du getFieldValue, peut-être l'utilisateur un "reader/parser". Qui s’occupe se connaitre le bon "bookFieldCode" pour ne information donnée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    //Sa déclaration
    public class BookReader{
    	private static final String TYPE_FIELD_CODE = "type";
    	private Book book;
     
    	public BookReader(Book book){
    		this.book = book;
    	}
     
    	public String getType(){
    		return this.book.getFieldValue(BookReader.TYPE_FIELD_CODE);
    	}
     
    }
    //Son utilisation
    BookReader bookReader = new BookReader(book);
    if(bookReader.getType().contains("Science-fiction")){
    	resultList.add(book);
    }
    Cela évite l'utilisation de fieldcode qui n'existe pas et d'avoir une gestion d'erreur plus complexe.

    Dans tout les cas, donne nous un peu plus d'information sur le contexte. Et n''hésite pas à nous donner du code exécutable.

    Cordialement,
    Patrick Kolodziejczyk.
    Note : Tu peux utiliser sur un objet la fonction getClass().getName() pour savoir le nome de la classe de l'objet pour un println.
    Ou encore utiliser un point d'arrêt sur l'objet avec le débogueur eclipse ce qui te permettra d'avoir la vue de l'objet dans le débogueur
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2012
    Messages : 18
    Points : 13
    Points
    13
    Par défaut
    Hummm, je suis pas sur d'avoir tout compris à ta solution mais voici les détails demandés:

    J'ai donc une classe Book j'ai envie de dire tout ce qu'il y a de plus normale! Des info sur mon livre ( auteur, titre, editeur, ...) des accesseurs, mutateurs enfin la totale quoi ! Un objet classique

    mon bookFieldCode est un int, qui peu-être interpréter via une méthode de la classe book :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    	public Object getFieldValue(int fieldCode) {
    		switch (fieldCode) {
    		case BookField.AUTHORS: return getAuthorsString();
    		case BookField.TITLE: return getTitle();
    		case BookField.PUBLICATION_DATE: return getPublicationDate();
    		case BookField.SERIE: return getSerie();
    		case BookField.NUMBER_PAGES: return getNumberPages();
    		case BookField.REFERENCE: return getReference();
    		case BookField.EDITOR: return getEditor();
    		case BookField.NUM_BORROWED_COPIES: return numBorrowedCopies();
    		case BookField.NUM_AVAILABLE_COPIES: return numAvailableCopies();
    		case BookField.NUM_RESERVED_COPIES: return numReservedCopies();
    		default: throw new RuntimeException("Book code no recognized");
    		}
    	}

    A l'heure actuelle dans ma recherche je fais ca :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    List<Book> resultList = new ArrayList<Book>();
    if( bookFieldCode == BookField.REFERENCE)
    		{
    			for ( Book book : booksList)
    			{
     
    				if (book.getReference().contains(value))
    					{resultList.add(book);}
     
    			}
    Avec un if pour chaque "info"

    Donc pour l'auteur ca sera

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if ( bookFieldCode == BookField.REFERENCE)
                  { ....
    Et ainsi de suite, ca marche, mais vous l'aurez compris je veux généralisé tout ca et j'aimerais pouvoir faire un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    			for ( Book book : booksList)
    			{
     
    				String s = book.getFieldValue(bookFieldCode);
    				if (s.contains(value))
    					{resultList.add(book); }


    Donc la méthode " book.getFieldValue(bookFieldCode) " reçoit un bookFieldCode ( int) et si ce code vaut "0" par exemple elle renverra "getAuthorsString()". Après, dans mon "if" je veux voir si l'auteur du "book" courant correspond à l'auteur reçu dans "value" ( un string donc).

    J’espère que s'est plus clair

  4. #4
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    Ah...

    Note : Votre code n'est toujours pas exécutable ^^

    Sinon pourquoi ne pas faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    getByValueInFieldCode(String value, int bookFieldCode){
    List<Book> resultList = new ArrayList<Book>();
    	if(isAuthorizedFieldCode(bookFieldCode)){
    		for ( Book book : booksList){
    			if (book.getFieldValue(bookFieldCode).contains(value){
    				resultList.add(book);
    			}
    		}
    	}
    return resultList;
    }
    Ce qui rend le code générique... Si le retour est toujours un string...
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2012
    Messages : 18
    Points : 13
    Points
    13
    Par défaut
    Oui, c'est ce que j'avais fait au début mais voila ce que Eclipse me dit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    The method contains(String) is undefined for the type object

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2012
    Messages : 18
    Points : 13
    Points
    13
    Par défaut
    Okkkkkkkkkkkkk.

    La méthode getFieldValue renvoie un Objet, je n'avais pas fait attention.

    C'est bon je pense!

  7. #7
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    tu peux faire un test sur le retour avec "instanceof"
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Création de classes et génération de code automatique
    Par TomDush dans le forum Eclipse Java
    Réponses: 0
    Dernier message: 22/02/2010, 02h06
  2. Code Automatique des boutons et Normes
    Par Alpha31 dans le forum Access
    Réponses: 1
    Dernier message: 09/06/2006, 11h51
  3. Introspection et création de code dynamiquement ?
    Par elitost dans le forum API standards et tierces
    Réponses: 10
    Dernier message: 17/10/2005, 22h43
  4. [Tableaux] Création de lien automatique
    Par GarGamel55 dans le forum Langage
    Réponses: 3
    Dernier message: 17/09/2005, 17h26
  5. Création de codes barres dans un état access
    Par caporal dans le forum IHM
    Réponses: 5
    Dernier message: 15/11/2004, 14h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo