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

Architecture Discussion :

Développement en couches et Héritage


Sujet :

Architecture

  1. #1
    Membre habitué Avatar de PatStan17
    Homme Profil pro
    Chef de projet / Développeur
    Inscrit en
    Décembre 2008
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet / Développeur
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2008
    Messages : 307
    Points : 155
    Points
    155
    Par défaut Développement en couches et Héritage
    Bonjours à tous ...

    Je commence développer un intranet en AspNet en utilisant C# et une architecture en couches.

    j'ai deux classe : Tiers et PersonnePhysique

    un tier à un identifient et un nom, un tiers peut être une personne physique ou une personne morale.

    une PersonnePhysique à un identifiant un prénom et hérite de la classe tiers son nom.


    J'ai un couche DAO qui se charge d'ouvrir la connexion sur le SGBD(Sql Serveur) et de renvoyer des DataReader, des DataSet et d'executer des requêtes

    J'ai une couche BLL avec les classes : Tiers et Personne

    j'ai une couche DAL avec mes classes : TiersDAL et PersonneDAL
    qui comporte chacune une méthode pour renvoyer les données vers mes objets Tiers et Personne

    Exemple pour Personne :

    /// <summary>
    /// Renvois les données personne
    /// </summary>
    /// <returns></returns>
    public Bll.LesTiers.Personne RenvoisPersonne(int IdPersonne)
    {
    string SQL;
    SQL = "SELECT * FROM TIEPersonnes WHERE IdPersonne=" + IdPersonne;
    IDataReader dr;
    Bll.LesTiers.Personne Pers = new Bll.LesTiers.Personne();


    try
    {
    dr = BaseDeDonnees.RenvoisDataReader(SQL);
    if (dr.Read())
    {
    Pers.IdPersonne = int.Parse(dr["IdPersonne"]);
    Pers.IdTiers = int.Parse(dr["IdTiers"]);
    Pers.Prenon01 = int.Parse(dr["Prenon01"]);
    Pers.Prenon02 = int.Parse(dr["Prenon02"]);
    Pers.Prenon03 = int.Parse(dr["Prenon03"]);
    Pers.IdOperateur = int.Parse(dr["IdOperateur"]);
    Pers.DateSaisie = dr["DateSaisie"].ToString();

    }
    dr.Close();
    return Pers;
    }
    catch (Exception Erreur)
    {
    throw Erreur;
    }
    }

    Je voudrai faire hériter la classe Tiers vers la classe Personne ... c'est logique... d'un point de vue syntaxe pas de problème ...mais je ne vois plus comment organiser ma couche DAL ...et instancier mes objets ..Quand je veux un objet personne ...je dois instancier aussi un objet tiers pour avoir mes propiétés communes avec mon objet Personne ? et à quel endroit ?

    Merci de vos réponses ...je suis débutant enc# et en poo ...autant commencer avec les bonnes méthodes ...


    Patrick
    Yakatépé

  2. #2
    Expert éminent sénior

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Points : 12 465
    Points
    12 465
    Par défaut
    Bonjour,

    deja, question a 2cts, est-ce que l'identifiant de Tiers et l'identifiant de Personne sont le meme ? ou est-ce qu'une PersonnePhysique a 2 identifiants (le sien + celui herite de Tiers) ?

    Pour ta séparation en couches, personnellement, je fais plutot qq chose dans ce gout-la:
    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
    ///Couche BLL
    public Personne RenvoisPersonne(int IdPersonne){
      DataRow dr = DAL.RenvoiePersonneParId(IdPersonne);
      return new Bll.LesTiers.Personne(dr);
    }
    
    //Couche DAL
    public DataRow RenvoiePersonneParId(intIdPersonne){
    
      string SQL;
      SQL = "SELECT * FROM TIEPersonnes WHERE IdPersonne=" + IdPersonne;
    
      return BaseDeDonnees.RenvoieDataRow(SQL);
    }
    Comme ca, ta bll ne connait pas la structure de la base de donnees, mais sait seulement que ta dal retourne un datarow, charge a lui d'aller recuperer le bon ensemble de donnees dans ce datarow.

    Pour ton pb d'heritage, si ton objet Personne est un objet Tiers, tu n'as pas a instancier un second objet Tiers, Personne aura toutes les proprietes et methodes d'un Tiers...

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

  3. #3
    Membre habitué Avatar de PatStan17
    Homme Profil pro
    Chef de projet / Développeur
    Inscrit en
    Décembre 2008
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet / Développeur
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2008
    Messages : 307
    Points : 155
    Points
    155
    Par défaut
    Merci pour ta réponse ....


    La structure (simplifiée de mes tables ets la suivante

    Table Tiers

    IdTiers
    Nom

    Table Personne

    IdPersonne
    IdTiers
    Prenom01
    Prenom02
    ...etc


    Chacun à donc son identifiant...

    Je crois que je m'explique mal ...

    le code que j'ai founis se trouve sur ma couche DAL, et ma couche BLL ne voit absolument pas MA bdd.... dans ma couche BLL , pour chaque classe je ne défini que les propriétés EXEMPLE pour ma classe Tiers :


    public class Tiers
    {
    private int m_IdTiers; //Identifiant Personne
    private string m_Nom; //Nom du tiers


    public Tiers()
    {

    }


    public int IdTiers
    {
    get
    {
    return m_IdTiers;
    }
    set
    {
    m_IdTiers = value;
    }
    }

    public string Nom
    {
    get
    {
    return m_Nom;
    }
    set
    {
    m_Nom = value;
    }
    }


    }

    Pour ma couche DAL

    public class TiersDAL
    {
    public Dao.IDataBaseDAO BaseDeDonnees;

    public TiersDAL()
    {
    BaseDeDonnees = DataBaseFactoryDAO.TypeBase();
    }


    /// <summary>
    /// Renvois les données Tiers
    /// </summary>
    /// <returns></returns>
    public Bll.LesTiers.Tiers RenvoisTiers(int IdTiers)
    {
    string SQL;
    SQL = "SELECT * FROM TIETiers WHERE IdTiers=" + IdTiers;
    IDataReader dr;
    Bll.LesTiers.Tiers Tier = new Bll.LesTiers.Tiers();


    try
    {
    dr = BaseDeDonnees.RenvoisDataReader(SQL);
    if (dr.Read())
    {
    Tier.IdTiers = int.Parse(dr["IdTiers"]);
    Tier.Nom = dr["Nom"].ToString();
    }
    dr.Close();
    return Tier;
    }
    catch (Exception Erreur)
    {
    throw Erreur;
    }
    }

    }



    Quand j'ai besoin d'un objet sur mon interface j'instancie comme ça :

    TiersDAL TDal = new TiersDAL();
    Tiers Tie01 = new Tiers();
    Tie01 = TDal.RenvoisTiers(IdTiers)); <= Je récup les données


    Pour l'héritage je crois que j'ai trouvé ..


    MERCI

    Patrick
    Yakatépé

Discussions similaires

  1. Réponses: 8
    Dernier message: 19/07/2011, 08h51
  2. Développement en couches et Lazy Loading
    Par korrigan dans le forum Architecture
    Réponses: 2
    Dernier message: 12/11/2009, 19h09
  3. Mieux comprendre le développement en couche
    Par rvzip64 dans le forum MVC
    Réponses: 2
    Dernier message: 26/06/2009, 08h34
  4. Visual studio et le développement en couche
    Par Gregs dans le forum Visual Studio
    Réponses: 2
    Dernier message: 27/03/2009, 13h03
  5. [N-Tier] Guide pour développement en couche c#
    Par altair8080 dans le forum Autres
    Réponses: 0
    Dernier message: 12/11/2008, 12h56

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