Seite 1 von 1

Genauer Unterschied zwischen Instanzvariablen, Objektvariablen und Membervariablen?

Verfasst: Di Sep 07, 2021 10:09 pm
von Atalanttore
Hallo

Was ist der genaue Unterschied zwischen einer Instanzvariablen, Objektvariablen und Membervariablen?

Re: Genauer Unterschied zwischen Instanzvariablen, Objektvariablen und Membervariablen?

Verfasst: Mi Sep 08, 2021 6:43 am
von Xin
Das kommt vermutlich ein wenig auf die Definition in der jeweiligen Sprache an, was eine Instanz, ein Objekt und ein Member ist.

Als erstes unterscheidet man zwischen Datentyp, Objekt und Wert. Ein float ist ein Datentyp, die Variable pi ist ein Objekt und hat hoffentlich den Wert 3,14... Packt man [unterschiedliche] Datentypen zusammen hat man einen neuen Datentyp, der je nach Sprache record, struct, class oder sonstwas heißt. Von dieser Typbeschreibung/Objektdeklaration kann man Instanzen erzeugen. Das sind die Objekte. Objekt und Instanz ist also synonym. Die Datentypen, die man in einem neuen Datentyp zusammengefasst hat, nennt man Attribute oder Member.
Solange Instanzen/Objekte bzw. deren Attribute/Member variable (also nicht konstant) sind, nenne man sie Variablen.

Code: Alles auswählen

class Punkt     // Objektdeklaraton / Typbeschreibung
{
  int const id;   // Memberkonstante
  int x;    // Membervariable / Attribut
  int y;
  ...
};

Punkt A;  // A ist Instanz [-variable] / Objekt [-varibale]

Re: Genauer Unterschied zwischen Instanzvariablen, Objektvariablen und Membervariablen?

Verfasst: Mi Sep 08, 2021 12:34 pm
von nufan
Xin hat geschrieben:
Mi Sep 08, 2021 6:43 am

Code: Alles auswählen

Punkt A;  // A ist Instanz [-variable] / Objekt [-varibale]
Ich muss zugeben, dass ich diese Definition so noch nicht gesehen habe :D Für mich beschreiben diese drei Begriffe alle das Gleiche: (Nicht-statische) Variablen innerhalb von Klassen.

Code: Alles auswählen

class SomeClass
{
  int a;                 // Instanzvariable, Objektvariable, Membervariable
  static float b;        // Klassenvariable
  // ...
};

SomeClass A;                 // A ist Instanz / Objekt
Ich lasse mich aber auch gerne belehren :)

Re: Genauer Unterschied zwischen Instanzvariablen, Objektvariablen und Membervariablen?

Verfasst: Mi Sep 08, 2021 8:38 pm
von Xin
Eine Instanz/ein Objekt ist eine Realisierung einer Datentypbeschreibung. Also ist die Membervariable SomeClass::a auch eine Instanz/eom Objekt von Typ int. Als SomeClass::a betrachte ich es aber erstmal als Member des Typs SomeClass. Ob SomeClass überhaupt instanziiert wird, also es ein Objekt von SomeClass gibt, ist damit ja noch gar nicht gesagt. Eine Membervariable kann also deklariert sein, aber unter Umständen nie instanziiert werden. Es kann also sein, dass es von der Membervariablen SomeClass::a nie eine Instanz/ein Objekt existiert.

Den Begriff "Klassenvariable" habe ich noch nie gehört, er ergibt aber durchaus Sinn für mich. Ich spreche hier von einer statischen Variablen [im Namensraum] der Klasse "SomeClass".

Das Anhängsel "-variable" kennzeichnet für mich nur die Information, dass die Instanz/das Objekt variable ist und eben nicht konstant.

Mir ist keine DIN-Norm für die Begriffe bekannt. Weswegen meine Definition entsprechend genauso richtig oder falsch ist, wie alles andere auch.

Re: Genauer Unterschied zwischen Instanzvariablen, Objektvariablen und Membervariablen?

Verfasst: Do Sep 09, 2021 10:01 pm
von Atalanttore
Ich hab das jetzt so verstanden:

Member... sind die Variablen bzw. Konstanten, die innerhalb einer Klasse definiert wurden.

Zu Objekt... bzw. Instanz... werden die Membervariablen bzw. -konstanten erst, wenn von der Klasse ein konkretes Objekt instanziiert wurde.