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

C# Discussion :

De l'accès aux propriétés d'une classe


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 46
    Par défaut De l'accès aux propriétés d'une classe
    Salut tout le monde,
    Je débute en C# (pas en dev) et premier truc chelou :
    l'accès aux propriétés d'une classe.
    En C++ on aurait un basique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    class Personne
    {
        protected:
            int age;
        public:
            int getAge();
    };
     
    int Personne::getAge()
    { return age };
    Et en C# je vois un :
    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
     
    class Personne
    {
    	private int age;
     
     
    	public 	int Age {
    		get {
    			return age;
    		}
    		set {
    			age = value;
     
    		}
     
    	}
    }
    Et là je me dis dans ma tête : "mouarf, ça sert à quoi de déclarer un "Age" public qui renvoie vers un "age" privé?"
    C'est quoi l'intérêt par rapport à la déclaration d'un "age" public? (A part pour la bonne santé de notre chère amie l'encapsulation)
    Je serai même tenté de revenir à ma syntaxe C++-ienne avec mes fonctions "get<Attribut>"

    Merci de vos réponses

  2. #2
    Membre chevronné Avatar de bouvda
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    252
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 252
    Par défaut
    Salut,

    ça sert au confort d'utilisation de ta classe par un programmeur. C'est beaucoup plus agréable à l'utilisation que les get et set (Java tout daubé)
    Il pourra ainsi faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    unePersonne.Age = 17; //modification de l'âge
    Console.WriteLine(unePersonne.Age); //lecture de l'âge
    Tu verras c'est extrêmement confortable à l'usage .

    Et puis :
    Citation Envoyé par izguit
    premier truc chelou
    c'est pas Secret Story ici , il faut parler français.

  3. #3
    Membre Expert
    Avatar de hed62
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    2 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Par défaut
    C'est aussi pour pouvoir faire d'autres choses que bêtement renvoyer l'attribut, dans le getter/setter.

    Si tu ecris juste :

    Tu ne peux pas gérer de choses du genre :

    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
     
    private int nombreAcces;
    private bool estMajeur;
    private int unAttributQuelconque;
     
    public int UnAttributQuelconque
    {
                        get {
    nombreAcces++;
    			return unAttributQuelconque;
    		}
    		set {
    			age = value;
     if(age>18) estMajeur = true;
    		}
     
     
    }
    Je n'ai pas écris les propriétés EstMajeur et NombreAcces..

  4. #4
    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
    Par défaut
    Citation Envoyé par hed62 Voir le message
    C'est aussi pour pouvoir faire d'autres choses que bêtement renvoyer l'attribut, dans le getter/setter.
    +1
    C'est par exemple utilisé pour les bindings pour signifier un changement de la valeur d'une propriété.
    Citation Envoyé par hed62 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(age>18) estMajeur = true;
    Hmmm, en fait le test serait plutôt "supérieur ou égal"
    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

  5. #5
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Je suis d'accord pour le confort d'accessibilité, et en plus avec les snippet c'est tellement facile d'écrire une propriété ( Je suis en 1.1 sous VS2003 et il ne connais pas les snippet).
    En plus cela évite de pourrir ta liste de méthode (qu'est ce que c'est chiant d'avoir 31 fonction dont 15 Getter et Setter et 1 seul vrais méthode), La propriété peut être mis directement sous l'attribut, plus simple à la recherche pour modification, et sous VS le repliement du code te rends invisble tout le contenu de la propriété quand tu n'en n'as pas besoin.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    class Personne
    {
        protected:
            int age;
        public:
            int getAge();
    };
     
    int Personne::getAge()
    { return age };
     
    void Personne::setAge(int unage)
    { age = unage };
    Tu avais oublié le setter .
    Quand même n'est ce pas plus pratique le "value" que de devoir créer une variable bidon (j'ai mis 10 seconde à trouver le nom de la variable pour qu'elle un rapport avec age ) pour juste affecté sa valeur à l'argument.

    Et puis les accés à la propriété sont plus confortable que les accés aux méthodes Getter/Setter.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 46
    Par défaut
    Ok merci de vos réponses
    'Vais essayer de me faire à ces notations

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

Discussions similaires

  1. Accès aux propriétés d'une classe mère
    Par provbxaxa dans le forum C#
    Réponses: 2
    Dernier message: 02/03/2015, 19h51
  2. [FLASH MX2004] [AS2] Accès aux variables d'une classe
    Par stailer dans le forum ActionScript 1 & ActionScript 2
    Réponses: 2
    Dernier message: 17/07/2005, 12h58
  3. [Language]acces aux metode d une classe
    Par harris_macken dans le forum Langage
    Réponses: 5
    Dernier message: 06/04/2005, 09h52
  4. Réponses: 38
    Dernier message: 16/02/2005, 02h03
  5. [TOMCAT] JSP problème d'accès aux méthodes d'une classes
    Par gunnm dans le forum Tomcat et TomEE
    Réponses: 3
    Dernier message: 22/05/2004, 14h02

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