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.NET Discussion :

les propriétés des classes externes


Sujet :

ASP.NET

  1. #1
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut les propriétés des classes externes
    bonjour

    Je suis en train de développer une classe externe et je crois que je suis en train de passer à côté d'un détail simple, mais que je ne capte pas. Cela est certainement du à mes carences en objet pur.

    Donc voilà le code actuel
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    Private _tb As Table
    Private _Id_DetPara As Int16
     
    	Public Property tb() As Table
    		Get
    			Return _tb
    		End Get
    		Set(ByVal value As Table)
    			_tb = value
    		End Set
    	End Property
     
    	Public Property Id_DetPara() As Int16
    		Get
    			Return _Id_DetPara
    		End Get
    		Set(ByVal value As Int16)
    			_Id_DetPara = value
    		End Set
    	End Property
     
    Public dm As New DataManager("CS")
     
    Sub New(ByVal cel As TableCell)
    	Dim dt As DataTable = dm.ExecuterRequeteSimple("SELECT Format FROM MILI_Paragraphe_Detail WHERE Id_Paragraphe_Detail = " & Id_DetPara)
     
    	Dim l As New Label
    	l.Text = "toto" & Id_DetPara
     
    	Dim r As New TableRow
    	Dim c As New TableCell
    	Dim t As New Table
    	tb = t
    	c.Controls.Add(l)
    	r.Cells.Add(c)
    	tb.Rows.Add(r)
    	cel.Controls.Add(tb)
    End Sub
    Et dans une page je fais ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Dim r As New TableRow
    Dim c As New TableCell
    Dim p As New Paragrafe(c)
    p.Id_DetPara = 5
    c.Controls.Add(p.tb)
    r.Cells.Add(c)
    tblGene.Rows.Add(r)
    Ce code est placé dans le Page_Load.

    Et dans la page je vois marqué
    toto0
    Donc, il y a un détail qui m'échappe : pourquoi j'ai 0 là où je devrais avoir 5 ?
    Est ce que j'ai un souci sur l'ordre de création des choses ou est ce que je ne sais pas bien utiliser les propriétés dans une classe ?

    Merci pour votre aide.
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  2. #2
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Quel est le code qui donne toto0, à quel moment est-il appelé?

  3. #3
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    C'est parce que tu mets à jour le id_bidule après avoir créé le table dans le constructeur.
    Si tu veux que ça se mette à jour, il faut que tu re-crées le table dans le set de la propriété id_bidule.

    Je suis obligé d'utiliser des id_bidule et des tables parce que ton code est très difficile à lire (pas dans le sens compliqué, mais dans le sens pas agréable)... Tu devrais utiliser des conventions standard (en ce qui concerne le nommage en particulier) :
    - pas de _
    - majuscule en début des noms de propriétés
    - miniscule en début de nom de membre privé
    - pas de membre de classe public : toujours privé avec des accesseurs public sous forme de propriété.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  4. #4
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Merci les gars

    Alors, le code qui généère le toto0 c'est celui qui est dans la Sub New au niveau du Label.

    Sur la convention de nomage, pourquoi pas, mais le coup des _ sur les Property, c'est mon prof qui m'a appris comme ça et vu qu'il écrit aussi des bouquins pour l'ENI j'ai pris pour argent comptant ce qu'il raconte.

    Sinon, pour revenir sur la solution, je ne comprends pas bien le lien entre le Id_DetPara et la table. C'est deux choses complétement différentes. Le Id_DetPara me sert de clause Where pour ma requête, alors que la table est la pour se faire remplir (sans esprit mal touné ) avec des Row et des Cell.

    Je sèche un peu là.
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  5. #5
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Bon c'était juste pour illustrer que tu te sers de id_bidule lors de la construction de l'objet (sub new). A ce moment id est égal à 0, et donc tu génères le toto0.
    Ensuite (après la construction), tu modifies id_bidule, mais tu ne regénère pas de toto + id_bidule, c'est pour ça que tu as toujours toto0 : parce que toto + index est TOUJOURS généré avant de pouvoir modifier id_bidule.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  6. #6
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    J'ai du mal à suivre.

    je ne comprends pas le coup quand tu dis :
    parce que toto + index est TOUJOURS généré avant de pouvoir modifier id_bidule
    Je ne vois pas d'où sort cet index.

    Peut être qu'il faut que je réexplique autrement, je crains de ne pas avoir été trés clair.

    En fait, ma classe externe est censée me fabriquer un objet qui sera une table. Pour oncstruire cette table je vasi mettre des Row et des Cell. Et dans les Cell je vais mettre des contrôles du genre Label, CheckBox, TexteBox, Image.
    Tout le détail est stocké dans la BDD. Pour retrouver tout le monde j'ai besoin de l'identifiant du paragraphe (puisque mon but est de faire un truc qui gère des paragraphes dans une page). Dans ma BDD j'ai des tables qui gèrent le contenu de chaque paragraphe par un identifiant.

    Donc je me suis dit que je pouvait monter une classe extrne pour faire un objet avec deux propriétés : une table qu'il va renvoyer et un Integer qu'il va prendre pour servir de clause WHERE aux requêtes.

    Et le code que j'ai placé est là pour montrer que lorsque je fais ça, ma propriété Id_DetPara arrive avec un 0 dedans, alors qu'à partir de ma page j'y ai mis un 5.

    Est ce que je suis plus clair avec cet exposé ?

    Maintenant il faut me pardonner ma défaillance car je ne suis pas un crack en matière de POO, je m'y suis mis sur le tard et donc j'ai quelques lacunes à combler. En fait je croyais avoir compris le princpe, mais je pense que je me fourvoie sur certains détails.
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  7. #7
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    En une phrase, ton label est initialisé avant que tu mettes 5 dans id.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  8. #8
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    D'accord, maintenant je comprends mieux.
    Donc, pour être d'avoir bien capté : lorsque j'appelle la sub New, toutes mes propriétés sont à 0 (enfin selon le cas, cahine vide, objet non instancié, ...)
    Donc si j'appelle le contenu d'un propriété dans la Sub New, je l'ai DMC.

    Mais alors, comment je fais pour pouvoir utiliser les propriétés. C'est là que je capte pas bien le coup des Constructeurs.

    Est ce qu'il faut que j'appelle un Sub ou une Fonction que je mettrais ailleurs dans la Classe ?
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  9. #9
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Tu peux passer l'id en paramètre du constructeur.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  10. #10
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Ah bon, c'est le seul moyen ?
    Je trouve que c'est pas trés propre.

    Bon, ok, je fais comme ça.

    Merci pour ton aide.
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  11. #11
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Citation Envoyé par zooffy Voir le message
    Ah bon, c'est le seul moyen ?
    Je trouve que c'est pas trés propre.
    Au contraire

  12. #12
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Etant donné que ton id est utilisé dans la construction de l'objet, c'est justement la méthode propre.
    Si tu ne veux pas passer ton id en paramètre déplace la création du label dans une autre méthode. Tu pourrais appeler cette méthode dans le set de l'id, pour regénérer ton label.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  13. #13
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Merci les gars pour cette petite leçon de nettoyage dérrière les oreilles du code.

    Si vous dites que c'es ça la méthode propre, alors je l'utilise.
    Du coup, j'ai pas attendu et je l'ai fait et top cool, ça marche bien.

    A la prochaine
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Lire et modifier les propriétés des fichiers Office
    Par SilkyRoad dans le forum Contribuez
    Réponses: 4
    Dernier message: 18/09/2006, 22h25
  2. Réponses: 4
    Dernier message: 16/08/2006, 09h19
  3. [Smarty] Automatiser les appels des fichiers externes (CSS/JS etc)
    Par speedev dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 15/06/2006, 13h43
  4. specifier les chemins des .class
    Par draken dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 29/07/2003, 09h35

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