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

ASP Discussion :

Intéraction entre les classes et les tables de la BD


Sujet :

ASP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2005
    Messages : 23
    Points : 13
    Points
    13
    Par défaut Intéraction entre les classes et les tables de la BD
    Bonjour,

    j'espère ne pas trop vous décourager par la longueur de ce post, mais j'ai vraiment besoin d'aide avec la conception de classes. Je tente de modéliser un programme en créant des classes vbscript, et j'aurais besoin de quelques conseils.

    Mes classes sont reliées à une base de donnée sql server en utilisant ADO, et chaque fois que je cré un nouvel ensemble de classes, j'arrive toujours au même questionnement à propos du chargement ou de l'enregistrement des données. À savoir est-ce que je dois optimiser la vitesse de traitement ou réduire la redondance de code, j'explique par un exemple simple:

    Supponsons que j'ai les classes Class1, Class2 et Class3
    Class1 possède dans ses attributs une liste d'objets de Class2 et Class2 possède dans ses attributs une liste d'objets de Class3.

    À ces 3 classes sont associées 3 tables ayant les mêmes relations soit des relations de 1 à plusieurs entre Table1, Table2 et Table3

    Je peux avoir utiliser l'objet de la Class2 seul, sans passer par un objet de Class1, même chose pour l'objet de Class3, je peux avoir à l'utliser sans passer par un objet de Class2 et Class1.

    J'hésite toujours entre 2 solutions et je ne sais jamais laquelle favoriser lorsque j'ai à enregistrer le contenu de l'objet de Class1.

    Solution envisageable #1
    Appeler une routine de l'objet de Class1 qui boucle et appelle la routine de chargement(ou enregistrement) de chaque objet de Class2 et cette routine de l'objet de Class2 à son tour boucle pour appeler la routine de chargement(ou enregistrement) de chaque objet de Class3.

    Dans ce cas #1, j'aurai probablement une grande dégradation des performances puisque je devrai ouvrir plusieurs recordset, soit le nombre d'objets de Class2 contenus dans l'objet de Class1 multiplié par le nombre d'objets de Class3 contenus dans l'objet de Class2.

    Solution envisageable #2
    Dans l'objet de Class1 j'ai une routine qui ouvre un recordset pour les donnés de l'objet de Class1, un autre pour la liste des objets de Class2, et un autre qui s'occupe de la liste des objets de Class3.

    Dans ce cas #2, j'ai beaucoup moins d'ouverture/fermeture de recordset, quoique j'aie plus d'enregistrements dans ces recordsets. Le désavantage par contre est qu'étant donné que je peux utiliser un objet de Class2 sans objet de la Class1, j'ai quand même besoin dans la Class2 d'une routine de chargement(ou enregistrement) des données de cet objet. Et donc, je me retrouve avec du code en double ou en triple qui fait sensiblement la même chose et en tant que programmeur je déteste celà, ça fait du code plus difficile à maintenir.

    Donc pour conclure, j'ai une solution d'un côté très belle et très encapsulé, avec aucun code qui se répète, mais une dégradation possible des performances. Et de l'autre côté j'ai une solution plus performante en terme de rapidité, mais plus difficile à maintenir étant donné le code qui se répète à plusieurs endroits.

    Peut-être y a-t-il une autre façon de voir complètement différente à laquelle je n'aurais pas pensé, si quelques-uns d'entre vous pourrait m'éclairer je serais très heureux.

    Merci
    Jonathan

  2. #2
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    Salut,
    J'avoue ne pas utiliser les classes. As-tu un exemple plus concret?
    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2005
    Messages : 23
    Points : 13
    Points
    13
    Par défaut
    Je n'ai pas vraiment de code à fournir en exemple,
    mais je peux donner un cas un peu plus concret.

    Prenons une classe Compagnie, une classe Departement et une classe Employe.

    Comme j'expliquait précédemment, l'objet de Class1 donc de la classe Compagnie utilise une liste d'objets de classe Departement et chaque objet de la classe Departement utilise une liste d'objets de la classe Employe.

    Supposons que je veux charger une entreprise de la base de donnée dans l'objet Compagnie. J'hésite si je dois avoir une fonction dans Compagnie, qui appelle pour chaque département une fonction de chargement dans Departement qui appelle pour chaque employé une fonction de chargement dans Employe.

    Cette méthode a pour effet de créer bcp d'ouverture de recordset, donc une dégradation possible des performances.

    Tandis que je pourrais appeler seulement une routine de Compagnie qui charge tous les départements et les employés de chaque département dans la même routine, donc moins d'ouverture de recordsets mais du code en double puisque les classes Departement et Employe doivent elles aussi avoir leur routines de chargement...

    Je peux vouloir utiliser un objet de la classe Employe indépendamment d'un département et d'une compagnie. C'est pourquoi j'ai besoin d'une routine de chargement dans Employe également. Et donc j'hésite si je dois avoir du code en double en ayant une ouverture de la table Employe dans la classe Employe, dans la classe Departement et dans la classe Compagnie; ou n'avoir qu'une seule routine d'ouverture de la table Employe dans la classe du même nom et l'appeler des autres classes avec une dégradation de performance possible...

    J'espère que ce n'est pas trop nébuleux, en espérant que ça éclaircit un peu

Discussions similaires

  1. les services métiers / les classes métiers / les classes services
    Par titititiangel dans le forum Développement Web en Java
    Réponses: 0
    Dernier message: 27/05/2013, 11h01
  2. les classes et les templates dans les plugins
    Par asoka13 dans le forum C++
    Réponses: 22
    Dernier message: 24/01/2008, 17h11
  3. [C#] Diffèrence entre les structures et les classes
    Par Kr00pS dans le forum Windows Forms
    Réponses: 2
    Dernier message: 31/08/2006, 12h42
  4. Comparaison entre les classes et les fonctions
    Par Ashgenesis dans le forum Langages de programmation
    Réponses: 6
    Dernier message: 08/09/2005, 19h09

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