Question

Un ami novice en programmation OO m'a demandé quelle était la différence entre un membre et un site, et j'avais honte d'admettre que je ne pouvais pas lui donner de réponse satisfaisante. Comme les propriétés peuvent aussi être des objets eux-mêmes, il me reste une description générale et une liste d’exceptions.

Quelqu'un peut-il s'il vous plaît définir une bonne définition du moment de considérer quelque chose d'un membre par rapport à une propriété? Peut-être que je bâtarde le concept, ou est-ce juste qu'un membre est juste le nom interne que j'utilise, et que la propriété est ce qui est exposé à d'autres objets?

Je ne pense pas que le fait de ne pas connaître la réponse à cette question ait affecté la qualité de ma programmation, et ce n’est qu’un point de sémantique, mais ça me dérange toujours que je ne puisse pas lui expliquer.

Était-ce utile?

La solution

Une propriété est un type de membre un . D'autres peuvent être des constructeurs, des méthodes, des champs, des types imbriqués, des conversions, des indexeurs, etc. - en fonction du langage / de la plate-forme, bien sûr. La signification exacte de la terminologie dépend souvent du contexte.

Pour donner une définition spécifique à C # , à partir de la spécification C # 3.0, section 1.6.1:

  

Le tableau suivant fournit un aperçu des types de membres qu'une classe peut contenir.
  (Rangées pour ...)

     
      
  • Constantes
  •   
  • champs
  •   
  • Méthodes
  •   
  • Propriétés
  •   
  • Indexeurs
  •   
  • Événements
  •   
  • Opérateurs
  •   
  • constructeurs
  •   
  • Destructors
  •   
  • Types
  •   

Notez qu'il s'agit de membres d'une classe . Différent " choses " avoir différents types de membres - par exemple, en C #, une interface ne peut pas avoir un champ en tant que membre.

Autres conseils

Aucun des deux termes n'a de signification définie dans la programmation orientée objet ou dans la conception orientée objet. Ils n'ont pas non plus de sens défini dans la grande majorité des langages de programmation.

Seul un très petit nombre de langages de programmation ont un concept appelé propriété ou membre , et encore moins en ont les deux.

Certains exemples de langages ayant l'un ou l'autre des deux sont C ++ (qui a des membres), ECMAScript (qui a des propriétés) et C # (qui a les deux). Cependant, ces termes ne désignent pas nécessairement les mêmes concepts dans différents langages de programmation. Par exemple, le terme "membre" signifie à peu près la même chose en C ++ et en C #, mais le terme "propriété" signifie des choses complètement différentes dans ECMAScript et C #. En fait, le terme "propriété" dans ECMAScript dénote à peu près le même concept (c'est-à-dire signifie à peu près la même chose) que le terme "membre" en C ++ et en C #.

Tout ceci pour simplement dire que ces deux termes signifient exactement ce que la spécification pertinente pour le langage de programmation dit signifier, ni plus ni moins. (Insérer ici la citation gratuite de Lewis Carroll.)

Les propriétés sont un type de membres.

En C #, par exemple, une classe peut avoir les membres suivants:

  • constructeurs
  • Destructors
  • Constantes
  • champs
  • Méthodes
  • Propriétés
  • Indexeurs
  • Opérateurs
  • Événements
  • Délégués
  • Classes
  • interfaces
  • Structs

MSDN: C #: classe

Les membres ne sont que des objets ou des types primitifs appartenant à une classe.

Les propriétés vous donnent plus de pouvoir que les membres. C'est comme un moyen simplifié de créer des getters et des setters vous permettant de créer, par exemple, des getters publics et des setters privés; et mettez toute la logique que vous voulez dans la façon dont elle sera lue ou écrite. Ils peuvent être utilisés comme moyen d’exposer les membres, car il est possible de modifier plus facilement les règles de lecture et d’écriture ultérieurement.

Ceci s’applique à C #. Je ne sais pas si cela est vrai pour les autres langues cependant.

Un membre (variable) n'est qu'une partie de l'objet. Une propriété est (je qualifierai cela par "habituellement" - je ne suis pas sûr que ce soit un mot techniquement clair qui ait une signification non ambiguë dans plusieurs langues) est un aspect de l'objet accessible au public, par exemple. via les méthodes getter et setter.

