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 :

Organiser mes classes


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 612
    Par défaut Organiser mes classes
    Bonjour, j'aimerais organiser une partie de ma DLL avec ce system de classe


    une classe "Connection" qui representeras une connection a un serveur

    une enumeration "TypeConnection" qui seras une des caracteristiques de Connection(MySQL, SQL, Access....)

    la classe "Connection" pourras se specialiser en une classe "MySQLConnection" ou "SQLConnection" ou autre.


    j'ai deja realiser quelque TP sur le sujet(specialisation de classe) mes les classes de specialitè était vide et je vois pas trop par ou mis prend pour mettre en place cette organisation

    il va de soit qu'il n'y auras pas que sa, d'autre classe utiliserons les futur objet "Connection" donc il faut que depuis "Connection" je puisse acceder au element de mes classes de specialitè


    je sais pas si je suis très clair....sinon dite le j'essayrè de fair un schema

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations forums :
    Inscription : Février 2006
    Messages : 564
    Par défaut
    Regarde cet article, il pourra t'aider.

    http://ditch.developpez.com/dotnet/factories/

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Juste en passant, tu sais que ce que tu essaies de faire existe déjà ? Ça s'appelle ADO.NET... donc ce n'est peut-être pas la peine de réinventer la roue. La seule étape qui n'est pas générique, c'est l'instantiation de la connexion, où il faut spécifier le type de connexion (SqlConnection, MySQLConnection...). Ensuite tu peux te débrouiller avec juste des interfaces génériques:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    IDbConnection cnx = new MySQLConnection(connectionString);
    cnx.Open();
    IDbCommand cmd = cnx.CreateCommand();
    cmd.CommandText = "SELECT * FROM ....";
    IDbDataReader reader = cmd.ExecuteReader();
    ...
    reader.Close();
    cnx.Close();
    Mais bien sûr tu peux toujours faire une couche d'abstraction pour créer l'objet connexion...

    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
     
    public IDbConnection CreateConnection(TypeConnection type, string connectionString)
    {
        switch(type)
        {
            case TypeConnection.SQL:
                return new SqlConnection(connectionString);
                break;
            case TypeConnection.MySQL:
                return new MySQLConnection(connectionString);
                break;
            case TypeConnection.Toto:
                return new TotoConnection(connectionString);
                break;
            ....
        }
    }
    il faut que depuis "Connection" je puisse acceder au element de mes classes de specialitè
    Ça ce n'est pas possible, la classe de base ne connait pas nécessairement les classes dérivées... Si tu veux accéder à un membre spécifique de la classe MySQLConnection, par exemple, il faut que tu fasses un cast:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Connection cnx = Connection.Create(TypeConnection.MySQL);
    cnx.MethodeSpecifiqueMySQL(); // Ne marche pas car MethodeSpecifiqueMySQL n'est pas déclaré dans la classe Connection
    MySQLConnection mycnx = cnx as MySQLConnection;
    mycnx.MethodeSpecifiqueMySQL(); // Fonctionne parce que mycnx est de type MySQLConnection

Discussions similaires

  1. [PHP 5.4] Organisation de mes classes
    Par ben01n dans le forum Langage
    Réponses: 3
    Dernier message: 28/05/2014, 14h11
  2. Organiser mes classes
    Par oasiscreation dans le forum Langage
    Réponses: 6
    Dernier message: 22/12/2009, 13h16
  3. Organisation et optimisation de mes classes?
    Par Sylk dans le forum Langage
    Réponses: 4
    Dernier message: 30/11/2007, 10h22
  4. [VB.Net 2.0] Comment organiser mes classes ?
    Par arno2000 dans le forum Accès aux données
    Réponses: 1
    Dernier message: 26/06/2006, 15h28
  5. ClassWizard --> comment lui faire reconnaitre mes classes
    Par bigboomshakala dans le forum MFC
    Réponses: 6
    Dernier message: 06/05/2004, 10h50

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