Bonjour,
Je continue ma démarche pour coder proprement. Après avoir abandonné les dataBinding, dataRelation, etc... (j'utilise des DTO et des Liste de DTO pour alimenter mes différents controles avec une couche IU, BAL, BEL et DAL.
Je souhaiterais quelques précisions concernant l'approche entre la couche IU et BAL. Je m'explique, après avoir lu un poste de 2012 qui résume bien mon problème et alimente bien le débat (http://www.developpez.net/forums/d11...ntexte-actuel/) j'ai du mal à faire un choix en termes d'approche:
J'ai codé dans ma couche IU, càd dans mon formulaire à la fois la partie UI et la partie BAL (), au chargement du formulaire j'alimente un treeview (catégories et sous catégories) avec un appel à la couche DAL pour récupérer la List<Categorie> listeCategorie (mapping objet<->bdd sql server). On retrouve dans ma couche UI un code comme celui-ci :
treeView1.Nodes.Add(tnPere);
L'idée est donc de gérer le contrôle treeView1 depuis ma couche BAL ! et là les questions commencent :
Je passe l'instance de mon formulaire à la méthode de ma couche BAL pour qu'il puisse gérer tous les contrôles (les contrôles accessibles à oui)
IL NE FAUT PAS IL FAUT RESPECTER L'indépendance des objets. tu enfreins le principe de l'encapsulation, Bing bang ok
Il faut implémenter dans la couche UI, des méthodes pour gérer les propriétés des objets, exemple trouvé dans le post cité précédemment
Je cite : "De toutes façons, ce n'est pas du tout une bonne approche ; en rendant public les contrôles de la Form, tu enfreins le principe de l'encapsulation. Si les contrôles sont privés par défaut, ce n'est pas par hasard : seule la Form qui les définit devrait pouvoir y accéder. Si tu dois donner la possibilité à d'autres classes de modifier le texte d'une TextBox, crée une propriété pour ça"
1 2 3 4 5
| public string TotoText
{
get { return textBox1.Text; }
set { textBox1.Text = value; }
} |
Donc ça c'est très bien mais moi je souhaite faire davantage que récupérer la valeur d'une TextBox ! comme pour mon
exemple "treeView1.Nodes.Add(tnPere)" donc il faut imaginer une méthode qui retourne l'instance du treeView ?
Votre avis ?
Autre question, ne faut 'il au démarrage de l'application appeler une méthode de la couche BAL qui va instancier un objet de la classe du formulaire à afficher au démarrage et de ce fait "connaitre" l'objet formulaire et donc, pouvoir le manipuler (du moins ses objets controle) ?
Votre avis ?
J'attends avec impatiente votre opinion pour valider mon paradigme approche de développement (il faut pas s'enflammer)
Merci
Partager