Unterschied zwischen Zusammensetzung und Vererbung

Unterschied zwischen Zusammensetzung und Vererbung

In der Programmierung ist wiederverwendbarer Code die Verwendung vorhandener Software zum Erstellen neuer Software unter Verwendung der Prinzipien der Wiederverwendbarkeit. Die Wiederverwendbarkeit des Codes wird als grundlegende produktive Funktionalität in Informationstechnologie -intensiven Unternehmen angesehen. Es wird in objektorientierten Systemen gefördert, indem sie Beziehungen zwischen Klassen aufbauen. Es gibt zwei grundlegend. Die Implementierung der Vererbung ist eine Möglichkeit, Klassen in Beziehung zu setzen, aber OOP bietet eine neue Art von Beziehung zwischen Klassen, die als Komposition bezeichnet werden. Durch die Aufstellung einer Beziehung zwischen neuen und vorhandenen Klassen kann eine neue Klasse den Code von einem oder mehreren vorhandenen Klassen erben oder einbetten.

In OOP ist die Vererbung die Methodik, mit der ein Objekt die Eigenschaften eines oder mehrerer anderer Objekte erwirbt. Es ist eines der leistungsstärksten Tools bei der Implementierung der Wiederverwendbarkeit von Code in OOP. Bei der Verwendung der Vererbung kann eine neue Klasse erstellt werden, indem Eltern-Kind-Beziehungen mit vorhandenen Klassen aufgebaut werden. Die Objektzusammensetzung ist eine Alternative zur Klassenvererbung. Die Verwendung eines Objekts in einem anderen Objekt wird als Komposition bezeichnet. Bei vielen Gelegenheiten möchten Sie ein Objekt als Feld innerhalb einer anderen Klasse verwenden, da es einfach ist, komplexe Klassen mit zuvor geschriebenen, gut gestalteten Klassen als Komponenten zu erstellen. Dies wird als Komposition bezeichnet. Nun, sowohl Vererbung als auch Zusammensetzung liefern in vielen Fällen eine äquivalente Funktionalität. Die Objektzusammensetzung ist ein besseres Wiederverwendungsmodell als das Klassenererschein. Dieser Artikel vergleicht die beiden Ansätze.

Was ist Vererbung?

Vererbung ist eines der leistungsstärksten Tools bei der Implementierung der Wiederverwendbarkeit von Code in der objektorientierten Programmierung. Es bezieht sich auf die Funktionalität, mit der ein Objekt die Eigenschaften eines oder mehrerer anderer Objekte erfasst. Vererbung in C ++ bedeutet, dass Sie Klassen erstellen können, die ihre Attribute aus vorhandenen Klassen abgeben. Dies bedeutet. Implementierung der Vererbung fördert die Wiederverwendbarkeit des Codes, da aus vorhandenen Klassen neue Klassen erstellt werden. Die Klassenvererbung erleichtert es auch einfacher, die wiederverwendunge Implementierung zu ändern. Aber die Erbschaft der Klasse hat auch einige Nachteile. Erstens, da die Erbschaft zur Kompilierungszeit definiert ist, können Sie die Implementierungen nicht ändern, die zur Laufzeit von übergeordneten Klassen geerbt wurden.

Was ist Komposition?

OOP bietet eine weitere Beziehung zwischen Klassen, die als Komposition bezeichnet werden und auch als HAS-A-Beziehung bezeichnet wird. Wenn die Merkmale eines Objekts Teil eines anderen Objekts sein müssen, fordert die Beziehung Komposition. Um eine Klasse aus vorhandenen Klassen zu verfassen, sollte ein Objekt jeder Klasse als Mitglied der neuen Klasse deklariert werden. In einfachen Worten wird die Verwendung eines Objekts in einem anderen Objekt als Komposition bezeichnet. Oft möchten Sie ein Objekt als Feld innerhalb einer anderen Klasse verwenden. Sie verwenden ein Objekt in einer Klasse in Komposition. Im Gegensatz zur Klassenvererbung wird die Objektzusammensetzung zur Laufzeit dynamisch durch Objekte definiert, die Verweise auf andere Objekte erfassen. Darüber hinaus bietet die Komposition eine bessere Möglichkeit, ein Objekt zu verwenden, ohne die internen Details des Objekts zu beeinträchtigen. Hier ist die Komposition nützlich.

