Klasse (OOP): Unterschied zwischen den Versionen

aus GlossarWiki, der Glossar-Datenbank der Fachhochschule Augsburg
Kowa (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
Kowa (Diskussion | Beiträge)
Zeile 67: Zeile 67:


=Bemerkung=
=Bemerkung=
Die Begriffe [[Klassenschema]] und [[Klassenextension]] wurden von Wolfgang Kowarschick in Anlehnung an Begriffe aus der Datenbankwelt eingeführt:
Die Begriffe [[Klassenschema]] und [[Klassenextension]] haben ihren Ursprung in der Datenbankwelt:
Ein [[Relationenschema]] legt die Attribute und Integritätsbedingungen der in einer zugehörigen [[Datenbank]] enthaltenen Relationen (Tabellen) fest.
Die hier gewählten Bezeichnungen [[Klassenschema]] und [[Klassenextension]] betonen die Verwandschaft
Die [[Extension]] einer Relation ist die  Menge aller [[Tupel]] ([[Entität]]en) der Relation.
zwischen objektorientierten Systemen und Datenbanksystemen:


Die hier gewählte Namensgebung betont die Verwandschaft zwischen objektorientierten und Datenbanksystemen: Eine Klasse entspricht einer Relation,
{|class="wikitable"
ein Objekt entspricht einem Tupel und ein Attribut entspricht einem Attribut. Ja, sogar die in objektorientierten Sprachen so weit verbreitete
|-
!Objektorientierte Systeme || Datenbanksysteme
|-
| [[Klasse]] || [[Relation (DB)|Relation]]/[[Tabelle]]
|-
| [[Klassenschema]] || [[Relationenschema]]
|-
| [[Klassenextension]] || Extension einer Relation (= Menge aller Tupel)
|-
| [[Objekt]] || [[Tupel]]/[[Entität]]
|-
| [[Attribut]]/[[Zustandsvariable]] || [[Attribut]]
|-
|}
 
Ja, sogar die in objektorientierten Sprachen so weit verbreitete
Punktnotation (<code>myCar.maxSpeed</code>) wurde aus der Datenbankwelt (SQL) übernommen.
Punktnotation (<code>myCar.maxSpeed</code>) wurde aus der Datenbankwelt (SQL) übernommen.


=Quellen=
=Quellen=

Version vom 2. März 2011, 13:27 Uhr

Definitionen (von W. Kowarschick)[1]

miniatur|rechts|300px|UML-Klassendiagramm: Eine Klasse und ein Klassen-Template Eine Klasse dient (im Sinne des objektorienten Paradigmas) dazu, die Schnittstellen und evtl. auch eine oder gar mehrere Implementierungen von „gleichartigen“ Objekten ganz oder zumindest teilweise festzulegen.

Eine Klasse besteht aus folgenden Teilen:

  • einer Klassenextension: Die Klassenextension ist eine (i. Allg. endliche) Menge, die zu jedem Zeitpunkt genau diejenigen Objekte, die der Klasse zugeordnet sind, enthält.
  • beliebig vielen (0, 1, 2, ...) Klassenimplementierungen: Diese implementieren die im Klassenschema deklarierten Methoden teilweise oder vollständig und garantieren dabei die stete Erfüllung aller im Klassenschema definierten Integritätsbedingungen. Unterschiedliche Implementierungen können sich in Hinblick auf Performanz-Aspekte unterscheiden.
  • den Klassenmethoden (statische Methoden): Eine Klasse verhält sich wie ein spezielles Objekt) und kann daher eigene (Klassen-)Methoden und (Klassen-)Attribute enthalten. Überlicherweise gibt es zumindest Methoden zur Verwaltung der Klassenextension, d.h. zum Erzeugen (Konstruktoren) und evtl. auch zum Zerstören (Destruktoren) von zugeordneten Objekten.

Abstrakte Klasse

miniatur|rechts|300px|UML-Klassendiagramm: Abstrakte Klasse Eine Klasse, für die es Klassenimplementierungen gibt, die die im Klassenschema definierten Methoden nicht vollständig implementieren, heisst abstrakte Klasse.

Schnittstelle (Interface)

miniatur|rechts|300px|UML-Klassendiagramm: Interface Eine Klasse, für die es keine Klassenimplementierung gibt, heißt Schnittstelle oder Interface.

Anmerkung

Jede Schnittstelle ist auch eine abstrakte Klasse.

Interfaces unterstützen i. Allg. auch keine Klassenmethoden. Dies wurde aber in der obigen Definition nicht explizit gefordert.

Metaklasse

miniatur|rechts|300px|UML-Klassendiagramm: Eine Metaklasse und eine Metametaklasse Eine Klasse, deren Extension zu jedem Zeitpunkt ausschließlich Klassen(objekte) enthält, heißt Metaklasse.

Metametaklasse

Eine Klasse, deren Extension zu jedem Zeitpunkt ausschließlich Metaklassen(objekte) enthält, heißt Metametaklasse.

Metametametaklasse

Und so weiter ...

Singleton-Klasse

miniatur|rechts|300px|UML-Klassendiagramm: Singleton-Klasse Eine Klasse, deren Extension genau ein Objekt enthält, heißt Singleton-Klasse oder kurz Singleton.

Subklasse

miniatur|rechts|300px|UML-Klassendiagramm: Eine Superklasse und zwei Subklassen Eine Klasse B heißt Subklasse der Klasse A, wenn die Extension von B eine Teilmenge der Extension von A ist und wenn die Integritätsbedingungen der Klasse A logisch aus den Integritätsbedingungen der Klasse B folgen:

Integritätsbedingungen(B) ⇒ Integritätsbedingungen(A)

Das heißt, jedes Objekt aus der Extension von B liegt nicht nur auch in der Extension von A, sondern erfüllt auch alle Integritätsbedingungen von A.

Siehe auch: Vererbung

Superklasse

Eine Klasse A heißt Superklasse der Klasse B genau dann wenn die Klasse B Subklasse der Klasse A ist.

Siehe auch: Vererbung

Bemerkung

Die Begriffe Klassenschema und Klassenextension haben ihren Ursprung in der Datenbankwelt: Die hier gewählten Bezeichnungen Klassenschema und Klassenextension betonen die Verwandschaft zwischen objektorientierten Systemen und Datenbanksystemen:

Objektorientierte Systeme Datenbanksysteme
Klasse Relation/Tabelle
Klassenschema Relationenschema
Klassenextension Extension einer Relation (= Menge aller Tupel)
Objekt Tupel/Entität
Attribut/Zustandsvariable Attribut

Ja, sogar die in objektorientierten Sprachen so weit verbreitete Punktnotation (myCar.maxSpeed) wurde aus der Datenbankwelt (SQL) übernommen.

Quellen

Siehe auch

Wikipedia: Klasse (objektorientierte Programmierung)


Dieser Artikel ist GlossarWiki-konform.