Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

05.12.2012, 19:12

"Variable" / "Attribut" Begrifflichkeiten

Hallo,

mir ist gerade aufgefallen, dass ich mir ab und zu noch unsicher bin, ob man zu
xyz "Variable", Attribut oder ... sagt, aus diesem Anlass ein kleiner Thread.

Ich schreibe einfach mal ein paar Beispiele auf und schreibe daneben,
was ich denke was jenes ist. Ihr könnt ja dann sagen ob das falsch oder richtig ist.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
void funktion()
{
   int x = 0; // Lokale Variable
   std::string str = ""; // Lokales Objekt (?) oder sagt man dazu auch Lokale Variable?   
}

class xyz
{
   public:

   int var; // Attribut...?

   private:

   int leben; // Attribut
   const int gravitation; // Kann man das auch noch Attribut nennen oder nur Konstante?
   int arr[]; // Array, Attribut...?
   std::string s; // Member Objekt, Objekt oder Attribut?
};

int main()
{
   int y = 0; // Lokale Variable
}


Ist vielleicht eine lächerliche Frage, aber ich bin mir halt ab und zu
unsicher, weil die Definition einer Variable diese ist:
"Eine Variable ist ein Speicherplatz"

Und ein Objekt sowie ein Array ist ja rein theoretisch eine Ansammlung aus Speicherplätzen...
Da müsste man ja eigentlich beim Array sagen das dass Feld X eine Variable ist und nicht
das dass Array selbst eine Variable ist, oder?

Ich hoffe man kann mein Anliegen verstehen.
Danke im Voraus für jede Hilfe!

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

2

05.12.2012, 19:21

Nenn doch einfach alle Variablen innerhalb der Klasse "Member" und lokale und lokales Objekt ist soweit richtig ;)
Eigentlich ist es egal wie du was nennst. Es gibt viele Namen für viele Dinge. Aber am Ende sind es an sich alles "Variablen" (stark verallgemeinert, es gibt natürlich noch Unterscheidungen zwischen Zeigern und Referenzen, ...).

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

3

05.12.2012, 19:48

Für gewöhnlich sagt man zu so ziemlich allem Variable. Kleines Beispiel, wie ich das so kenne:
(ist nicht vom Typ abhängig)

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
int n; // globale Variable
const int cn; // globale Konstante

class Foo
{
 int m_n; // Member / Member Variable
 const m_cn; // Konstante Member / Konstante Member Variable

 void bar(int an) // Parameter
 {
   int ln; // lokale Variable
 }
};

Attribut hör ich eigentlich nie.

Merke aber, dass es für die Begriffe schon klar definierte Namen gibt (zumindest zu den meisten), aber dafür musst du im Standard nachschauen und zusammentragen. Habe dazu jetzt keine Zeit. ;)

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

4

05.12.2012, 19:57

Variablen sind das eigentlich alles. Auch ein Objekt kann eine Variable sein. Ob du nun eine Variable vom Typ int, string, int[] oder Player hast ist eigentlich egal. Alles sind Variablen. Membervariablen oder Attribute sind Variablen innerhalb einer Klasse. Genau das selbe gilt für Memberfunktionen, welche sich auch innerhalb einer Klasse befinden. Manche sagen auch Funktion zu Funktionen welche einen Rückgabewert haben (außer void) und zu Funktionen ohne Rückgabewert (void) werden Methode genannt. Im Prinzip ist das aber alles egal. Ob du es nun Attribut nennst oder einfach Variable dazu sagst. Das ist alles Geschmackssache.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

5

05.12.2012, 20:32

Attribut hör ich eigentlich nie.

Attribut höre und benutze ich sehr oft. Ist halt dasselbe wie eine Member-Variable. Manche Sprachen haben dafür allerdings andere Syntax für als für eine Member-Variable. Siehe C# oder Objective-C und nennt sich dann Property ;)
Member-Funktionen sind Methoden. Dass die jemand Attribute nennt, ist mir persönlich neu, kann aber vermutlich für gewisse lesende Methoden Sinn machen.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

