www.wikidata.de-de.nina.az
Delegation von englisch delegation Abordnung Ubertragung hat in der objektorientierten Programmierung verschiedene Bedeutungen die alle mit dynamischer Methodenbindung zur Programmlaufzeit zu tun haben insbesondere in NET Sprachen wie C eine objektorientierte Variante von Methodenzeigern 1 objektbasierte Vererbung im Gegensatz zur ublichen klassenbasierten Vererbung Hierbei ubernimmt ein Objekt automatisch Eigenschaften und Funktionalitaten die es selbst nicht explizit definiert von einem anderen konkreten Objekt seinem Prototyp 2 3 ursprunglich die Implementierung von Methoden eines Objekts durch Aufruf aquivalenter Methoden eines anderen Objekts auch englisch consultation fur Absprache Beratung oder invocation Aufruf genannt 4 Diese Variante passt zu den Entwurfsmustern Proxy und Adapter Die Sprache Objective C kennt das Schlusselwort delegate als Funktionalitatsspezialisierung Hier kann ein Objekt zur Laufzeit nach einer beliebigen Funktionalitat Methode befragt werden Diese wird dann im Kontext des fragenden Objekts eventuell ausgefuhrt als sei sie Teil des fragenden Objekts Inhaltsverzeichnis 1 Hintergrund 2 Als Entwurfsmuster 3 Als Sprachelement 4 Duale Vererbung 5 Verwandte Bereiche 6 Siehe auch 7 Weblinks 8 EinzelnachweiseHintergrund BearbeitenIm Bereich der objektorientierten Programmierung kann in manchen Fallen durch Vererbung oder gangige Beziehungsarten wie die Interaktion oder Aggregation keine zufriedenstellende Trennung von Dienstanbieter und nutzer garantiert werden 5 Alle zuvor genannten Konzepte erfordern eine Bindung schon vor der Laufzeit Wird der Dienstanbieter verandert konnen die Nutzer diesen unter Umstanden nicht mehr nutzen da sie seine Schnittstellen nicht mehr verstehen Die Delegation bietet in solchen Fallen eine fur die Nutzer konstante Schnittstelle und delegiert die Aufrufe an eine darunter liegende Schicht In der Informatik wird dieses unter anderem in der Forschung zur Kunstlichen Intelligenz seit langem verwendet Als Entwurfsmuster BearbeitenIn den Entwurfsmustern der Gang of Four engl fur Viererbande wird statt des allgemeinen Delegate vom Proxy oder dem Adapter gesprochen Im Allgemeinen kennt der Nutzer eines Dienstes nur die Schnittstelle zu einem Vertreter der Diensterbringung und das Protokoll d h wie die Schnittstelle benutzt werden muss Der Vertreter verbirgt die Diensterbringung hinter mehr oder weniger dynamischen Verfahren zur Ermittlung eines konkreten Dienstleisters Eine Aufbereitung der ubergebenen Daten ist moglich Ausserdem kann der Vertreter Fehler und Ausnahmesituationen erkennen und sogar geeignete Massnahmen wie die Auswahl von Alternativen der Delegation bieten Als Sprachelement BearbeitenDie einfache Definition der Delegation ist dass die Funktionsaufrufe das identische Verhalten wie virtuelle Funktionsaufrufe aufweisen es wird immer die am meisten spezifizierte Funktion aufgerufen Respektive ist es die Originalfunktion welche den Anfang des sogenannten lookups engl fur Nachschlag darstellt selbst wenn es die Kontrolle einem anderen Objekt ubertragen hat Die Delegation besitzt den Vorteil dass sie zur Laufzeit erfolgen kann Sie kann auch wahrend der Laufzeit wieder ruckgangig gemacht werden Die Vererbung konnte auch Funktionsaufrufe derart zusammenfassen zielt auf den Typ einer Entitat und ist auf die Kompilierungszeit beschrankt Der Nachteil der Delegation ist dass sie nicht vollstandig als typsicher betrachtet werden kann G Kniesel zeigte allerdings dass eine beschrankte Version typsicher sein kann Die Delegation kann auch als Laufzeitvererbung fur spezifische Objekte bezeichnet werden Programmiersprachen unterstutzen normalerweise das Konzept der Delegation nicht allerdings existieren ein paar Ausnahmen ECMAScript Self G Kniesels Lava 6 sowie das Tcl Objektsystem Snit Lava benutzt einen expliziten Delegationslink welcher nie null sein kann und sich nie wahrend der Lebenszeit eines Objektes andert Self besitzt das Sprachelement der expliziten parent slots welche sich zur Laufzeit verandern konnen Da viele parent slots vorhanden sind besitzt Self grundsatzlich die Fahigkeit der mehrfachen Vererbung Die Delegation in Self wird durch das Sprachelement mutable parent slots realisiert Dieses Konzept wird in einer Reihe von Arbeiten in der Literatur uber objektorientierter Systementwicklung erlautert allerdings ist zu beachten dass keine einheitliche Terminologie existiert Wie auch bei der unten beschriebenen dualen Vererbung bedarf es eines sorgsam entworfenen Funktions lookup Schemas Duale Vererbung BearbeitenWenn die Programmiersprache die Delegation und die Vererbung unterstutzt kann man die duale Vererbung einsetzen indem man beide Mechanismen gleichzeitig benutzt 7 class C extends A delegationlink D d In diesem Beispiel sind zusatzliche Regeln bezuglich des lookup der Funktionen notig da zwei Funktionen als potentiell am meisten spezifiziert bezeichnet werden konnen Dies wird in K Graversens Promovierungsthese bezuglich Regeln ausgearbeitet Verwandte Bereiche BearbeitenDelegation kann als low level Mechanismus beschrieben werden welcher dazu dient Code zwischen zwei Entitaten auszutauschen Insbesondere objektorientierte Programmiersprachen benutzen die Delegation Vornehmlich altere Programmiersprachen geben an Delegation zu beherrschen obwohl sie faktisch die Aggregation umsetzen was mit den unterschiedlichen Definitionen der Delegation zusammenhangt Seit neuerer Zeit wird die Forschung zu verteilter Delegation im Bereich der Suchmaschinen betrieben Clients einer Suchmaschine benutzen eine verteilte Entitat welche die besten Suchergebnisse sowie allgemeine wiederbenutzbare Funktionalitat zur Verfugung stellt Die Delegation wurde als Losungsansatz in der aspektorientierten Programmierung von Ernst und Lorenz im Jahr 2003 vorgeschlagen Die Delegation stellt in prototypenbasierten Programmiersprachen wie JavaScript eine fundamentale Programmiertechnik dar Siehe auch BearbeitenDelegate CLI Adapter Entwurfsmuster Hook Informatik Liskovsches Substitutionsprinzip Wrapper Software Weblinks BearbeitenThe Darwin Project Die Lava Programmiersprache und allgemeine Artikel uber die Delegation Schnelle Delegate in C Eine neue Art Delegate in C zu implementieren PerfectJPattern Open Source Project stellt eine wiederbenutzbare Java implementation von Delegaten zur VerfugungEinzelnachweise Bearbeiten Dirk Louis und Shinja Strasser Microsoft Visual C 2008 Das Entwicklerbuch Microsoft Press Deutschland 2008 ISBN 978 3 86645 507 8 Kapitel Delegaten und Ereignisse Henry Lieberman Using Prototypical Objects to Implement Shared Behavior in Object Oriented Systems in OOPSLA 1986 S 214 223 Gunter Kniesel Type Safe Delegation for Run Time Component Adaption Memento vom 12 Dezember 2013 im Internet Archive PDF 72 kB ECOOP 99 Proceedings of the 13th European Conference on Object Oriented Programming Springer Verlag London 1999 table of contents ISBN 3 540 66156 5 Zur begrifflichen Abgrenzung siehe Darwin Projekt What is Not Delegation Memento vom 13 Februar 2013 im Internet Archive Uni Bonn englisch Ulrich Frank und Soren Halter Delegation Eine sinnvolle Erganzung gangiger objektorientierter Modellierungskonzepte PDF 147 kB Informationssystem Architektur Rundbrief des GI Fachausschusses 5 2 3 Jg Heft 1 Sept 1996 S 16 19 Lava Memento vom 29 Mai 2009 im Internet Archive Uni Bonn K B Graversen and K Osterbye Implementation of a Role Language for Object Specific Dynamic Separation of Concerns Memento des Originals vom 21 November 2008 im Internet Archive 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 aosd net PDF 405 kB AOSD Workshop SPLAT Software engineering Properties of Languages for Aspect Technologies March 2003 Abgerufen von https de wikipedia org w index php title Delegation Softwareentwicklung amp oldid 225032446