Zum Inhalt springen
L

Wikipedia · einfach zusammengefasst · Stand

Abstraktion (Informatik)

Die Abstraktion der Steuerung umfasst den Einsatz von Unterprogrammen und Konzepten wie Kontrollfluss. · Datenabstraktion erlaubt die sinnvolle Verarbeitung von …

Inhalt5 Abschnitte
  1. 1. Bedeutung und Zweck
  2. 2. Abstraktion durch Sprachen und Entwurf
  3. 3. Sprachliche Mechanismen
  4. 4. Daten und Objektorientierung
  5. 5. Stufen der Abstraktion

Bedeutung und Zweck

Abstraktion bezeichnet in der Informatik die Trennung zwischen Konzept und Umsetzung: Strukturen werden über ihre Bedeutung definiert, während Details ihrer Funktionsweise verborgen bleiben. Sie konzentriert sich auf den Detailgrad, der aus einer bestimmten Perspektive gerade benötigt wird. Dadurch lassen sich allgemeine Schemata zur Problemlösung ableiten, ohne Implementierungsdetails berücksichtigen zu müssen.

Sie ist ein zentrales Mittel zum Erstellen und Verstehen von Modellen und hilft, die Komplexität eines Problems zu reduzieren. Abstraktion kann sowohl Daten als auch die Steuerung eines Programms betreffen. Steuerungsabstraktion nutzt etwa Unterprogramme und Kontrollfluss. Datenabstraktion ermöglicht, Datenbits sinnvoll, zum Beispiel als Datentypen, zu verarbeiten. Das Abstraktionsprinzip empfiehlt Abstraktion insbesondere zur Vermeidung von Duplikationen; zugleich bezeichnet es die Anforderung, dass Programmiersprachen passende Mechanismen bereitstellen.

Abstraktion durch Sprachen und Entwurf

Eine wichtige Form ist die Abstraktion von Sprache. Künstliche Sprachen drücken spezifische Aspekte von Systemen aus; Modellierungssprachen können bei der Planung eines Softwaresystems helfen, Maschinensprachen dagegen direkt von Computern verarbeitet werden. Der Abstraktionsprozess zeigt sich auch beim Generationswechsel von Programmiersprachen.

Programmierer schaffen innerhalb einer Sprache weitere Abstraktionsebenen, etwa durch Subroutinen, Module und Softwarekomponenten. Entwurfsmuster und Softwarearchitekturen sind weitere Abstraktionsformen, die sich auf das Systemdesign beziehen und vor der Programmiersprache verborgen bleiben. Abstraktion soll die Komplexität niedrigerer Stufen verbergen. Joel Spolsky kritisierte dies mit dem Satz: „Alle nicht-trivialen Abstraktionen sind zu einem bestimmten Grad undicht.“

Sprachliche Mechanismen

Programmiersprachen bieten unterschiedliche Abstraktionsmöglichkeiten. Objektorientierte Sprachen wie C++, Object Pascal oder Java kennen dafür eine eigene deklarative Anweisung. Nach einer solchen Deklaration muss der Programmierer eine Klasse implementieren, damit eine Instanz eines Objekts erzeugt werden kann.

In der funktionalen Programmierung dienen Lambda-Abstraktion und Funktionen höherer Ordnung der Abstraktion. Bei der Lambda-Abstraktion wird aus einem Term eine Funktion in einer Variablen gemacht; bei Funktionen höherer Ordnung sind Funktionen selbst Parameter anderer Funktionen. Lisp-Sprachen wie Clojure und Common Lisp erlauben syntaktische Abstraktion. Damit können Standardformulierungen im Code entfallen, neue Kontrollstrukturen entstehen oder domainspezifische Sprachen entwickelt werden. Dies kann die Effizienz beim Programmieren und die Verständlichkeit des Codes verbessern.

Spezifikationssprachen arbeiten meist mit Abstraktion, weil eine Spezifikation früh im Projekt und damit auf einem abstrakteren Niveau erfolgt. Die Unified Modeling Language erlaubt beispielsweise abstrakte Klassen, die während Architektur- und Spezifizierungsphase abstrakt bleiben.

Daten und Objektorientierung

Datenabstraktion trennt die abstrakten Eigenschaften eines Datentyps klar von seinen Implementierungsdetails. Die nach außen sichtbaren Schnittstellen beschreiben die abstrakten Eigenschaften. Die konkrete Implementierung bleibt privat und darf beispielsweise zur Effizienzsteigerung geändert werden, sofern die Schnittstelle und damit das abstrakte Verhalten nach außen unverändert bleiben.

