# Unterschied: Polymorphie und Dynamisches Binden



## JonasJJ (1. Mrz 2018)

Hallo zusammen,

Ich habe die Aufgabe Polymorphie und Dynamisches Binden kurz zu erklären. 

Meine Erklärung zuPolymorphie: Man kann eine Varialble ein Objekt eines anderen Typens zuweisen, wenn dieses Objekt von dem Typ der Variable erbt.

Kann man die Erklärung so stehen lassen? 

Zu Dynamisches Binden: Da ich keine Ahnung hatte, was damit gemint war, habe ich kurz gegooglet und habe den Wikipedia Artikel durchgelesen. Es scheint mir als würde Dynamisches Binden das gleiche wie Polymorhie sein, stimmt das? 

Liebe Grüße,

Jonas


----------



## JuKu (1. Mrz 2018)

Polymorphie heißt so viel wie "Mehrfachvererbung".
https://www.java-tutorial.org/polymorphie.html
https://www.java-tutorial.org/polymorphie.html
Dynamisches Binden hingegen hat überhaupt nichts mit Vererbung zu tun, sondern eher was mit Erweiterung / Ersetzen von Komponenten.


----------



## JonasJJ (3. Mrz 2018)

Ist mit Dynamisches Binden Methodenüberladung gemeint?


----------



## Javinner (3. Mrz 2018)

JonasJJ hat gesagt.:


> Ist mit Dynamisches Binden Methodenüberladung gemeint?


Nein.
http://openbook.rheinwerk-verlag.de/javainsel9/javainsel_05_011.htm


----------



## JuKu (4. Mrz 2018)

Javinner hat gesagt.:


> Nein.
> http://openbook.rheinwerk-verlag.de/javainsel9/javainsel_05_011.htm



Ich hatte unter dynamischen Binden ehrlich gesagt gerade was ganz anderes gemeint.
Eher so in Richtung Dynamic Link Libraries (DLL) und JARs, aber wenn die Frage darauf bezogen war dieser Link beschreibt, dann gehört dynamisches Binden zur Polymorphie und meint nichts anderes, als dass immer die "passendste" Methode ausgewählt wird. Also immer erst die Methode mit dem genauen Typ, ehe eine Methode mit einer Oberklasse verwendet wird.


----------



## mariomueller (22. Mrz 2018)

So, jetzt geht es ans Eingemachte. Dynamisches Binden!!!

Stell Dir vor, Du muss ein Programm schreiben, das Daten entgegennimmt und speichert.
Also eine typische Webanwendung. Nehmen wir einen Webshop beispielweise.

Den Webshop willst Du verkaufen, Du weiß aber nicht, wie die Käufer Ihre Daten speichern
- Haben diese eine klassische Datenbank
- eine InMemoryDatenbank
- oder speichern Sie evtl sogar auf Festplatte.

Was Du also machst, ist ein Interface "SpeicherInterface" erstellen.
Das Interface wird von 3 Klassen verwendet:
- SpeicherDB
- SpeicherIM
- SpeicherFP

Jetzt kann man zur Laufzeit  - also kundenindividuell - festlegen, welche der drei Klassen Verwendung finden sollte. Hierzu legt man beim Kunden eine sogenannte property-Datei an (Das ist eine stinknormale Textdatei mit Schlüssel-Wert Paaren). In der Property Datei trägt man ein, welche Klasse bei jedem Kunden verwendet werden soll. Also: Hat der Kunde eine normale DB, dann wird in der Propertydatei  SpeicherDB eingetragen.

Zur Laufzeit fragt Dein Coding, was in der Propertydatei steht und instanziert dann dynamisch die Speicherklasse; beispielsweise mit einer if-Abfrage. (Es gibt noch die Refelction-API; aber das würde Dich zu sehr verwirren)
Grüße
Mario


----------



## mrBrown (22. Mrz 2018)

mariomueller hat gesagt.:


> aber das würde Dich zu sehr verwirren


Ich finde ja deinen gesamten Beitrag in Bezug auf dynamisches Binden verwirrend ,


----------



## mariomueller (23. Mrz 2018)

OK, das hat mich bei meiner Ehre gepackt 
Hier wird 




das Strategy Pattern erklärt (nicht erschrecken).

An der 8:50 Minute findet genau das dynamische Binden statt:
Man hat drei Klassen, die alle das Interface Collections implementieren.
Zur Laufzeit wird aber dann dynamisch festgelegt, welche konkrete Klasse verwendet werden soll.

Ich kann nur sehr das Buch  "Entwurfsmuster von Kopf bis Fuß" empfehlen. Wenn man das durchgeackert hat, ist man in der objektorientierten Welt angekommen.

Ich hoffe, das hilft 

Grüße
Mio


----------



## JuKu (23. Mrz 2018)

Ich glaube der Begriff "dynamisches Binden" hat in der Software Welt einfach so viele (mehrere) Bedeutungen, dass das ganze Thema verwirrend ist.


----------

