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

Langages de programmation Discussion :

comment faire en objet ?


Sujet :

Langages de programmation

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 76
    Points : 45
    Points
    45
    Par défaut comment faire en objet ?
    bonjour,

    j'ai une classe requete dans laquelle j'ai plusieur fonctions:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public string GetListeProprio(String no_commune, String nom_prop){...}
    public string  GetListeRue(String no_commune, String nom_rue){...}
    ...
    et dans une seconde classe j'ai les memes fonctions qui appel celle de requete

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public string GetListeProprio(String no_commune, String nom_prop)
    {
        return MaMethode(Requete.GetListeProprio(no_commune, nom_prop)));
    }
    
    public string GetListeRue(String no_commune, String nom_rue)
    {
        return MaMethode(Requete.GetListeRue(no_commune, nom_rue)));
    }
    comment puis-je eviter cette répétion de code semblable ?
    (j'ai une vingtaine de fonction faisant exactement ceci)

    merci d'avance de votre aide ;-)

    David

  2. #2
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 133
    Points : 169
    Points
    169
    Par défaut
    On voudrait une méthode générique

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public string GetListe<T>(String param1, String param2)
    {
        return MaMethode(Requete.GetListe<T>(param1, param2)));
    }
    ou bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public string GetListe(T type, String param1, String param2)
    {
        return MaMethode(Requete.GetListe(type, param1, param2)));
    }
    Cela nous indique que Proprio et Rue devraient hériter d'une interface commune qui implémenterait GetListe().

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 76
    Points : 45
    Points
    45
    Par défaut
    je n'ai pas bien cerné,

    quel sera le lien entre l'interface et ma classe Requete ?
    et ma seconde classe (nomée Matrice) implementera cette interace ?

  4. #4
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 723
    Points
    5 723
    Par défaut
    euh à vrai dire cela ne devrait pas vraiment être un problème c'est une conception courante et non erronée d'ailleurs cela s'appelle en terme de pattern la stratégie ou encore la délégation.

  5. #5
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 133
    Points : 169
    Points
    169
    Par défaut
    Désolé, j'étais pressé et donc je n'ai pas eu le temps de développer. On a plusieurs façons de faire, en voici une qui finalement n'utilise pas les interfaces (en java mais c'est faisable en d'autres langages également) :

    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
    21
    22
    23
    24
    25
    26
    27
    28
    package generique;
    
    public class SecondeClasse {
    
    	/**
    	 * @param args
    	 */
    	public Requete requete ;
    	public String MaMethode(String s)
    	{
    		return s ;
    	}
    	public <T extends Colonne> String GetListe(T t, String param1, String param2)
    	{
    		return MaMethode(requete.GetListe(t, param1, param2)) ;
    	}
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		SecondeClasse sec = new SecondeClasse() ;
    		sec.requete = new Requete() ;
    		Proprio proprio = new Proprio() ;
    		
    		System.out.println(sec.<Proprio>GetListe(proprio, "no_commune", "nom_prop")) ;
    
    	}
    
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    package generique;
    
    public class Requete {
    	public <T extends Colonne>String GetListe(T t,String param1, String param2)
    	{
    		return t.GetListe(param1, param2) ;
    	}
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    package generique;
    
    public abstract class Colonne {
    	public abstract String GetListe(String param1, String param2) ; 
    
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    package generique;
    
    public class Proprio extends Colonne
    {
    	public String GetListe(String param1, String param2) {
    		return "(stub)GetListe<Proprio>"+ ", p1=" + param1 + "p2=" + param2 ;
    	}
    	
    }
    Effectivement, passer par les delegates semble meilleur.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 76
    Points : 45
    Points
    45
    Par défaut
    ok super!
    merci du coup de pouce

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

Discussions similaires

  1. Comment faire un objet tableau YUI ?
    Par MinaSenegal dans le forum Zend Framework
    Réponses: 1
    Dernier message: 20/04/2009, 11h16
  2. [VPython] Comment faire tourner un objet Curve ?
    Par aliassaf dans le forum 3D
    Réponses: 2
    Dernier message: 26/07/2006, 00h46
  3. Comment faire pour faire glisser un objet dans une form ?
    Par Olun dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 05/09/2005, 17h49
  4. Réponses: 2
    Dernier message: 05/07/2005, 17h40
  5. comment faire pour imprimer à l'écran un objet
    Par GConstant dans le forum Général Python
    Réponses: 10
    Dernier message: 11/08/2004, 11h31

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