Frage

Ein Freund, der an der OO-Programmierung neu ist hat mich gebeten, den Unterschied zwischen einem Mitglied und Eigentum, und ich schämte mich, zugeben, dass ich ihm eine gute Antwort nicht geben konnte. Da Eigenschaften auch Objekte selbst sein können, wurde ich mit einer allgemeinen Beschreibung und die Liste der Ausnahmen links.

Kann bitte jemand eine gute Definition von auslegen, wenn etwas ein Mitglied gegen eine Immobilie zu beachten? Ich bastardizing das Konzept vielleicht, oder ist es nur, dass ein Mitglied nur der interne Name ist ich, und das Eigentum ist, was zu anderen Objekten ausgesetzt wird?

Ich glaube nicht, dass die Antwort auf diese Frage wissen, die Qualität meiner Programmierung betroffen hat, und es ist nur eine Semantik Punkt, aber es stört mich immer noch, dass ich es ihm nicht erklären kann.

War es hilfreich?

Lösung

Eine Eigenschaft ist ein Art Mitglied. Andere könnten Konstrukteure, Methoden, Felder, verschachtelte Typen, Umwandlungen, Indexer etc sein - abhängig von der Sprache / Plattform, natürlich. Ein großer Teil der Zeit des genau Bedeutung der Terminologie hängt vom Kontext ab.

C # -spezifische Definition geben , aus der C # 3.0-Spezifikation, Abschnitt 1.6.1:

  

Die folgende Tabelle gibt einen Überblick über die Arten von Elementen kann eine Klasse enthalten.
  (Zeilen für ...)

     
      
  • Konstanten
  •   
  • Felder
  •   
  • Methoden
  •   
  • Eigenschaften
  •   
  • Indexer
  •   
  • Veranstaltungen
  •   
  • Operatoren
  •   
  • Konstrukteurs
  •   
  • Destructors
  •   
  • Typen
  •   

Beachten Sie, dass das ist, Mitglieder einer Klasse . Verschiedene „Dinge“ haben verschiedene Arten von Mitgliedern -. In C # kann eine Schnittstelle kein Feld als Mitglied hat, zum Beispiel

Andere Tipps

Keine der beiden Begriffe hat jede definierte Bedeutung auch immer in Objektorientierte Programmierung oder objektorientiertes Design. Auch haben sie keine definierte Bedeutung in der überwältigenden Mehrheit der Programmiersprachen.

Nur eine sehr kleine Anzahl von Programmiersprachen hat ein Konzept namens Eigenschaft oder Mitglied , und noch weniger haben beide.

Einige Beispiele für Sprachen, die entweder eine der beiden sind C ++ haben (welche Mitglieder hat), ECMAScript (die Eigenschaften) und C # (die beide hat). Allerdings sind diese Begriffe nicht unbedingt bezeichnen die gleichen Konzepte in verschiedenen Programmiersprachen. Zum Beispiel bedeutet der Begriff „Mitglied“ in etwa die gleiche Sache in C ++ und C #, aber der Begriff „Eigentum“ bedeutet ganz andere Dinge in ECMAScript und C #. Tatsächlich bezeichnet der Begriff „Eigentum“ in ECMAScript etwa das gleiche Konzept (dh. Bedeutet in etwa die gleiche Sache) wie der Begriff „Mitglied“ in C ++ und C #.

All dies ist nur zu sagen, dass diese beiden Begriffe bedeuten genau das, was die entsprechende Spezifikation für die Programmiersprache sagt sie bedeutet, nicht mehr und nicht weniger. (Insert unentgeltlichen Lewis Carroll hier zitieren.)

Eigenschaften sind eine Art von Mitgliedern.

In C #, zum Beispiel eine Klasse kann folgende Mitglieder hat:

  • Konstrukteurs
  • Destructors
  • Konstanten
  • Felder
  • Methoden
  • Eigenschaften
  • Indexer
  • Operatoren
  • Veranstaltungen
  • Die Delegierten
  • Klassen
  • Schnittstellen
  • Structs

MSDN: C #: Klasse

Die Mitglieder sind nur Objekte oder primitive Typen zu einer Klasse gehören.

Eigenschaften geben Ihnen mehr Energie als Mitglieder. Es ist wie eine vereinfachte Art und Weise Getter und Setter erstellen lassen Sie machen, zum Beispiel öffentliche Getter und Setter Privat; und setzen, was Logik, die Sie in der Art und Weise wollen sie zu lesen oder zu schreiben. Sie können als eine Art und Weise verwendet werden, um Mitglieder zu belichten, wobei das Lesen zu ändern und später leichte Politik zu schreiben.

Dies gilt für C #. Nicht sicher, ob dies allerdings für die anderen Sprachen wahr ist.

Ein Mitglied (variabel) ist nur ein Teil des Objekts. Eine Eigenschaft ist (Ich werde diese qualifizieren mit „in der Regel“ - Ich bin nicht sicher, dass es ein technisch klares Wort ist die eindeutige Bedeutung in mehreren Sprachen hat) ein öffentlich zugänglicher Aspekt des Objekts, beispielsweise durch Getter und Setter-Methoden.

