(Weitergeleitet von Klassen)

Klasse

Klippstein IT Service

Aus 4webmaster.de

Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Eine Klasse definiert für ihre Objekte (also ihre konkreten Exemplare) die folgenden Fragen:

Struktur Welche Attribute besitzt jedes Objekt?
Verhalten Welche Methoden / Operationen beherrscht jedes Objekt? Was passiert genau beim Ausführen der Operation?
Lebenszyklus Wie wird ein neues Objekt konstruiert? Wie wird ein Objekt wieder zerstört?

Jedes Objekt ist eine Instanz einer Klasse, und zwar genau einer Klasse. Beispiel: Das Objekt, mit dem Sophie Meinerhoff modelliert wird, ist eine Instanz der Klasse Person. Die Klasse Person besitzt die Attribute name und alter. Jedes Objekt der Klasse Person kann die Methoden gehen() und sprechen() ausführen.

Eine Klasse ist nicht identisch mit der Menge aller ihrer Instanzen. Stattdessen bildet eine Klasse eine Art Schablone zum Erzeugen von Objekten mit gleichartigen Eigenschaften.

Als Name einer Klasse hat sich die Singularform bewährt. Klassennamen werden mit großen Anfangsbuchstaben geschrieben (im Gegensatz zu Objektnamen und Attributbezeichnungen, deren Anfangsbuchstabe i.d.R. klein ist). Unterstriche im Klassennamen sind verpönt (sie verhindern die Umformung von CamelCase in camel_case).

In Datenbanksystemen werden Klassen meist als Tabellen repräsentiert.



Darstellung von Klassen in UML

Die UML-Darstellung einer Klasse (z.B. in einem Klassendiagramm) besteht aus drei Teilen:

Name In UML werden Klassennamen fett und zentriert dargestellt. Das Feld kann ggf. mit einer Beschreibung von Stereotypen oder einer Liste der Eigenschaften ergänzt werden.
Schnittstellen, also abstrakte Klassen und Interfaces sind außerdem noch kursiv. Interfaces werden zusätzlich mit «Interface» gekennzeichnet.
Struktur           Liste relevanter Attribute.
Alternativ kann die Struktur auch als »inneres« Klassendiagramm dargestellt werden, wenn die Klasse aus mehreren Teilen besteht (siehe Aggregation / Kompositionsstrukturdiagramm)

Verhalten Liste relevanter Operationen / Methoden





Beispiel: (Leider kann das hier verwendeten Tool (Graphiz) die Klassennamen nicht fett ausgeben, was die korrekte Darstellung wäre):

Beispiel: UML-Darstellung einer Klasse
Beispiel: UML-Darstellung einer Klasse



Klassenattribute und Klassenmethoden

Eine Klasse kann auch selbst Attribute besitzen (Klassenattribute oder sog. statische Attribute). Auch kann eine Klasse selbst Methoden beherrschen (Klassenmethoden oder sog. statische Methoden).

Schnittstellen und abstrakte Klassen

Eine Schnittstelle ist das nach außen Sichtbare einer Komponente. Oft wird für ähnliche Klassen eine gemeinsame Schnittstelle angelegt. Dazu gibt es in Java zwei Möglichkeiten:

Abstrakte Klasse: Die ähnlichen Klassen erben Methoden von einer abstrakten Klasse
Interface: Die ähnlichen Klassen implementieren das gleiche interface



Abstrakte Klasse

Eine abstrakte Klasse dient nur zur Vererbung ihres Inhaltes. Sie kann keine eigenen Instanzen haben. So wird sie deklariert:

abstract class MeineSchnittstelle {
 
  // diese Methode ist direkt für alle Instanzen der Subklassen einsatzfähig
  public void nutzeMichSofort() {
    ..
    .. 
  }
 
  // diese Methode ist abstrakt, d.h. sie ist nicht implementiert,
  // sondern existiert nur als Methodenkopf.
  // Abstrakte Methoden *müssen* von allen Subklassen implementiert werden.
  public abstract void implementiereMichErst();
 
}

Da in Java eine Klasse nur von einer einzigen Superklasse erben kann, ist die Nutzbarbeit abstrakter Klassen recht beschränkt. Aber so wird sie eingesetzt:

class MeineKlasse extends MeineSchnittstelle {
 
  // Implementierung der geforderten Methode
  public void implementiereMichErst() {
    ..
    ..        
 }
 
}



Interface

Ein Interface erzwingt die Implementierung bestimmter Methoden in einer Klasse. Interfaces haben natürlich auch keine Instanzen. Beispiel einer Schnittstellendeklaration:

interface IMeineSchnittstelle {
 
  // Alle hier deklarierten Methoden sind public und abstract, 
  // daher können die Schlüsselwörter weggelassen werden. 
  void implementiereMichErst();
 
}


class MeineKlasse extends WhatEver implements IMeineSchnittstelle {
 
  // Implementierung der geforderten Methode
  public void implementiereMichErst() {
    ..
    ..        
 }
 
}



Verwendung von Schnittstellen

Schlecht: Auf eine Implementierung programmieren:

Pferd ferdi = new Pferd();
ferdi.reiten();

Besser: Auf eine Schnittstelle programmieren:

Tier tirtir = new Pferd();
tirtir.fortbewegen();

Noch besser: Das Factory-Muster zur Objekterzeugung nutzen:

tirtir = getTier();
tirtir.fortbewegen();




Darstellung von Schnittstellen in UML

Abstrakte Klassen und Interfaces werden in UML wie Klassen dargestellt, nur sind die Namen kursiv. Abstrakte Methoden werden ebenfalls kursiv dargestellt. Interfaces werden zusätzlich mit dem Stereotyp «Interface» gekennzeichnet, außerdem werden die Generalisierungspfeile unterbrochen dargestellt.

Mit dem hier verwendeten Tool (Graphviz) ist eine genau standardkonforme Darstellung nicht möglich. Das folgende Diagramm zeigt die wesentlichen Merkmale der UML-Darstellung:


Abstrakte Klasse
Abstrakte Klasse

Interface
Interface




Siehe auch