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

Delphi Discussion :

private, public, protected, published : quelles différences ?


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 472
    Par défaut private, public, protected, published : quelles différences ?
    Bonjour,

    Je souhaiterai savoir quelles sont les différences entre :
    - private : accessible que dans la classe
    - public : accessible de partout
    - protected : ?
    - published : ?

    Dans quels cas doit-on mettre des déclarations en protected et published ?

    Merci,
    MaTHieU_

  2. #2
    Expert confirmé

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Par défaut
    • private : accessible dans toute l'unité ;
    • protected : accessible dans toute l'unité et dans les classes enfantes ;
    • public : accessible partout ;
    • published : comme public, mais avec en plus génération de RTTI pour l'exploitation par l'inspecteur d'objet par exemple.
    Donc tu peux utiliser protected quand tu veux que certaines données/méthodes soient accessibles par la classe ou ses enfants, mais pas le reste.

    Et published c'est seulement quand tu développes un composant, ou dans des cas assez particuliers ou tu veux te servir des RTTI pour tes besoins personnels.
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  3. #3
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 472
    Par défaut
    Merci !

  4. #4
    Membre Expert
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Par défaut
    Je precise quand meme une chose :

    Private est plutot limité a la classe elle meme qu'a l'unitee.
    Au niveau pratique, on peut y faire appel depuis une autre classe de la meme unitee, mais quand cette fonctionnalitée n'est pas maitrisee, cela entraine des erreurs au niveau conception assez importante.

    Donc pour moi, Private doit limité a la classe, et son usage extra-classe ne doit pas se faire sans etre "sur" qu'il n'existe pas d'autre solutions.

  5. #5
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 472
    Par défaut
    En effet, c'est comme celà que je le vois également.

    Merci.

  6. #6
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Par défaut
    Salut
    Citation Envoyé par Clorish
    Je precise quand meme une chose :

    Private est plutot limité a la classe elle meme qu'a l'unitee.
    Au niveau pratique, on peut y faire appel depuis une autre classe de la meme unitee, mais quand cette fonctionnalitée n'est pas maitrisee, cela entraine des erreurs au niveau conception assez importante.
    Certes, d'où l'existence de strict private
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  7. #7
    Membre Expert
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Par défaut
    Citation Envoyé par Pedro
    Salut

    Certes, d'où l'existence de strict private

    Hu ?!?
    Sous D7 ca existe ? ou c'est une invention de D200X+ ?
    Pk dans ce cas .... Oust le Private !

  8. #8
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    Citation Envoyé par Clorish
    Je precise quand meme une chose :

    Private est plutot limité a la classe elle meme qu'a l'unitee.
    Au niveau pratique, on peut y faire appel depuis une autre classe de la meme unitee, mais quand cette fonctionnalitée n'est pas maitrisee, cela entraine des erreurs au niveau conception assez importante.

    Donc pour moi, Private doit limité a la classe, et son usage extra-classe ne doit pas se faire sans etre "sur" qu'il n'existe pas d'autre solutions.
    je ne suis pas d'accord, Delphi ne connait pas la notion de classe "amie", on DOIT déclarer dans une même unité les classes qui partagent des informations privées que l'on ne veut pas rendre accessible aux descendants

    c'est d'ailleurs parfois gênant.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  9. #9
    Membre Expert
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Par défaut
    Tout a fait .... mais le principe de classe amie est reserve a un certain type de programation, et ne doit pas etre employer a la legere.

    Partir sur la base que cela est est possible risque d'entrainer de mauvaises habitudes et des erreurs de conceptions quand on ne maitrise pas cette facon de coder.

    D'ou mes propos

    Mais soit dite en passant, c'est clair que c'est pas clair leur truc
    Et franchement contraignant .... et source de bon nombre de references circulaires ...
    A moins de tout coder dans le meme fichier pas

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

Discussions similaires

  1. Différence entre public, protected et private
    Par pierrot10 dans le forum Débuter
    Réponses: 2
    Dernier message: 29/05/2013, 08h46
  2. Différence entre Public et Published
    Par Bleys dans le forum Débuter
    Réponses: 2
    Dernier message: 11/06/2008, 18h00
  3. Héritage : private/public/protected
    Par le Daoud dans le forum Langage
    Réponses: 5
    Dernier message: 24/10/2007, 13h47
  4. [POO] Problème: public, protected et private PHP5
    Par fleur_de_rose dans le forum Langage
    Réponses: 5
    Dernier message: 07/05/2006, 19h26
  5. problème de private , public , protected
    Par florantine dans le forum C++
    Réponses: 3
    Dernier message: 17/01/2006, 20h51

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