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

Dotnet Discussion :

Conception de classes


Sujet :

Dotnet

  1. #1
    Membre averti Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Points : 410
    Points
    410
    Par défaut Conception de classes
    Salut

    J'ai une classe avec plusieurs variables membres ... et j'aimerais creer des classes derivées de cette classe, mais dont certaines accedent a des variables membres et d autres non...(les membre sont deja definie en protected)...

    Est il possible de changer dynamiquement la portee des variables membres (public, private, protected) ?

    thx @+

  2. #2
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Points : 8 538
    Points
    8 538
    Par défaut
    C'est un peu bizard come héritage...
    Si tu ne veux pas que les classes filles accèdent aux champs de la classe mère, ne les met pas dans la classe mère mais directement dans les classes filles.

  3. #3
    Membre expérimenté
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Points : 1 505
    Points
    1 505
    Par défaut
    Citation Envoyé par The_badger_man
    C'est un peu bizard come héritage...
    Si tu ne veux pas que les classes filles accèdent aux champs de la classe mère, ne les met pas dans la classe mère mais directement dans les classes filles.
    +1

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 110
    Points : 140
    Points
    140
    Par défaut
    Ou alors met tes champs de ta classe mère en private et non en protected comme cela tes classes filles n'y auront pas accès.

  5. #5
    Membre averti Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Points : 410
    Points
    410
    Par défaut
    Voici un exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    class m{
    private int a;
    private int b;
    private int c;
    }
    en fait, j'aimerais derive cette classe en une dizaine d'autres classes ...
    le seul trucs qui change c'est que certaines pourront, par exemple modifie b et c mais pas a, et d'autres pourront modifier juste a et pas b et c ... mais a, b et serront dans les classes derivee mais pas forcement initialisé avec la meme valeur.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 110
    Points : 140
    Points
    140
    Par défaut
    Citation Envoyé par Seth77
    en fait, j'aimerais derive cette classe en une dizaine d'autres classes ...
    le seul trucs qui change c'est que certaines pourront, par exemple modifie b et c mais pas a, et d'autres pourront modifier juste a et pas b et c ... mais a, b et serront dans les classes derivee mais pas forcement initialisé avec la meme valeur.
    Alors là effectivement on est mal parti...

    On ne modifie pas les niveaux d'accès aux membres / proprietés d'une classe dynamiquement, c'est contraire même au principe de niveau d'accès.

    Par contre ce que tu peux faire c'est créer des accesseurs dans ta classe derivé sur des proprietés internes heritées de la classe parente de cette façon :

    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
        Public Class classPrimaire
            Protected _a As Integer
            Protected _b As Integer
            Protected _c As Integer
        End Class
     
        Public Class classDerive
            Inherits classPrimaire
     
            Public ReadOnly Property a() As Integer
                Get
                    Return _a
                End Get
            End Property
     
            Public Property b() As Integer
                Get
                    Return _b
                End Get
                Set(ByVal value As Integer)
                    _b = value
                End Set
            End Property
        End Class
    La classe "classDerive" permet de lire "a" mais pas d'y ecrire, alors que l'accès est total sur "b" et ce grace aux accesseurs où tu peux utiliser les mots clés "ReadOnly" et "WriteOnly" afin de gerer tes droits en lecture/ecriture.

    C'est ca que tu cherchais à faire ?

  7. #7
    Membre averti Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Points : 410
    Points
    410
    Par défaut
    Citation Envoyé par Tnopy
    Alors là effectivement on est mal parti...

    On ne modifie pas les niveaux d'accès aux membres / proprietés d'une classe dynamiquement, c'est contraire même au principe de niveau d'accès.

    Par contre ce que tu peux faire c'est créer des accesseurs dans ta classe dervié sur des proprieté internes heritées de la classe parente de cette façon :

    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
        Public Class classPrimaire
            Protected _a As Integer
            Protected _b As Integer
            Protected _c As Integer
        End Class
     
        Public Class classDerive
            Inherits classPrimaire
     
            Public ReadOnly Property a() As Integer
                Get
                    Return _a
                End Get
            End Property
     
            Public Property b() As Integer
                Get
                    Return _b
                End Get
                Set(ByVal value As Integer)
                    _b = value
                End Set
            End Property
        End Class
    La classe "classDerive" permet de lire "a" mais pas d'y ecrire, alors que l'accès est total sur "b" et ce grace aux accesseurs où tu peux utiliser les mots clés "ReadOnly" et "WriteOnly" afin de gerer tes droits en lecture/ecriture.

    C'est ca que tu cherchais à faire ?

    Oui merci ...

    c'est bien ce que je pensais ... en fait il faut tout de meme que je me tape tous les accesseurs pour chaque classe ... il n'y a donc rien de plus rapide ....
    j'avais pense a l'heritage multiple , mais apparement cela ne marche pas en C#

    une question :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Public Class classDerive
            Inherits classPrimaire
    meme chose que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Class classDerive : classPrimaire
    ??

    thx @+

  8. #8
    Membre expérimenté
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Points : 1 505
    Points
    1 505
    Par défaut
    Citation Envoyé par Seth77
    une question :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Public Class classDerive
            Inherits classPrimaire
    meme chose que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Class classDerive : classPrimaire
    ??

    thx @+
    oui

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 110
    Points : 140
    Points
    140
    Par défaut
    Oui, j'ai fait mon exemple en Visual Basic.NET en effet, mais il n'y a que la grammaire qui change le fonctionnement reste le même.

Discussions similaires

  1. Probleme de conception de classes
    Par Seth77 dans le forum C#
    Réponses: 11
    Dernier message: 31/01/2007, 10h40
  2. [POO] conception des classes
    Par poukill dans le forum C++
    Réponses: 229
    Dernier message: 19/07/2006, 09h28
  3. [conception] reprise classes mal pensées
    Par in dans le forum Général Java
    Réponses: 8
    Dernier message: 05/06/2006, 14h45
  4. Conception de classe
    Par Azharis dans le forum C++
    Réponses: 9
    Dernier message: 17/12/2005, 11h15
  5. probleme de conception de classe
    Par NhyMbuS dans le forum C++
    Réponses: 2
    Dernier message: 08/05/2005, 18h10

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