Weiterhin enthält das Speicherabbild eines Objekts einen Zeiger auf die sogenannte Tabelle virtueller Methoden, die der Ermittlung des Einsprungspunkts der konkreten Implementierung bei einem Methodenaufruf dient. Apfelkuchen als Erbe von Kuchen und Apfel stellt ein bildhaftes Beispiel dieses Modellierungsfehlers dar, da Apfel keine sinnvolle Basisklasse ist. [30], Neben diesen positiven Aspekten haben sich bei der objektorientierten Programmierung auch negative Aspekte im Hinblick auf die Softwarewartung gezeigt, die vor allem im Zusammenhang mit der Polymorphie, aber auch mit der Vererbung stehen. Das folgende Beispiel stellt einen möglichen Ausschnitt aus dem Anwendungsgebiet der Unterstützung eines Fahrzeugverleihs dar. Vererbung, an die geschlechtliche oder ungeschlechtliche Fortpflanzung geknüpfte Weitergabe genetischer Informationen von Zelle zu Zelle und von den Eltern auf die Nachkommen sowie die Realisierung dieser Informationen [22], Programmiersprachen lassen sich in solche mit statischer oder dynamischer Typisierung einteilen. Beispielsweise dürften für eine Klasse Person die Spezialisierungen WeiblichePerson und MännlichePerson in den wenigsten Fällen zweckmäßig sein und bei der Modellierung der eigentlich relevanten Aspekte eher behindern. Learn the translation for ‘Programmierung’ in LEO’s English ⇔ German dictionary. Als – etwas konstruiertes – Beispiel könnte eine Klasse RechtwinkligesDreieck von der Klasse Rechteck des obigen Beispiels die Implementierung erben, um die Hypotenuse über die Methode getDiagonale zu berechnen, nachdem die Länge der Katheten für Länge und Breite eingesetzt wurden. Bei statischer Typisierung dagegen wird – meist durch eine Deklaration wie beispielsweise in Java – kenntlich gemacht, welchen Typ der Wert einer Variablen oder eines Parameters aufweisen muss. Diese bestehende virtuelle Methode wird nun in einem Kontext aufgerufen, für den sie nicht implementiert wurde. [34], Neben den positiven Aspekten haben sich bei der objektorientierten Programmierung auch negative Aspekte im Hinblick auf die Softwarewartung gezeigt, die vor allem im Zusammenhang mit der Polymorphie, aber auch mit der Vererbung stehen. Vererbung bei der Berechtigung Die zweite Steuerung ist vielen nicht bekannt, da Sie erst hinter den erweiterten AG-Rechte - Berechtigungen für die Exchange Konfiguration verstehen und setzen Vererbung bedeutet, das man aus einer Klasse eine neue Klasse ableitet, die alle Eigenschaften und Methoden der Ursprungsklasse übernimmt, jedoch auch noch weitere, eigene Eigenschaften und.. Dieses Beispiel findet sich in ähnlicher Form häufig in der Literatur und ist zur Veranschaulichung vieler – auch ungünstiger – Aspekte hilfreich, kann aber eigentlich nicht als besonders gutes Beispiel der Vererbung gelten. Hierbei ist aber eigentlich unpassend, dass bei Vererbung praktisch von keiner Sprache[11] eine durchgängige Trennung der Vererbung von Schnittstelle und Implementierung explizit unterstützt wird. ‚aufhäufen‘) ist ein Computerprogramm, das Quellcodes einer bestimmten Programmiersprache in eine Form übersetzt, die von einem Computer (direkter) ausgeführt werden kann. In Ruby hat private eine abweichende Bedeutung: Auf private Eigenschaften kann auch von spezialisierenden Klassen zugriffen werden. In den meisten Sprachen werden drei Fälle unterschieden:[25], Nicht alle Sprachen unterstützen diese dreiteilige Gliederung. Einige Programmiersprachen trennen zumindest teilweise zwischen diesen Aspekten und unterscheiden zwischen Schnittstelle (engl. Bei C# beispielsweise ist dies durch das Schlüsselwort override abgedeckt. In der Unified Modeling Language (UML) wird eine Vererbungsbeziehung durch einen Pfeil mit einer dreieckigen Spitze dargestellt, der von der abgeleiteten Klasse zur Basisklasse zeigt. [13] Eine Strategie zur Vermeidung dieses Effekts ist die Verwendung abstrakter Klassen oder Schnittstellen in den wurzelnahen Bereichen der Klassenhierarchie. [18] Das kann im skizzierten Beispiel sogar sinnvoll sein: Das Leergewicht ist bei einem Zweiwegefahrzeug grundsätzlich gleich, egal ob es auf der Schiene oder auf der Straße betrieben wird. Zum anderen kann eine Person auf diese Weise auch nicht mehrere Rollen gleichzeitig einnehmen. siehe beispielsweise: Java 2 Platform, Standard Edition, v 1.4.2, API Specification: Kuruvada, Praveen and Asamoah, Daniel and Dalal, Nikunj and Kak, Subhash: Die Modellierung dient hier nur zur Veranschaulichung. Dieses Verfahren geht über diesen Anwendungsfall weit hinaus, denn es ermöglicht den Aufruf jeder beliebigen Methode aller Klassen innerhalb der Klassenhierarchie. Nicht zuletzt dank des Vererbungsmechanismus können Softwaresysteme modular aufgebaut werden, was die Beherrschbarkeit großer Systeme ermöglicht und beispielsweise auch Portierungen erleichtert. In jedem Objekt der Klasse Kraftfahrzeug werden also die Attribute Fahrzeugnummer, Leergewicht, ZulässigesGesamtgewicht, Höchstgeschwindigkeit und Leistung gespeichert. Anhand des einführenden Beispiels lässt sich eine solche Aufrufkaskade erläutern. Da beim Zugriff auf ein Objekt des Containers normalerweise ein spezieller Typ erwartet wird, ist deshalb eine Typumwandlung (Downcast) erforderlich. In Eiffel wird sie mit ANY bezeichnet. Mit Flexionstabellen der verschiedenen Fälle und Zeiten Aussprache und relevante Diskussionen Kostenloser Vokabeltrainer Dies stimmt allerdings nicht für C++, wenn die Zuweisung auf Wertebene erfolgt. Den Vorgang des Erbens nennt man meist Ableitung oder Spezialisierung, die Umkehrung hiervon Generalisierung, was ein vorwiegend auf die Modellebene beschränkter Begriff ist. Die aus den verschiedenen Klassen geerbten Attribute liegen dabei typischerweise direkt hintereinander. [26][A 6], Ein weiterer, bei Vererbung relevanter Aspekt der Datenkapselung ist die Möglichkeit, in abgeleiteten Klassen die Sichtbarkeit von Eigenschaften gegenüber der Basisklasse zu verändern. C vererbung englisch. Die Spalten der Attribute, die bei konkreten Objekten der Klassenhierarchie nicht vorhanden sind, enthalten Null-Werte. Ein Vorteil davon ist, dass allgemeine Funktionalität, beispielsweise für die Serialisierung oder die Typinformation, dort untergebracht werden kann. Erfolgt dies nicht, hängen die bisherigen Implementierungen nun „in der Luft“, das heißt, sie werden an erforderlichen Stellen nicht mehr aufgerufen, statt dessen wird eine in einer Basisklasse existierende Standardfunktionalität verwendet, die eigentlich vorgesehene angepasste Funktionalität kommt nicht mehr zur Ausführung. Die Vererbung dient dazu, aufbauend auf existierenden Klassen neue zu schaffen, wobei die Beziehung zwischen ursprünglicher und neuer Klasse dauerhaft ist. Eine neue Klasse kann dabei eine Erweiterung oder eine Einschränkung der ursprünglichen Klasse sein. Übersetzung Deutsch-Englisch für Polymorphie im PONS Online-Wörterbuch nachschlagen! Hierfür ist es erforderlich, dass innerhalb der Methodenimplementierung der spezialisierten Klasse das Pendant der Basisklasse aufgerufen wird. Dass in den meisten Sprachen wie auch C++ oder Java[A 9] eine derartige Unterstützung fehlt, liegt daran, dass dieser Aspekt bei Konzeption der Sprache keine ausreichende Berücksichtigung fand, und die nachträgliche Einführung eines solchen Schlüsselworts aufgrund großer Kompatibilitätsprobleme auf erheblichen Widerstand stößt. Abgeleitete Klasse und Basisklasse stehen typischerweise in einer „ist-ein“-Beziehung zueinander. Auf der Vererbung basierende Klassenhierarchien spiegeln strukturelle und verhaltensbezogene Ähnlichkeiten der Klassen wider. Inheritance is one of the fundamental attributes of object-oriented programming. Ein Vorteil solcher Spezifikationen ist, dass sie mit einer mathematischen Semantik versehen werden können. [16], Neben einem erheblichen zusätzlichen Implementierungsaufwand für Compiler und Laufzeitumgebung gibt es vor allem zwei Gründe für die häufige fehlende oder eingeschränkte Unterstützung:[17]. Jan 2013: A:. Inheritance) ist eines der grundlegenden Konzepte der… …   Deutsch Wikipedia, Vererbung — Übertragung; Übergang * * * Ver|ẹr|bung 〈f. Mittels Vererbung könnt ihr verschiedene Hierarchiestufen in euren Klassen ermöglichen. [33], Auch ohne die Änderung einer Klassenschnittstelle kann es bei Umstellung auf eine neue Version einer Basisklasse zu Problemen kommen. [3] Spezialisten für die objektorientierte Programmierung, beispielsweise Bertrand Meyer, sehen in einer vollständigen Aufspaltung mehr Schaden als Nutzen. Für erstgenanntes Problem bieten die Sprachen meist Möglichkeiten der Umbenennung. Inheritance) ist eines der grundlegenden Konzepte der Objektorientierung und hat große Bedeutung in der Softwareentwicklung. Bei Java und Modula-3 – den beiden einzigen bekannteren Sprachen, die so etwas unterstützen – muss die Menge der möglichen Ausnahmetypen einer überschriebenen Methode eine Teilmenge der ursprünglichen Typen sein, was Kovarianz bedeutet und dem liskovschen Substitutionsprinzip entspricht. Auf Basis der Attribute Höchstgeschwindigkeit und Leistung können möglicherweise bereits in der Klasse Kraftfahrzeug einige Implementierungen vorgenommen werden, wenn für alle betreibbaren Fahrzeuge eines Landes die Eignung der Fahrerlaubnis bereits anhand des zulässigen Gesamtgewichts, der Höchstgeschwindigkeit und der Leistung entscheidbar ist. Der formalere Ansatz ist weniger redundant und fehleranfällig, bietet dafür aber weniger Flexibilität.[14]. Java und .NET-Sprachen bieten eine eingeschränkte Unterstützung, dort kann eine Klasse zwar von beliebig vielen Schnittstellen, aber nur von einer Klasse erben, die Implementierungen enthält. Objektorientierte Programmiersprachen können eine Verletzung dieses Prinzips, das auf Grund der mit der Vererbung verbundenen Polymorphie auftreten kann, nicht von vornherein ausschließen. [9], Wenn in einer Klasse eine Methode überschrieben wird, soll häufig nur Funktionalität ergänzt und die Implementierung der Basisklasse weiterhin genutzt werden, da diese bereits allgemeine Aspekte abdeckt, die für die Spezialisierung ebenfalls gültig sind. Vererbung und Modularisierung. Vererbung ist ein Grundprinzip der objektorientierten Programmierung. [33], Im zweiten Fall muss die Umbenennung oder Signaturanpassung in den spezialisierenden Klassen nachgezogen werden. Beispielsweise wären Attribute wie Antriebsart, Hubraum und ob ein Anhänger mitgeführt wird in einem realitätsnahen System ebenfalls zu berücksichtigen. [17] Eiffel bietet auch beide Möglichkeiten und dies sogar auf Ebene einzelner Attribute und Methoden. Dieser Aufruf erfolgt typischerweise zu Beginn oder am Ende der überschreibenden Methode, teilweise ist aber auch zusätzliche Funktionalität vor und nach diesem Aufruf zu implementieren. Ein sehr häufiger Anwendungsfall der Mehrfachvererbung ist die Verwendung von Mixin-Klassen, die allgemein verwendbare Implementierungen beisteuern und somit der Vermeidung von Redundanz dienen.[15]. Viele objektorientierte Programmiersprachen verfügen über eine zentrale Klasse, von der alle Klassen – über wie viele Stufen auch immer – letztlich abgeleitet sind. Erfolgt dies nicht, hängen die bisherigen Implementierungen nun „in der Luft“, das heißt, sie werden an erforderlichen Stellen nicht mehr aufgerufen, stattdessen wird eine in einer Basisklasse existierende Standardfunktionalität verwendet, die eigentlich vorgesehene angepasste Funktionalität kommt nicht mehr zur Ausführung. Funktionen die in einer Oberklasse programmiert wurden, vererben sich auf … Vererbung (Programmierung) Operationen a und b). Lernen Sie die Übersetzung für 'die Programmierung' in LEOs Englisch ⇔ Deutsch Wörterbuch. Eine Alternative bei letzteren Sprachen ist die Verwendung von Delegation, die einiges mehr Programmcode erfordert. Objektorientierte Datenbanken haben das Ziel, einen sogenannten Impedance Mismatch zu vermeiden, der bei Abbildung der bei der Programmierung verwendeten Vererbungs- und Objektstruktur auf eine relationale Datenbank entsteht. Ein Vorteil solcher Spezifikationen ist, dass sie mit einer mathematischen Semantik versehen werden können. Bei der reinen Implementierungsvererbung, die auch als private Vererbung bezeichnet wird, nutzt die erbende Klasse die Funktionalität und Attribute der Basisklasse, ohne nach außen als Unterklasse dieser Klasse zu gelten. [4], Beim Übergang von der objektorientierten Modellierung zur Programmierung gibt es die Situation, dass die Modellierung einer klassifizierenden Hierarchie der fachlichen Anwendungsobjekte nicht ohne weiteres auf die Programmebene übertragen werden kann. Häufig ist eine Verletzung des Prinzips nicht auf den ersten Blick offensichtlich. Wie der Name schon sagt, ist es eine Aufgabe der Lage , Eigenschaften von einem anderen Objekt zu erben. [8], Mittels Vererbung können sowohl der Typ, der durch seine Schnittstelle spezifiziert wird, als auch die Funktionalität an die abgeleitete Klasse weitergegeben werden. Eine umfassende Unterstützung bieten beispielsweise auch C++, Eiffel und Python. [36][37], Eine häufige Ursache des Fragile Base Class Problems ist die zu großzügige Offenlegung von Implementierungsdetails, die zumeist aus praktischen Gründen erfolgt, wobei auch Teile offengelegt werden, die in einer anfänglichen Version noch nicht ausgereift sind. [14], Die verschiedenen Programmiersprachen ermöglichen einen Aufruf der Basisklassenimplementierung auf unterschiedliche Weise. Nicht zuletzt dank des Vererbungsmechanismus können Softwaresysteme modular aufgebaut werden, was die Beherrschbarkeit großer Systeme ermöglicht und beispielsweise auch Portierungen erleichtert. Bei allen Methoden, die eine virtuelle Methode der Basisklasse überschreiben, muss dieses Schlüsselwort angegeben werden. Nach Rücksprung aus den gerufenen Basisimplementierungen wird die Prüfung jeweils fortgesetzt, wenn der Fall noch nicht entschieden werden konnte. Riesenauswahl an Markenqualität. → Hauptartikel: Kovarianz und Kontravarianz, Im Zusammenhang mit dem liskovschen Substitutionsprinzip steht auch die Behandlung der Varianz bei den Signaturen überschriebener Methoden. Die Klasse Rechteck besitzt die Attribute laenge und breite, die über den Konstruktor gesetzt werden. Die Berechnung des Umfangs wird nicht reimplementiert, sondern von der Basisklasse übernommen – obwohl natürlich auch dort eine geringfügige Vereinfachung möglich wäre. Vererbung dargestellt mittels UML. Übersetzung im Kontext von „object-oriented programming“ in Englisch-Deutsch von Reverso Context: The reader should have a good understanding of object-oriented programming with PHP 5. Smalltalk war die erste objektorientierte Sprache mit dynamischer Typisierung. Im Folgenden wird in der Programmiersprache Java ein Beispiel für die Ableitung von Quadrat als Spezialisierung von Rechteck skizziert. Wichtig: Bitte hilf auch bei der Prüfung anderer Übersetzungsvorschläge mit! [31], Bei echten objektorientierten Datenbanken werden im Wesentlichen zwei gegensätzliche Strategien unterschieden: Persistenz durch Vererbung (by Inheritance) und orthogonale Persistenz. Englisch als Zweitsprache Deutsche Spanisch japanisch Pages Ressourcen für Ausbilder ... Ein wichtiges Konzept in der objektorientierten Programmierung ist die Vererbung. [26], Neben einer einfachen Serialisierung ist die Speicherung in einer Datenbank das üblichste Verfahren, Objekte persistent zu machen. Den Vorgang des Erbens nennt man meist Ableitung oder Spezialisierung, die Umkehrung hiervon Generalisierung, was ein vorwiegend auf die Modellebene beschränkter Begriff ist. [A 1] Die Fahrerlaubnis könnte länderspezifisch sein, zudem müssen die Länder berücksichtigt werden, in denen das Kraftfahrzeug betrieben werden soll. Die übliche Lösung ist die Trennung der Aspekte und die Modellierung einer assoziativen Beziehung zwischen Person und ihren Rollen. Dieses Verfahren geht über diesen Anwendungsfall weit hinaus, denn es ermöglicht den Aufruf jeder beliebigen Methode aller Klassen innerhalb der Klassenhierarchie. [A 7] Eine solche Konvertierung wird Upcast genannt.[28]. Über 80% neue Produkte zum Festpreis; Das ist das neue eBay.Finde ‪Denglisch‬! Bei dynamischer Typisierung wird für Variablen und Parameter nicht explizit ein Typ festgelegt. Alexandria . Das bedeutet, Eingangsparameter können allgemeiner sein als bei der Basisklasse, der Typ des Rückgabewerts darf spezieller sein.