Ainsi, bien qu'une propriété soit (presque toujours) une variable membre atteignable, vous pouvez avoir une propriété qui ne fait pas vraiment partie de l'état de l'objet (même si sa conception est bonne):

public class Foo {
  public String getJunk()
  { return "Junk";}

  public void setJunk(String ignore){;}
  }
}

Les propriétés et les méthodes sont membres d'un objet. Une propriété décrit certains aspects de l'objet, tandis qu'une méthode accède à ou utilise l'objet propriétaire.
Un exemple en pseudo-code:

Object Ball
Property color(some Value)
Method bounce(subroutine describing the movement of the Ball)

Où la balle est définie et se voit attribuer une couleur (propriété), tandis que la méthode Bounce est un sous-programme décrivant la réaction de la balle lorsqu’elle frappe un autre objet.
Toutes les langues n’ont pas de propriétés, c’est-à-dire que Java ne contient que des champs auxquels les getters et les setters doivent avoir accès.

Les propriétés sont un moyen d’exposer des champs, les champs étant les variables réelles. Par exemple (C #):

class Foo {
  private int field;
  public int Property {
    get { return field; }
    set { field = value; }
  }
}

de Manuel PHP :

Les variables de membre de classe sont appelées "propriétés". Vous pouvez également les voir utiliser d'autres termes tels que "attributs". ou "champs". Ils sont définis en utilisant l’un des mots-clés public, protected ou private, suivi d’une déclaration de variable normale. Cette déclaration peut inclure une initialisation.

Membre est un terme générique (probablement issu de C ++ , mais également défini dans < a href = "https://docs.oracle.com/javase/tutorial/information/glossary.html#M" rel = "nofollow"> Java ) utilisé pour désigner un composant d'une classe. La propriété est un concept large utilisé pour désigner une caractéristique particulière d'une classe qui, une fois la classe instanciée, aidera à définir l'état de l'objet.

Les passages suivants, extraits de "Analyse et conception orientées objet" de Grady Booch aident à clarifier le sujet. Tout d'abord, il est important de comprendre les concepts d'état et de comportement:

  

Le état d'un objet englobe toutes les propriétés (généralement statiques) de l'objet, ainsi que les valeurs actuelles (généralement dynamiques) de chacune de ces propriétés . Par propriétés, nous entendons la totalité des attributs de l'objet et ses relations avec d'autres objets.

     

Comportement est la façon dont un objet agit et réagit, en termes de changements d'état et de transmission de messages (méthodes) ; l'activité visible et testable d'un objet.

Le comportement d'un objet dépend donc des opérations disponibles et de son état (propriétés et leurs valeurs actuelles). Notez que la POO est assez générique en ce qui concerne certaines nomenclatures, car elle varie énormément d’une langue à l’autre:

  

Le champ de termes (Object Pascal), la variable d'instance (Smalltalk), l'objet membre (C ++) et le slot (CLOS) sont interchangeables , ce qui signifie un référentiel pour une partie de l'état d'un objet. Ensemble, ils constituent la structure de l'objet.

     

Une opération sur un objet, définie dans le cadre de la déclaration d'une classe. Les termes message (Smalltalk), méthode (nombreux langages d’OO), fonction membre (C ++) et opération sont généralement interchangeables.

Mais la notation introduite par l'auteur est précise:

  

Un attribut désigne une partie d'un objet agrégé. Il est donc utilisé lors de l'analyse ainsi que dans la conception pour exprimer une propriété singulière de la classe. En utilisant la syntaxe indépendante de la langue, un attribut peut avoir un nom, une classe ou les deux et éventuellement une expression par défaut: A: C = E .

     

Une opération désigne un service fourni par la classe. Les opérations (...) se distinguent des attributs en ajoutant des parenthèses ou en fournissant la signature complète de l'opération, composée de la classe de retour, du nom et des arguments formels (le cas échéant): RN (Arguments)

En résumé, vous pouvez considérer les membres comme tout ce qui compose la classe et les propriétés comme les membres (attributs) qui définissent collectivement la structure de la classe, ainsi que ses relations avec les autres classes. Lorsque la classe est instanciée, des propriétés lui sont attribuées afin de définir l’état de l’objet.

A bientôt

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top