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

C# Discussion :

Méthode(s) & paramètre(s)


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 34
    Par défaut Méthode(s) & paramètre(s)
    Bonjour,

    j'ai un petit soucis dans mon code actuel.


    La classe Entity contient 3 propriétés : Nom, Prenom, Sexe.

    La classe Service contient 1 méthode.

    La classe Mappage contient x méthodes contenant les requêtes.

    La classe CAD permettant la connexion à la base de données.

    Je souhaite que la méthode Service (class Service) appelle une méthode spécifique (class Mappage) selon des paramètres.

    Par exemple :

    Afficher la liste des hommes.

    Méthode getMen :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public getMen(string sexe)
    {
    	this.rq_sql = "SELECT * FROM myTABLE WHERE Sexe = '" +sexe+ "';";
    	Console.WriteLine("getMen : OK");	
    	return this.rq_sql;
    }
    Afficher la liste des hommes s'appelant Test.

    Méthode getMenByName :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public getMenByName(string sexe, string name)
    {
    	this.rq_sql = "SELECT * FROM myTABLE WHERE Sexe =  '" +sexe+ "' AND Nom = '" +name+ "'
    	Console.WriteLine("getMenByName : OK");	
    	return this.rq_sql;
    }
    Voila deux méthodes possibles.

    Maintenant je souhaite créer ma méthode Service (class Service) qui selon les paramètres, appelle LA bonne méthode.

    Exemple : je fournit le sexe, il appelle la méthode getMen; je fournit le sexe ET le nom, il appelle la méthode getMenByName. Ainsi de suite !

    Je ne sais pas si c'est possible mais ce serait vraiment pratique.

    Merci d'avance pour votre aide !

  2. #2
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2008
    Messages : 231
    Par défaut
    Tu as différentes possibilités, dans ta class service tu ne veux qu'une seule méthode ou tu peux avoir plusieurs méthodes qui porte le même nom.

    Je m'explique, déjà faudrait peut-être changer quelques choses dans tes class le Sex, bon je suppose que c'est soit Masculin (Men, Homme, comme tu veux) ou Femme (...). Tu peux faire un enum.

    Ensuite tu peux faire ceci :
    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
    29
     
    public class Service
    {
        public Entity GetEntity(Sex sex)
        {
           // requete avec que le sex;
        }
     
        public Entity GetEntity(Sex sex, string Name)
        {
           // requete avec sex + nom
        }
     
     
        public Entity GetEntity(Sex sex, string Name, string Prenom)
        {
           // requete avec sex + nom + Prenom
        }
     
        public Entity GetEntity(string Name, string Prenom)
        {
           // requete avec nom + Prenom
        }
     
        public Entity GetEntity(string Name)
        {
           // requete avec nom
        }
    }
    Comme tu peux voir, tu as 1 méthodes pour 5 surcharges ....

    Ou sinon une méthode et des test conditionnelle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public class Service
    {
        public Entity GetEntity(string sex, string Name, string Prenom)
        {
            // Début de construction de ta requete (SELECT ... FROM ...)
            // Where
            if(!string.IsNullOrEmpty(sex)) { // ajoute une clause }
            if(!string.IsNullOrEmpty(Name)) { // ajoute une clause }
            if(!string.IsNullOrEmpty(Prenom)) { // ajoute une clause }
            // Fin de ta requete
        }
    }
    Bon après je ne pense pas que se soit à la couche Service de faire ce genre d'opération, ton service doit être capable d'appeler la bonne méthode de ton driver de base de données en fonction de son appel.

    La première solution est beaucoup plus souple et évolutive

    En gros une GUI demande : "Donne moi tous les svp" et lui va dire à la sa couche données, => "Fait moi la requete pour me sortir tous les Hommes svp", le drivers de base de données, OK tiens les voilà ... et le Service dit ok (fait la transformation, les règle business etc.) et à la GUI (ou autre client) Tiens le résultat.

    Je sais mon explication est pourri ... Mais je l'ai fait en au moins de 2 minutes

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 34
    Par défaut
    J'ai bien compris ton premier exemple, cependant dans ce cas, je ne passe plus par ma classe de Mappage c'est bien ça ?

    Pour la seconde solution, j'aimerais un peu plus d'explications si possible !

    Mon objectif est le suivant : le client demande la liste des hommes, la classe Service, appelle la méthode-requête correspondante et retourne le résultat. Ainsi je n'ai qu'une méthode capable de "choisir" la bonne requête.

Discussions similaires

  1. Réponses: 1
    Dernier message: 04/03/2009, 00h11
  2. Problème méthode vector en paramètre
    Par SebastianPx dans le forum Débuter
    Réponses: 5
    Dernier message: 02/01/2009, 13h53
  3. [Debutant]Méthode, liste de paramètres et un tableau
    Par Carlito_superheros dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 15/05/2008, 14h55
  4. appel d'une méthode avec plusieurs paramètres
    Par soujava dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 11/05/2008, 23h30
  5. [SQL] Lister les méthodes et les paramètres d'entrée d'une classe
    Par arnolem dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 11/08/2006, 19h55

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