| 

.NET C# Java Javascript Exception

3
Ich verstehe die Unterscheidung zwischen Attributen und Variablen nicht richtig. Eigentlich sind Attribute doch Variablen, oder? Folgendes Beispiel:

public class Person{
String name;
}


Ist der Name (der String) mit dem ich die Variable name initialisiere dann das Attribut (die Eigenschaft) oder die Variable name selbst?
10.02.2012
roottybrian 11 1 1 2
3 Antworten
3
Wie so oft gilt auch hier: frag bei einem Begriff, wer ihn wofür benutzt, und geh nicht davon aus, dass alle Welt die gleichen Begriffe benutzt.

Eine mögliche und recht gängige Begriffswelt wird im Java-Tutorial von Oracle erklärt. Demzufolge gibt es in Java 4 Arten von Variablen: Instanz-Variablen, Klassen-Variablen, lokale Variablen und Methoden-Parameter. "Attribut" ist ein häufig gebrauchtes Synonym für Instanz-Variable, andere Synonyme sind Feld und Eigenschaft (mit etwas Vorsicht zu genießen, weil dieser Begriff oft zusätzlich mit der Existenz von Gettern und/oder Settern verbunden wird), manchmal auch für Klassen-Variable (wobei dann oft explizit darauf hingewiesen wird: "statisches Attribut" oder "Klassen-Attribut" - gilt auch für Feld und Eigenschaft).

In diesem Sinne hast Du Recht mit der Aussage: ein Attribut ist eine Variable. Andere benutzen den Begriff "Variable" aber ausschließlich oder vorrangig für lokale Variablen, dann stimmt die Aussage natürlich nicht mehr. Und umgekehrt ist in manchen Kontexten (.NET-Programmierung zum Beispiel) der Begriff "Attribut" anders belegt (in .NET mit dem Java-Äquivalent zu Annotationen), so dass dort die Aussage auch wieder nicht paßt. Deshalb also: Vorsicht mit Begriffen.

Was aber, soweit ich weiß, allen Variablen-Begriffen gemeinsam ist: Variablen haben einen Typ, einen Namen und einen Wert (der zum Typ paßt; ganz puristisch gesehen: erst ab dem Zeitpunkt ihrer Initialisierung). "Variable" meint immer das Gesamtkonstrukt.
10.02.2012
Matthias Hlawatsch 13,2k 4 9
0
Ein philosophischer Ansatz:

Eine Variable ist ein Ort, der unterschiedliche Zustände annehmen kann. Sie sagt ersteinmal nichts über die Zugehörigkeit zu einem größeren Konstrukt (wie ein Objekt) aus. (http://synonyme.woxikon.de/synonyme/variable.php)
Deshalb wird häufig das Wort Klassen-Variable oder Instanz-Variable komponiert um den Geltungsbereich zu definieren, wobei der Begriff "Klassen-Variable" eigentlich in der reinen OO-Welt überflüssig ist, weil eine Klasse auch als Objekt angesehen werden kann. (*.getClass() gibt ein Objekt vom Typ Class<?> zurück) Man könnte "Klassen-Variable" auch als Spezialfall der "Objekt-Variable" ansehen, wenn das haltende Objekt eine Klasse darstellt.

Ein Feld ist wie eine Variable ein Ort, der einen Zustand hat. Ob dieser Zustand wechselt, da schweigt sich der Begriff drüber aus.

Die Orte Variable und Feld HABEN KEINEN, sondern assoziieren den Typ der gültigen Zustände, einen aktuellen Zustand und einen Namen, über den man den Ort adressieren kann.

Attribute und Eigenschaften dagegen sind Zustände, die an einem bestimmten Ort zu einem bestimmten Zeitpunkt existieren und Variablen bzw. Felder ausfüllen. Sie haben einen Namen und einen Typ.

Ein Attribut ist ein Element, welches ein Objekt näher charaktisiert. (http://synonyme.woxikon.de/synonyme/attribut.php).

Der Begriff "Eigenschaft" ist aus meiner Sicht dem Attribut-Begriff sehr ähnlich. Der Fokus einer Eigenschaft liegt mehr auf dem Nutzen für den äußeren Betrachter. Deshalb auch die Anspielung von Matthias mit den Gettern und Settern ([...] weil dieser Begriff oft zusätzlich mit der Existenz von Gettern und/oder Settern verbunden wird [...]).

"Wert" ist noch stärker orientiert an den Nutzen als Eigenschaft.


Beispiel:

Variable/Feld: Name: "fahrzeugInnenraumFarbe"
Assoziierter Typ: Farbe
Attribut/Eigenschaft/Wert: Name: "Blau", hat Typ: Farbe
11.03.2012
oopexpert 455 1 8

Stelle deine Java-Frage jetzt!