www.wikidata.de-de.nina.az
Der Begriff Abstraktion wird in der Informatik sehr haufig eingesetzt und beschreibt die Trennung zwischen Konzept und Umsetzung Strukturen werden dabei uber ihre Bedeutung definiert wahrend die detaillierten Informationen uber die Funktionsweise verborgen bleiben Abstraktion zielt darauf ab die Details der Implementierung nicht zu berucksichtigen und daraus ein allgemeines Schema zur Losung des Problems abzuleiten Ein Computerprogramm kann so unterschiedliche Abstraktionsebenen aufweisen wobei auf jeder Ebene ein anderer Grad des Informationsgehaltes dem Programmierer preisgegeben wird Eine Abstraktion auf niedriger Stufe beinhaltet Details zur Hardware auf der das Programm lauft Hoher liegende Abstraktionsebenen beschaftigen sich dagegen mit der Geschaftslogik der Software Abstraktion beschaftigt sich also genau mit dem Detailgrad eines Objektes der gerade im Kontext der aktuellen Perspektive benotigt wird und kann auf die Daten sowie die Steuerung eines Programmes angewendet werden Die Abstraktion der Steuerung umfasst den Einsatz von Unterprogrammen und Konzepten wie Kontrollfluss Datenabstraktion erlaubt die sinnvolle Verarbeitung von Datenbits zum Beispiel als Datentypen Eine generelle Empfehlung Abstraktion immer dann einzusetzen wenn diese versucht Duplikationen zu vermeiden wird als Abstraktionsprinzip bezeichnet Auch die Anforderung an Programmiersprachen Mechanismen fur diese Empfehlung zur Verfugung zu stellen wird so genannt Inhaltsverzeichnis 1 Grundprinzip 2 Sprachmerkmale 2 1 Programmiersprachen 2 2 Spezifikationssprachen 3 Datenabstraktion 4 Abstraktion in der objektorientierten Programmierung 5 Abstraktionsebenen 5 1 Datenbanksysteme 6 Siehe auch 7 Literatur 8 Weblinks 9 EinzelnachweiseGrundprinzip BearbeitenAbstraktion ermoglicht es das Wesentliche unter einem bestimmten Gesichtspunkt aus einer Menge von Individuen Dinge Beobachtungen herauszuheben und abzuleiten und ist somit ein zentrales Mittel fur das Erstellen und Verstehen von Modellen 1 Es unterstutzt den Programmierer dabei die Komplexitat eines Problems zu reduzieren indem es Details ignoriert Die Fahigkeit abstrakt zu denken und diese umzusetzen ist somit eine der wichtigsten Grundlagen fur das Programmieren Abstraktion kann in ihrer Bedeutung nicht hoch genug eingeschatzt werden 2 Eine zentrale Form der Abstraktion ist die Abstraktion von Sprache So werden beispielsweise kunstliche Sprachen konstruiert die es ermoglichen spezifische Aspekte von Systemen zum Ausdruck zu bringen Modellierungssprachen konnen im Kontext einer Softwaresystem Planung helfen Maschinensprachen konnen von Computern direkt verarbeitet werden Dieser Abstraktionsprozess kann auch beim Generationswechsel der Programmiersprachen beobachtet werden Auch innerhalb einer Programmiersprache obliegt es dem Programmierer neue Abstraktionsebenen zu schaffen Die Erstellung von Subroutinen Modulen und Softwarekomponenten waren Beispiele dazu Andere Abstraktionsformen wie Entwurfsmuster und Softwarearchitekturen bleiben vor der Programmiersprache verborgen und beziehen sich auf das Design des Systems Abstraktion versucht die Komplexitat von darunterliegenden Abstraktionsstufen zu verbergen Joel Spolsky hat genau diese Bemuhungen kritisiert Alle nicht trivialen Abstraktionen sind zu einem bestimmten Grad undicht 3 Sprachmerkmale BearbeitenProgrammiersprachen Bearbeiten Unterschiedliche Programmiersprachen bieten unterschiedliche Moglichkeiten von Abstraktion wie zum Beispiel In objektorientierten Sprachen wie C Object Pascal oder Java wurde das Konzept der Abstraktion in Form einer eigenen deklarativen Anweisung umgesetzt Nach einer derartigen Deklaration ist es die Aufgabe des Programmierers eine Klasse zu implementieren um eine Instanz eines Objekts davon erzeugen zu konnen In der funktionalen Programmierung konnen beispielsweise durch Lambda Abstraktion aus einem Term wird eine Funktion in einer Variablen gemacht und Funktionen hoherer Ordnungen Parameter von Funktionen sind wiederum Funktionen Konzepte der Abstraktion implementiert werden Moderne Programmiersprachen innerhalb der Sprachfamilie von Lisp wie Clojure und Common Lisp erlauben syntaktische Abstraktion die es dem Programmierer ermoglicht Standardformulierungen im Code zu eliminieren neue Kontrollstrukturen zu implementieren oder sogar domainspezifische Sprachen zu entwickeln Diese Konzepte ermoglichen eine Effizienzsteigerung beim Programmieren sowie eine Verbesserung der Code Verstandlichkeit Spezifikationssprachen Bearbeiten Spezifikationssprachen setzen im Allgemeinen auf unterschiedliche Formen von Abstraktion da die Spezifikation eines Software Projektes typischerweise zu einem sehr fruhen und somit zu einem viel abstrakteren Zeitpunkt des Projektes erfolgt Die Unified Modeling Language ist eine Spezifizierungssprache die es beispielsweise erlaubt abstrakte Klassen zu definieren Diese bleiben auch wahrend der gesamten Architektur und Spezifizierungsphase des Projektes abstrakt Datenabstraktion BearbeitenDie Datenabstraktion sorgt fur eine klare Trennung von abstrakten Eigenschaften eines Datentyps und den konkreten Implementierungsdetails Bei den abstrakten Eigenschaften handelt es sich um die nach aussen hin sichtbaren Schnittstellen Konkrete Implementierungen bleiben vollstandig privat und konnen im Laufe der Zeit verandert werden Grunde dazu waren beispielsweise Verbesserungen der Effizienz Dabei ist es wichtig dass derartige Anderungen keine Auswirkungen auf die Schnittstelle nach aussen haben da diese das abstrakte Verhalten nicht beeinflussen Abstraktion in der objektorientierten Programmierung BearbeitenIn der objektorientierten Programmierung reprasentieren Objekte die abstrakten Akteure die Arbeiten verrichten ihren Zustand verandern und mit anderen Objekten im System kommunizieren konnen Dabei werden die detaillierten Informationen uber den genauen Zustand des Objektes oft verborgen was auch als Information Hiding oder Kapselung bezeichnet wird Hier werden Details verborgen um das Problem nicht zu komplex zu gestalten Eine weitere Form von Abstraktion bei objektorientierter Programmierung findet man auch im Zuge der Polymorphie Diese Vielgestaltigkeit erlaubt es Objekte unterschiedlicher Typen miteinander auszutauschen Auch die Vererbung bei Klassen und Strukturen ist eine Form von Abstraktion die es ermoglicht ein komplexes Gebilde von Relationen abzubilden Verschiedensten objektorientierte Programmiersprachen bieten vergleichbare Konzepte fur die Abstraktion an Alle haben dabei das Ziel die Vielgestaltigkeit in der Objektorientierten Programmierung zu unterstutzen Das folgende Code Beispiel in Java zeigt ein einfaches Modell von Tieren auf einem Bauernhof Hier werden unterschiedliche Abstraktionsebenen eingefuhrt Die Klasse Tier reprasentiert sowohl den Zustand eines Tieres als auch die Funktionalitaten public class Tier extends Lebewesen private Ort ort private double energieReserven public boolean istHungrig return energieReserven lt 2 5 public void essen Futter futter Futter essen energieReserven futter getKalorien public void aendereOrt Ort o Tier auf anderer Stelle unterbringen this ort o Mit dieser Definition konnen Objekte des Typs Tier erstellt werden und folgende Methoden aufgerufen werden schwein new Tier kuh new Tier if schwein istHungrig schwein essen essensreste if kuh istHungrig kuh essen gras kuh aendereOrt scheune Im obigen Beispiel stellt die Klasse Tier eine Abstraktion dar und wird an Stelle von tatsachlichen Tieren verwendet Lebewesen jene Klasse von der Tier abgeleitet ist ist eine weitere Form der Abstraktion In diesem Fall handelt es sich um eine Generalisierung der Klasse Tier Wurde man an dieser Stelle eine weitere Unterscheidung der Tiere benotigen beispielsweise eine Unterscheidung von Tieren die Milch bzw keine Milch liefern kann eine weitere Abstraktionsebene eingezogen werden Abstraktionsebenen BearbeitenDie Informatik spricht sehr oft von unterschiedlichen Stufen der Abstraktion engl levels oder layers Dabei beschreibt jede Stufe ein Modell derselben Information auf einem anderen Abstraktionsniveau im Kontext der jeweiligen Domain 4 Jede abstraktere hohere Stufe liegt auf einer im Vergleich dazu konkreteren niedrigeren Stufe So bauen beispielsweise Gatter auf elektronische Schaltungen Binarschnittstellen auf Gatter Maschinensprachen auf Binarschnittstellen Programmiersprachen auf Maschinensprachen und Applikationen sowie Betriebssysteme auf Programmiersprachen auf Datenbanksysteme Bearbeiten Bei Datenbank Systemen wird die Komplexitat sehr oft durch eine Aufteilung der Applikation in Abstraktionsebenen reduziert nbsp Abstraktionsebenen eines Datenbank SystemsPhysische Ebene physical level Diese Abstraktionsebene beschreibt wie die Daten im System tatsachlich gespeichert werden Hier werden komplexe Datenstrukturen im Detail definiert und beschrieben Logische Ebene logical level Die nachsthohere Ebene der Abstraktion beschreibt welche Daten in der Datenbank gespeichert werden und welche Beziehungen innerhalb dieser Daten bestehen Der Benutzer auf der logischen Ebene muss kein Wissen uber die physische Ebene besitzen auch wenn er diese indirekt uber die logische Ebene verwendet View level view level Die hochste Ebene der Abstraktion beschreibt nur Teile der gesamten Datenbank da viele Benutzer nur einen bestimmten Ausschnitt des Gesamtsystems benotigen und nur Zugriff auf einen kleinen Auszug der Datenbank haben Das System kann so unterschiedlichen Benutzern verschiedene Sichten anbieten Siehe auch BearbeitenObjektorientierte Programmierung Abstrakter Datentyp fur eine abstrakte Beschreibung von Daten Algorithmus fur eine Abstrakte Beschreibung eines Computerprozesses Datenmodellierung fur eine Strukturierung der Daten unabhangig von dem Prozess der sie verwendet Kapselung fur das Verstecken von Informationen Funktionen hoherer Ordnung fur eine Abstraktion wo Parameter Funktionen sind oder Funktionen als Ruckgabewerte geliefert werdenLiteratur BearbeitenHarold Abelson Gerald Jay Sussman Julie Sussman Structure and Interpretation of Computer Programs 2 Auflage MIT Press 1996 ISBN 0 262 01153 0 mit edu Lorenza Saitta Jean Daniel Zucker Abstraction in Artificial Intelligence and Complex Systems 1 Auflage Springer Verlag 2013 ISBN 978 1 4614 7051 9 springer com Joel Spolsky The Law of Leaky Abstractions In Joel on Software 11 November 2002 abgerufen am 24 Juni 2014 Abstraction information hiding CS211 course Cornell University Lev Gorodinski Abstractions 31 Mai 2012 abgerufen am 24 Juni 2014 Weblinks BearbeitenSimArch Beispiel fur eine Schichtenarchitektur fur verteilte Simulations SystemeEinzelnachweise Bearbeiten Martin Glinz Informatik II Modellierung Abstraktion PDF 2005 abgerufen am 14 Juni 2014 Folien von Martin Glinz an der Universitat Zurich Institut fur Informatik Guido Kruger Heiko Hansen Handbuch der Java Programmierung 7 Auflage 2011 javabuch de abgerufen am 12 Juni 2014 Joel Spolsky The Law of Leaky Abstractions 2002 abgerufen am 12 Juni 2014 Ein Blog Post von Spolsky in dem er behauptet dass alle nicht trivialen Abstraktionen undicht und deswegen problematisch sind Luciano Floridi Levellism and the Method of Abstraction PDF 343 kB IEG Research Report 22 November 2004 Abgerufen von https de wikipedia org w index php title Abstraktion Informatik amp oldid 237833211