6

05.12.2012, 23:57

Ich denke es kommt schon auch sehr stark drauf an wo man gerade ist. Da wird wohl jedes Team sein eigenes Jargon haben was sie wann wo benutzen. Hängt sicher auch von Programmier und Sprechpsrache ab. In Eiffel würde man z.B. nur von Query und Command sprechen (oder schrecklich eingedeutschte Wörter dafür). ^^

@Jack
Es ist nicht so, dass es egal ist wie du etwas nennst. Das Problem ist, dass es viele Wörter gibt, die gleich/ähnlich sind und/oder das gleiche beschreiben, aber es hängt eben auch sehr stark von der Programmiersprache ab. Es gibt Dinge, die schlichtweg falsch sind, aber viel mehr gibt es, dass auch korrekt ist oder aber eben zum Teil stimmt. Die Grauzonen sind sehr gross.

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

7

06.12.2012, 10:59

"Attribut" wird meines Wissens in UML-Diagrammen verwendet
wie schon veschriebn wurde, gibt es für gleiches teilweise verschiedene, gleichbedeutende Begriffe
so können Membervariablen auch Instanzvariablen heißen und statische Variablen können Klassenvariablen heißen

allerdings muss ich manchem hier geschriebenen widersprechen:
ein Objekt ist keine Variable, Beispiel (Java):

Quellcode

1
String foo = "bar";

foo ist in dem Fall die Variable, die Zeichenkette ist (zur Laufzeit) einfach nur ein Objekt
zur Verdeutlichung:

Quellcode

1
String bar = foo;

es gibt nun die Variable bar, die das gleiche Objekt beinhaltet, und das String-Objekt

in wie weit Pointer und Referenzen in C++ anders bezeichnet werden, kann ich nicht sagen, in Java und C# wird jedenfalls keine Unterscheidung anhand des Typs vorgenommen


so viel jedenfalls zu meiner Meinung
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

primat

Frischling

Beiträge: 38

Wohnort: Hamburg

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

8

06.12.2012, 11:21

Manche sagen auch Funktion zu Funktionen welche einen Rückgabewert haben (außer void) und zu Funktionen ohne Rückgabewert (void) werden Methode genannt.


Das ist nicht korrekt. "Methode" ist einfach der objektorientierte Begriff für "Funktion", also einer Funktion, die auf einem Objekt aufgerufen wird. Andere sagen dazu auch "Member-Funktion". Funktionen ohne Rückgabewert (void) könnte man dagegen zum Beispiel als "Prozedur" bezeichnen.


Es kommt allgemein darauf an, in welchem Kontext man über diese Dinge spricht. Bei Java oder UML werden eher die Wörter "Attribut" und "Methode" benutzt, während bei C++ AFAIK eher die Wörter "Membervariable" und "Memberfunktion" benutzt werden.

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

9

06.12.2012, 11:27

Es hat auch niemand behauptet, dass ein Objekt das gleiche wie eine Variable ist. Ohne jetzt die genaue Definition nachzuschlagen: Ein Objekt ist etwas echtes. Also das Ding, was im Speicher liegt und was bearbeitet werden kann. Es ist ein Stück Information. Eine Variable hingegen ist eher die Abstraktion im Code, die man benutzt um auf ein Objekt zuzugreifen.

Sie sind also grundverschieden. Oftmals macht es allerdings allerdings keinen Unterschied da zu unterscheiden. Andernfalls müsste man wohl von "dem Objekt, welches durch die Variable xy referenziert wird" reden, was nun wirklich keiner möchte.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

10

06.12.2012, 11:38

Ja, drakon, aber man übergibt halt Objekte als Parameter an Methoden oder Referenzen auf Objekte oder Pointer auf Objekte, oder... oder... oder... Aber man übergibt eigentlich nie Variablen an Methoden. Also ich habe das jedenfalls noch nie gehört, dass das jemand gesagt hätte.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Werbeanzeige