Zum Inhalt springen
L

Wikipedia · einfach zusammengefasst · Stand

Opaker Datentyp

Opake Datentypen, also undurchsichtige Datentypen, werden häufig benutzt, um abstrakte Datentypen zu implementieren.

Inhalt5 Abschnitte
  1. 1. Grundidee
  2. 2. Anwendungen
  3. 3. Module und Sichtbarkeit
  4. 4. Opake Datentypen im Beispiel
  5. 5. Transparente Datentypen im Vergleich

Grundidee

Ein opaker Datentyp ist in der Informatik ein Datentyp, dessen physikalische Darstellung, also seine konkrete Repräsentation im Speicher oder in einer Datenstruktur, unbekannt oder für die Nutzung irrelevant ist. Die konkrete Darstellungsart bleibt für Benutzer verborgen; die sichtbare Umsetzung ist unvollständig.

Solche Datentypen heißen „opak“ oder „undurchsichtig“, weil man sie zwar verwenden kann, ihre innere Struktur aber nicht direkt kennt. Sie werden häufig genutzt, um abstrakte Datentypen zu implementieren. Ein abstrakter Datentyp beschreibt vor allem, welche Operationen mit Daten möglich sind, nicht wie diese Daten intern aufgebaut sind.

Anwendungen

Typische Anwendungen opaker Datentypen sind Ressourcen eines Betriebssystems, die über Softwareanwendungen verfügbar gemacht werden. Der eigentliche Datentyp wird dabei vor dem Anwender oder der Anwendung verborgen, weil seine genaue Struktur nur für das Betriebssystem wichtig ist.

Ein Vorteil ist, dass das Betriebssystem die interne Darstellung eines solchen Datentyps ändern kann, ohne dass der Quellcode der Anwendungsprogramme angepasst werden muss. Als Beispiel nennt der Artikel POSIX, das Portable Operating System Interface. POSIX ist eine Anwendungsprogrammschnittstelle zwischen Anwendungssoftware und Betriebssystem.

Module und Sichtbarkeit

Opake Datentypen kommen auch in modularen Programmiersprachen wie Modula-2 vor, einer Fortentwicklung von Pascal. Die Umsetzung erfolgt dort mithilfe von Modulen. Separat vom Hauptprogramm übersetzte Teile werden in zwei Dateien aufgeteilt: ein Definitionsmodul und ein Implementationsmodul.

Im Definitionsmodul werden nur der Typ-Name und die Schnittstelle angegeben. Die eigentliche Typangabe wird dort nicht genannt, sodass die Struktur verborgen bleibt. Diese Struktur wird erst im Implementationsmodul beschrieben. Dadurch entsteht ein opaker Datentyp.

Das Gegenstück ist ein transparenter Datentyp. Bei ihm ist die Darstellung sichtbar, sodass seine Struktur im Programm direkt bekannt ist.

Opake Datentypen im Beispiel

Im Beispiel wird ein Objekt mit var stack: TStack; deklariert. Der Verwender kennt dabei nur den Namen des opaken Datentyps TStack, nicht aber die interne Struktur der zugehörigen Datenobjekte.

Der Zugriff erfolgt ausschließlich über Zugriffsoperationen, zum Beispiel stack.Count() und stack.Pop(). Man liest oder verändert das Objekt also nicht direkt über seine Detailstruktur, sondern benutzt die angebotenen Operationen. Genau das ist der zentrale Unterschied zu einem transparenten Datentyp.

Transparente Datentypen im Vergleich

Ein transparenter Datentyp wird im Beispiel durch eine Typendeklaration eingeführt: type TSpace = array[1..n] of TItem;. Dabei wird nicht nur der Name TSpace festgelegt, sondern auch seine Struktur: ein Feld mit n Elementen eines Datentyps TItem.

Mit var space: TSpace; wird ein Datenobjekt dieses Typs deklariert. Weil die Detailstruktur bekannt ist, kann direkt darauf Bezug genommen werden, etwa mit space[index] := x;. Transparente Datentypen legen ihre Struktur also offen, während opake Datentypen sie verbergen.

Weiterlesen