Unterschied zwischen Zusammensetzung und Vererbung

Ansatz

Während sowohl Vererbung als auch Zusammensetzung die Wiederverwendbarkeit des Code im objektorientierten System durch die Aufstellung von Beziehungen zwischen Klassen fördern und in vielerlei Hinsicht eine äquivalente Funktionalität bieten, verwenden sie unterschiedliche Ansätze. Mit der Vererbung können Sie Klassen erstellen, die ihre Attribute aus vorhandenen Klassen ableiten. Während Sie die Vererbung zum Erstellen einer Klasse verwenden, können Sie eine vorhandene Klasse erweitern. Im Gegenteil, die Verwendung eines Objekts in einem anderen Objekt wird als Komposition bezeichnet. Die Objektzusammensetzung ist eine Alternative zur Klassenvererbung. Wenn die Merkmale eines Objekts Teil eines anderen Objekts sein müssen, fordert die Beziehung Komposition.

Beziehung

In der Vererbung spezialisiert Sie eine Klasse, um eine „IS-A“ -Beziehung zwischen den Klassen zu erstellen, die zu einer starken Kopplung zwischen der Basis- und abgeleiteten Klassen führt. Es ermöglicht eine Hierarchie von Klassen, und die Hierarchie beginnt mit der allgemeinsten Klasse und wechselt zu spezifischeren Klassen. Durch die Implementierung der Vererbung werden die Mitgliederfunktionen aus einer Klasse zu Eigenschaften einer anderen Klasse, ohne sie explizit innerhalb der Klasse zu codieren. In der Komposition verwenden Sie ein Objekt in einer Klasse und alle Anforderungen an das Objekt werden an das Objekt weitergeleitet. Die internen Details sind in der Komposition nicht einander ausgesetzt, daher ist es eine „HAS-A“ -Be Beziehung.

Implementierung

Die Klassenvererbung wird zur Kompilierungszeit definiert, sodass Sie die Implementierungen nicht ändern können, die von den Elternklassen zur Laufzeit geerbt wurden. Da die Erbschaft eine Unterklasse der Details der Umsetzung seiner Eltern ausstellt, bricht sie häufig die Kapselung durch. Alle Änderungen in der übergeordneten Klasse werden in der Unterklasse widerspiegeln, die Probleme verursachen können, wenn Sie versuchen, eine Unterklasse wiederzuverwenden. Die Objektzusammensetzung im Gegenteil wird zur Laufzeit dynamisch durch Objekte definiert, die Referenzen auf andere Objekte erfassen. Und weil Objekte ausschließlich über ihre Schnittstellen zugegriffen werden, wird die Kapselung nicht gebrochen. Jedes Objekt kann zur Laufzeit durch ein anderes Objekt ersetzt werden, solange es den gleichen Typ hat.

Komposition vs. Vererbung: Vergleichstabelle

Zusammenfassung der Komposition vs. Nachlass

In vielen Fällen möchten Sie ein Objekt als Feld innerhalb einer anderen Klasse verwenden, da komplexe Klassen mit zuvor geschriebenen, gut gestalteten Klassen leichter zu erstellen sind. Hier verwenden Sie Komposition. Die Vererbung bietet eine Möglichkeit, den Code wiederzuverwenden, indem eine Klasse mit minimaler Anstrengung erweitert wird. Aus diesem Grund ist die Vererbung ein wertvolles Instrument zum Aufbau von Beziehungen zwischen den Klassen. Im Allgemeinen ist es vorzuziehen, die Komposition zu verwenden, da es eine Möglichkeit bietet, ein Objekt zu verwenden, ohne die internen Details des Objekts zu beeinträchtigen, an dem die Komposition nützlich ist. Die Vererbung ist nicht ohne Probleme, aber wie die Vererbung wirft die Objektzusammensetzung ähnliche Leistungsbedenken hinsichtlich der Erstellung und Zerstörung von Objekten auf.