In der objektorientierten Programmierung stehen Objekte für abstrakte „Akteure“: Sie verrichten Arbeiten, ändern ihren Zustand und kommunizieren mit anderen Objekten. Angaben über ihren genauen Zustand werden häufig verborgen; dies heißt Information Hiding oder Kapselung. Polymorphie, also Vielgestaltigkeit, erlaubt den Austausch von Objekten unterschiedlicher Typen. Auch Vererbung von Klassen und Strukturen ist Abstraktion, weil sie komplexe Relationen abbilden kann.

Im Java-Beispiel ist die Klasse Tier eine Abstraktion für tatsächliche Tiere. Sie besitzt den Zustand ort und energieReserven sowie Methoden wie istHungrig(), essen(Futter futter) und aendereOrt(Ort o). Ein Tier ist hungrig, wenn energieReserven < 2.5 gilt. Objekte wie schwein und kuh können daher abhängig von istHungrig() unterschiedliches Futter essen; die Kuh kann in die scheune versetzt werden. Die Oberklasse Lebewesen ist eine weitere Abstraktion, nämlich eine Generalisierung von Tier. Bei Bedarf kann eine zusätzliche Ebene etwa zwischen milchliefernden und nicht milchliefernden Tieren unterscheiden.

Stufen der Abstraktion

Abstraktionsebenen (englisch levels oder layers) sind Modelle derselben Information auf unterschiedlichen Abstraktionsniveaus innerhalb einer Domain. Eine höhere, abstraktere Stufe baut auf einer niedrigeren, konkreteren auf. Beispiele für diese Folge sind: Gatter bauen auf elektronischen Schaltungen auf, Binärschnittstellen auf Gattern, Maschinensprachen auf Binärschnittstellen, Programmiersprachen auf Maschinensprachen sowie Applikationen und Betriebssysteme auf Programmiersprachen.

Datenbanksysteme gliedern sich häufig in drei Ebenen. Die physische Ebene (physical level) beschreibt, wie Daten tatsächlich gespeichert werden, einschließlich komplexer Datenstrukturen. Die logische Ebene (logical level) beschreibt, welche Daten gespeichert sind und welche Beziehungen zwischen ihnen bestehen; Nutzer dieser Ebene benötigen kein Wissen über die physische Ebene. Die höchste Ebene, das View level, zeigt nur Teile der gesamten Datenbank. So kann das System unterschiedlichen Benutzern unterschiedliche Sichten und jeweils nur den benötigten Datenauszug bereitstellen.

Weiterlesen

Informatik Als einfache Rechengeräte leisteten Abakus und später der Rechenschieber unschätzbare Dienste. 1641 konstruierte Blaise Pascal eine mechanische … Hardware Unterteilung · Ausgabegeräte (Drucker, Bildschirm, Beamer, Lautsprecher …) · Eingabegeräte (Tastatur, Maus, Joystick …) · Einlesegeräte (Mikrofone, … Geschäftslogik In Verbindung mit der Objektorientierung wurde der Gedanke der Geschäftslogik zu sogenannten Geschäftsobjekten erweitert. Beim Model-View-Controller-Paradigma … Kontrollfluss Der Kontrollfluss oder Programmablauf bezeichnet in der Informatik die zeitliche Abfolge der einzelnen Befehle eines Computerprogramms. Modellierungssprache Jede Modellierungssprache verfügt über eine festgelegte Syntax, die über eine Grammatik oder ein Metamodell beschrieben werden kann. Betrachtet man die immer … Maschinensprache Mit einem Assembler: Assemblersprachen formulieren die Prozessorbefehle des Maschinencodes als Mnemonics in einer einfachen Syntax. Dieser Quelltext wird … Programmiersprache Bei deklarativen Programmiersprachen ist der Ausführungsalgorithmus schon vorab festgelegt und wird nicht im Quelltext ausformuliert/beschrieben, sondern es … Java (Programmiersprache) Java ist eine objektorientierte Programmiersprache und eine eingetragene Marke des Unternehmens Sun Microsystems, welches 2010 von Oracle übernommen wurde. Funktionale Programmierung Funktionale Programmierung ist ein Programmierparadigma, in dem Funktionen nicht nur definiert und angewendet werden können, sondern auch wie Daten … Unified Modeling Language Die UML ist die dominierende Sprache für die Softwaresystem-Modellierung. Der erste Kontakt zur UML besteht häufig darin, dass Diagramme in UML im Rahmen der … Objektorientierte Programmierung Die objektorientierte Programmierung (kurz OOP) ist ein auf dem Konzept der Objektorientierung basierendes Programmierparadigma. Die Grundidee besteht darin … Objekt (Programmierung) Ein Objekt in der Programmierung bezeichnet eine inhaltlich zusammengehörige Datenmenge: In der objektorientierten Programmierung wird eine Objektinstanz …