Genauer Unterschied zwischen Instanzvariablen, Objektvariablen und Membervariablen?

Pascal, Basic und andere nicht aufgelistete
Antworten
Atalanttore
Beiträge: 3
Registriert: Sa Jun 16, 2012 11:10 pm

Genauer Unterschied zwischen Instanzvariablen, Objektvariablen und Membervariablen?

Beitrag von Atalanttore » Di Sep 07, 2021 10:09 pm

Hallo

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

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8774
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Genauer Unterschied zwischen Instanzvariablen, Objektvariablen und Membervariablen?

Beitrag von Xin » Mi Sep 08, 2021 6:43 am

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]
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

nufan
Wiki-Moderator
Beiträge: 2540
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Genauer Unterschied zwischen Instanzvariablen, Objektvariablen und Membervariablen?

Beitrag von nufan » Mi Sep 08, 2021 12:34 pm

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 :)

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8774
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Genauer Unterschied zwischen Instanzvariablen, Objektvariablen und Membervariablen?

Beitrag von Xin » Mi Sep 08, 2021 8:38 pm

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.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Atalanttore
Beiträge: 3
Registriert: Sa Jun 16, 2012 11:10 pm

Re: Genauer Unterschied zwischen Instanzvariablen, Objektvariablen und Membervariablen?

Beitrag von Atalanttore » Do Sep 09, 2021 10:01 pm

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.

Antworten