Klasse: Unterschied zwischen den Versionen
Hauer (Diskussion | Beiträge) (→Syntaxdiagramm) |
K |
||
(8 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
− | Eine '''Klasse''' ist die Deklaration eines Datentyps. Sie dient dabei als Bauplan für [[Objekt | Objekte]] dieses Datentyps. | + | Eine '''Klasse''' ist die Deklaration eines [[Datentyp|Datentyps]]. Sie dient dabei als Bauplan für [[Objekt | Objekte]] dieses Datentyps. |
* Sie definiert den ''Aufbau'' der Objekte über [[Attribut | Attribute]]. | * Sie definiert den ''Aufbau'' der Objekte über [[Attribut | Attribute]]. | ||
Zeile 5: | Zeile 5: | ||
* Sie definiert die auf den Objekten ausführbaren ''Operationen'' über [[Methode | Methoden]]. | * Sie definiert die auf den Objekten ausführbaren ''Operationen'' über [[Methode | Methoden]]. | ||
− | Zudem kann eine Klasse noch von den Objekten unabhängige, [[static | statische]] Methoden und Attribute definieren, die die Klasse selbst ausführen kann. | + | Zudem kann eine Klasse noch von den Objekten unabhängige, also [[static | statische]], Methoden und Attribute definieren, die die Klasse selbst ausführen kann. |
− | Eine Klasse mit einer statischen [[main]]-Methode wird entsprechend auch ''Hauptklasse'' genannt und definiert den Einstiegspunkt in ein lauffähiges Programm. | + | Eine Klasse mit einer statischen [[main]]-Methode wird entsprechend auch '''Hauptklasse''' genannt und definiert den Einstiegspunkt in ein lauffähiges Programm. |
=Syntaxdiagramm= | =Syntaxdiagramm= | ||
Zeile 15: | Zeile 15: | ||
[[Datei:class_body.png]] | [[Datei:class_body.png]] | ||
− | + | =Erklärung= | |
− | Um eine | + | Eine '''Klassendeklaration''' findet für gewöhnlich in ihrer eigenen Datei mit dem selben Namen statt. Diese Datei bildet damit eine [[Übersetzungseinheit]]. Eine Klasse wird für gewöhnlich mit dem Sichtbarkeitsmodifikator [[public]] deklariert. Nach dem Sichtbarkeitsmodifikator kann das [[Schlüsselwort]] [[abstract]] folgen, um die Klasse als abstrakt zu deklarieren. Nach diesen [[Modifikator]]en folgt das Schlüsselwort '''class''', gefolgt vom Namen der Klasse. Falls die deklarierte Klasse von einer anderen erben soll, so wird nach dem Schlüsselwort [[extends]] die vererbende Klasse angegeben. |
+ | |||
+ | Um eine '''Klassendefinition''' zu schreiben, wird nur das Schlüsselwort '''class''' und ein Name für die Klasse benötigt. Üblicherweise wird noch die Sichtbarkeit [[public]] hinzugefügt. Der Rumpf einer Klasse wird meistens in drei Abschnitte geteilt: Attribute, Konstruktoren und Methoden. | ||
<source lang="java"> | <source lang="java"> | ||
Zeile 28: | Zeile 30: | ||
</source> | </source> | ||
− | + | ==Attribute== | |
+ | siehe: [[Variable]] | ||
− | Attribute sind Variablen, die innerhalb eines Objektes existieren und für jede Instanz einer Klasse | + | Attribute sind Variablen, die innerhalb eines Objektes existieren und daher für jede Instanz einer Klasse einzigartig sind. Eine Klasse <code>Foo</code>, die z.B. ein Attribut <code>int bar;</code> besitzt, beschreibt Objekte, die einen Wert namens <code>bar</code> haben. Jede Instanz dieser Klasse besitzt also sein eigenes <code>bar</code> mit einem eigenen Wert. Traditionellerweise schützt man unkontrollierten Zugriff auf Attribute durch sogenannte [[setter]] und [[getter]], indem die Attribute als [[private | privat]] deklariert werden. |
− | + | ==Konstruktoren== | |
+ | siehe: [[Konstruktor]] | ||
− | + | Konstruktoren definieren, wie ein Objekt instanziiert werden soll. Gibt man keinen Konstruktor an, so existiert der sogenannte [[Defaultkonstruktor]]. Dieser erwartet keinen Parameter und initialisiert alle Attribute des Objektes mit '''0''' oder '''[[null]]'''. Sobald jedoch ein Konstruktor deklariert wird, muss der Defaultkonstruktor explizit mitdeklariert werden, wenn man ihn verwenden will. | |
− | + | ==Methoden== | |
+ | siehe: [[Methode]] | ||
− | + | Methoden definieren, was ein Objekt ''kann''. Ein Methodenname ist daher meist ein ''Verb''. Methoden können ''auf'' einem Objekt aufgerufen werden, d.h. sie sind abhängig vom Zustand des Objektes, auf dem sie aufgerufen werden. Die Funktionalität einer Methode kann von einfachen Änderungen der Attribute ([[getter]]/[[setter]]) bis hin zu komplexen Berechnungen in Abhängigkeit vom aktuellen Zustand eines Objektes gehen. |
Aktuelle Version vom 26. Juli 2016, 15:18 Uhr
Eine Klasse ist die Deklaration eines Datentyps. Sie dient dabei als Bauplan für Objekte dieses Datentyps.
- Sie definiert den Aufbau der Objekte über Attribute.
- Sie definiert den Instanziierungsprozess der Objekte über Konstruktoren.
- Sie definiert die auf den Objekten ausführbaren Operationen über Methoden.
Zudem kann eine Klasse noch von den Objekten unabhängige, also statische, Methoden und Attribute definieren, die die Klasse selbst ausführen kann.
Eine Klasse mit einer statischen main-Methode wird entsprechend auch Hauptklasse genannt und definiert den Einstiegspunkt in ein lauffähiges Programm.
Inhaltsverzeichnis
Syntaxdiagramm
Erklärung
Eine Klassendeklaration findet für gewöhnlich in ihrer eigenen Datei mit dem selben Namen statt. Diese Datei bildet damit eine Übersetzungseinheit. Eine Klasse wird für gewöhnlich mit dem Sichtbarkeitsmodifikator public deklariert. Nach dem Sichtbarkeitsmodifikator kann das Schlüsselwort abstract folgen, um die Klasse als abstrakt zu deklarieren. Nach diesen Modifikatoren folgt das Schlüsselwort class, gefolgt vom Namen der Klasse. Falls die deklarierte Klasse von einer anderen erben soll, so wird nach dem Schlüsselwort extends die vererbende Klasse angegeben.
Um eine Klassendefinition zu schreiben, wird nur das Schlüsselwort class und ein Name für die Klasse benötigt. Üblicherweise wird noch die Sichtbarkeit public hinzugefügt. Der Rumpf einer Klasse wird meistens in drei Abschnitte geteilt: Attribute, Konstruktoren und Methoden.
class Klassennamen { //Beschreibungen der Attribute //Beschreibung der Konstruktoren //Beschreibung der Methoden }
Attribute
siehe: Variable
Attribute sind Variablen, die innerhalb eines Objektes existieren und daher für jede Instanz einer Klasse einzigartig sind. Eine Klasse Foo
, die z.B. ein Attribut int bar;
besitzt, beschreibt Objekte, die einen Wert namens bar
haben. Jede Instanz dieser Klasse besitzt also sein eigenes bar
mit einem eigenen Wert. Traditionellerweise schützt man unkontrollierten Zugriff auf Attribute durch sogenannte setter und getter, indem die Attribute als privat deklariert werden.
Konstruktoren
siehe: Konstruktor
Konstruktoren definieren, wie ein Objekt instanziiert werden soll. Gibt man keinen Konstruktor an, so existiert der sogenannte Defaultkonstruktor. Dieser erwartet keinen Parameter und initialisiert alle Attribute des Objektes mit 0 oder null. Sobald jedoch ein Konstruktor deklariert wird, muss der Defaultkonstruktor explizit mitdeklariert werden, wenn man ihn verwenden will.
Methoden
siehe: Methode
Methoden definieren, was ein Objekt kann. Ein Methodenname ist daher meist ein Verb. Methoden können auf einem Objekt aufgerufen werden, d.h. sie sind abhängig vom Zustand des Objektes, auf dem sie aufgerufen werden. Die Funktionalität einer Methode kann von einfachen Änderungen der Attribute (getter/setter) bis hin zu komplexen Berechnungen in Abhängigkeit vom aktuellen Zustand eines Objektes gehen.