Während also (fast immer) eine Eigenschaft ist ein reacheable Membervariable, können Sie eine Eigenschaft, die nicht wirklich Teil des Objekts Zustand ist (nicht, dass dies ein gutes Design ist):

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

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

Beide Eigenschaften und Methoden sind Mitglieder eines Objekts. Eine Eigenschaft beschreibt einen Aspekt des Objekts, während eine Methode zugreift oder verwendet das besitzende Objekt.
Ein Beispiel in Pseudo-Code:

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

Wenn die Kugel definiert ist, und eine Farbe (Eigenschaft) gegeben, während das Verfahren Bounce ein Unterprogramm ist, das beschreibt, die, wie der Ball beim Auftreffen auf ein anderes Objekt reagiert.
Nicht alle Sprachen haben Eigenschaften, das heißt Java hat nur Felder, die von Getter und Setter zugegriffen werden muss.

Eigenschaften sind eine Möglichkeit, Felder zu belichten, wo die Felder, die tatsächlichen Variablen sind. Zum Beispiel (C #):

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

PHP-Handbuch :

Klasse Membervariablen werden „Eigenschaften“ bezeichnet. Sie können sehen, wie sie auch mit anderen Begriffen wie „Attribute“ oder „Felder“ bezeichnet. Sie zeichnen sich durch eines der Schlüsselwörter public, protected oder private Verwendung definiert, durch eine normale Variablendeklaration gefolgt. Diese Erklärung kann eine Initialisierung umfassen.

Mitglied ist ein allgemeiner Begriff (wahrscheinlich ihren Ursprung in C ++ , sondern auch definiert in < a href = "https://docs.oracle.com/javase/tutorial/information/glossary.html#M" rel = "nofollow"> Java ) verwendet, um eine Komponente einer Klasse zu bezeichnen. Das Eigentum ist ein weit gefasster Begriff verwendet, um eine bestimmte Eigenschaft einer Klasse zu bezeichnen, die, sobald die Klasse instanziiert wird, wird dazu beitragen, den Zustand des Objekts zu definieren.

Die folgenden Passagen, extrahiert aus "Object-Oriented Analysis and Design" von Grady Booch helfen, das Thema zu klären. Erstens ist es wichtig, die Konzepte von Staat und Verhalten zu verstehen:

  

Die Staat eines Objekts umfasst alle (in der Regel statisch) Eigenschaften des Objekts und den Strom (in der Regel dynamisch) Werte jeder dieser Eigenschaften . Durch die Eigenschaften verstehen wir die Gesamtheit der Objektattribute und Beziehungen zu anderen Objekten.

     

Verhalten ist, wie ein Objekt agiert und reagiert, in Bezug auf seine Zustandsänderungen und Message-Passing (Methoden) ; die nach außen sichtbar und prüfbar Aktivität eines Objekts.

So hängt das Verhalten eines Objekts auf die verfügbaren Operationen und ihren Zustand (Eigenschaften und ihre aktuellen Werte). Beachten Sie, dass OOP ganz allgemein ist in Bezug auf bestimmte Nomenklatur, wie sie wild von Sprache zu Sprache variieren:

  

Die Begriffe Feld (Object Pascal), Instanzvariable (Smalltalk), Mitglied-Objekt (C ++) und Schlitz (CLOS) sind untereinander austauschbar , ein Repository für einen Teil des Zustands eines Objekts bedeutet. Zusammen bilden sie die Struktur des Objekts.

     

Eine Operation auf ein Objekt, als Teil der Deklaration einer Klasse definiert. Die Begriffe Nachricht (Smalltalk), Methode (viele OO-Sprachen), Member-Funktion (C ++), und der Betrieb ist in der Regel untereinander austauschbar.

Aber die Schreibweise des Autors eingeführt ist präzise:

  

Ein Attribut bezeichnet einen Teil eines Aggregats Objekt, und so wird bei der Analyse sowie Design zum Ausdruck bringen eine einzigartige Eigenschaft der Klasse verwendet. die sprachunabhängige Syntax verwendet, kann ein Attribut einen Namen, eine Klasse, oder beides, und einen Standardausdruck optional. A:C=E

     

Ein Betrieb bezeichnet einen Dienst von der Klasse zur Verfügung gestellt. Operationen (...) aus Attribute zeichnen sich durch Klammern oder durch die Bereitstellung der Funktionsweise der vollständigen Signatur, bestehend aus Rückkehr Klasse, den Namen und formale Argumente (falls vorhanden) anhängt: R N(Arguments)

Zusammenfassend kann man von Mitgliedern als alles denkt, dass die Klasse komponiert und Eigenschaften wie die Mitglieder (Attribute), die gemeinsam die Struktur der Klasse definieren sowie seine Beziehungen zu anderen Klassen. Wenn die Klasse instanziiert wird, werden die Werte seiner Eigenschaften zugeordnet, um den Zustand des Objekts zu definieren.

Prost

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top