www.wikidata.de-de.nina.az
Als Datenkapselung englisch encapsulation nach David Parnas auch bekannt als information hiding bezeichnet man in der Programmierung das Verbergen von Daten oder Informationen vor dem Zugriff von aussen Der direkte Zugriff auf die interne Datenstruktur wird unterbunden und erfolgt stattdessen uber definierte Schnittstellen Black Box Modell Inhaltsverzeichnis 1 Herleitung 2 Datenkapselung im objektorientierten Paradigma 2 1 Verwendete Zugriffsarten 2 2 Vorteile 2 3 Nachteile 3 Beispiele 4 EinzelnachweiseHerleitung BearbeitenDatenkapselung ist ein lange bekanntes Prinzip innerhalb der strukturierten und modularen Programmierung Zentrales Modell ist hier der abstrakte Datentyp in dem Daten in einer Datenstruktur zusammengefasst sind auf die nur uber festgelegte Zugriffsfunktionen Prozeduren zugegriffen werden kann In der tatsachlichen Programmierung wird der abstrakte Datentyp auf verschiedene Weisen implementiert Ein anderes Beispiel in modernen Programmiersprachen ist das Verbergen von Daten innerhalb von Gultigkeitsbereichen Jede Teilstruktur eines Programms Hauptblock Prozeduren Funktionen Unterprogramme definiert einen solchen Bereich so dass eine Gultigkeitshierarchie entsteht Deklarierte Daten sind nur innerhalb des umgebenden und in allen tieferen Bereichen sichtbar und gultig Fur einen hoheren Bereich bleiben sie verborgen Datenkapselung im objektorientierten Paradigma BearbeitenKapselung ist auch ein wichtiges Prinzip der objektorientierten Programmierung Als Kapselung bezeichnet man den kontrollierten Zugriff auf Methoden bzw Attribute von Klassen Klassen konnen den internen Zustand anderer Klassen nicht in unerwarteter Weise lesen oder andern Eine Klasse hat eine Schnittstelle die daruber bestimmt auf welche Weise mit der Klasse interagiert werden kann Dadurch wird das Umgehen von Invarianten des Programms verhindert Vom Innenleben einer Klasse soll der Verwender gemeint sind sowohl die Algorithmen die mit der Klasse arbeiten als auch der Programmierer der diese entwickelt moglichst wenig wissen mussen Geheimnisprinzip Durch die Kapselung werden nur Angaben uber das Was Funktionsweise einer Klasse nach aussen sichtbar nicht aber das Wie die interne Darstellung Dadurch wird eine Schnittstelle nach aussen definiert und zugleich dokumentiert Verwendete Zugriffsarten Bearbeiten Die Unified Modeling Language als De facto Standardnotation erlaubt die Modellierung folgender Zugriffsarten in Klammern die Kurznotation der UML public Zugreifbar fur alle Objekte private Nur fur Objekte der eigenen Klasse zugreifbar protected Nur fur Objekte der eigenen Klasse und von abgeleiteten Klassen dieser Klasse zugreifbar package erlaubt den Zugriff fur alle Elemente innerhalb des eigenen Pakets Anmerkung Die Handhabung des Schlusselwortes package ist in den verschiedenen Programmiersprachen unterschiedlich Ersetzung in der jeweiligen Sprache C internal Visual Basic NET friend Java Keine Definition bedeutet Package Zugriff Default Die Moglichkeiten zur Spezifizierung der Zugreifbarkeit sind je nach Programmiersprache unterschiedlich Vorteile Bearbeiten Da die Implementierung einer Klasse anderen Klassen nicht bekannt ist kann die Implementierung geandert werden ohne die Zusammenarbeit mit anderen Klassen zu beeintrachtigen Es ergibt sich eine erhohte Ubersichtlichkeit da nur die offentliche Schnittstelle einer Klasse betrachtet werden muss Beim Zugriff uber eine Zugriffsfunktion spielt es von aussen keine Rolle ob diese Funktion 1 1 im Inneren der Klasse existiert das Ergebnis einer Berechnung ist oder moglicherweise aus anderen Quellen z B einer Datei oder Datenbank stammt Deutlich verbesserte Testbarkeit Stabilitat und Anderbarkeit der Software bzw deren Module Reduktion der Anzahl der moglichen unerwunschten Interaktionen zwischen Programmteilen Enthalt ein Programm N Variablen und M Funktionen gibt es O N M displaystyle mathcal O N cdot M nbsp mogliche Interaktionen In der Regel sind aber nur O N M displaystyle mathcal O N M nbsp Interaktionen tatsachlich erwunscht Dies spielt bei der Fehlersuche eine Rolle weil sich Fehler meist dadurch manifestieren dass eine Variable einen falschen Wert enthalt und man zur Eingrenzung der Fehlerursache wissen muss welche Funktionen auf die Variable Zugriff haben Die Datenkapselung schrankt den zu untersuchenden Programmabschnitt von vornherein auf sehr wenige Funktionen ein Nachteile Bearbeiten In Abhangigkeit vom Anwendungsfall Geschwindigkeitseinbussen durch den Aufruf von Zugriffsfunktionen Der direkte Zugriff auf die Datenelemente ware schneller Zusatzlicher Programmieraufwand fur die Erstellung von Zugriffsfunktionen Die interne Darstellung eines Objekts wird im Allgemeinen ausserhalb der Objektdefinition ausgeblendet Normalerweise konnen nur die eigenen Methoden des Objekts seine direkt untersuchen oder bearbeiten Durch das Ausblenden der internen Daten des Objekts wird seine Integritat geschutzt indem verhindert wird dass Benutzer die internen Daten der Komponente in einen ungultigen oder inkonsistenten Zustand versetzen Ein vermeintlicher Vorteil der Kapselung besteht darin dass sie die Systemkomplexitat verringern und damit die Robustheit erhohen kann indem der Entwickler die gegenseitigen Abhangigkeiten zwischen Softwarekomponenten begrenzen kann Einige objektorientierte Programmiersprachen wie Ruby erlauben den Zugriff nur uber Objektmethoden aber die meisten z B C C und Java bieten dem Programmierer ein gewisses Mass an Kontrolle daruber was verborgen ist normalerweise uber Schlusselworter wie public und private Das Ausblenden von Informationen wird erreicht indem eine kompilierte Version des Quellcodes bereitgestellt wird die uber eine Header Datei verbunden ist 1 Beispiele BearbeitenDas folgende Beispiel in der Programmiersprache C zeigt wie der Zugriff auf ein Attribut durch die Verwendung des Schlusselworts private eingeschrankt werden kann class Program public class Konto private decimal kontostand 500 00 m public decimal gibKontostand return kontostand static void Main Konto meinKonto new Konto decimal meinKontostand meinKonto gibKontostand Diese Main Methode kann den Kontostand mit der offentlichen Methode gibKontostand die von der Klasse Konto zur Verfugung gestellt wird abfragen aber sie kann den Wert des Attributs kontostand nicht andern Das folgende Beispiel ist in der Programmiersprache Java implementiert public class Angestellter private BigDecimal salary new BigDecimal 50000 00 public BigDecimal gibLohn return salary public static void main Angestellter angestellter new Angestellter BigDecimal lohn angestellter gibLohn Die Kapselung ist auch in nicht objektorientierten Programmiersprachen moglich In C kann beispielsweise eine Struktur in der offentlichen Programmierschnittstelle uber die Header Datei fur eine Reihe von Funktionen deklariert werden die mit einem Datenelement arbeiten das Datenelement enthalt auf die Clients der Programmierschnittstelle mit dem Schlusselwort extern nicht zugreifen konnen 2 Header file api h struct Entity Opaque structure with hidden members API functions that operate on Entity objects extern struct Entity open entity int id extern int process entity struct Entity info extern void close entity struct Entity info extern keywords here are redundant but don t hurt extern defines functions that can be called outside the current file the default behavior even without the keywordEinzelnachweise Bearbeiten Benjamin Pierce Types and Programming Languages In MIT Press 2002 K N King C Programming A Modern Approach 2nd Auflage W W Norton amp Company 2008 ISBN 978 0 393 97950 3 S 464 stormingrobots com Memento des Originals vom 11 November 2020 im Internet Archive abgerufen am 1 November 2019 nbsp Info Der Archivlink wurde automatisch eingesetzt und noch nicht gepruft Bitte prufe Original und Archivlink gemass Anleitung und entferne dann diesen Hinweis 1 2 Vorlage Webachiv IABot www stormingrobots comVPrinzipien objektorientierten DesignsSOLID Prinzipien Single Responsibility Open Closed Liskovsches Substitutionsprinzip Interface Segregation Dependency InversionWeitere Prinzipien Gesetz von Demeter Design by Contract Datenkapselung Linguistic Modular Units Self Documentation Uniform Access Single Choice Persistence Closure Command Query SeparationPackaging Prinzipien Reuse Release Equivalence Common Closure Common Reuse Acyclic Dependencies Stable Dependencies Stable Abstractions Abgerufen von https de wikipedia org w index php title Datenkapselung Programmierung amp oldid 236938313