https://de.wikipedia.org/w/index.php?action=history&feed=atom&title=Polymorphie_%28Programmierung%29 Polymorphie (Programmierung) - Versionsgeschichte 2025-05-29T13:22:42Z Versionsgeschichte dieser Seite in Wikipedia MediaWiki 1.45.0-wmf.2 https://de.wikipedia.org/w/index.php?title=Polymorphie_(Programmierung)&diff=248232695&oldid=prev Trustable: Änderung 248232265 von Dlanold rückgängig gemacht; Kein BKH, da BKL-Typ 1 mit Klammerlemma. 2024-09-01T17:46:08Z <p>Änderung <a href="/wiki/Spezial:Diff/248232265" title="Spezial:Diff/248232265">248232265</a> von <a href="/wiki/Spezial:Beitr%C3%A4ge/Dlanold" title="Spezial:Beiträge/Dlanold">Dlanold</a> rückgängig gemacht; Kein BKH, da BKL-Typ 1 mit Klammerlemma.</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="de"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Nächstältere Version</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Version vom 1. September 2024, 19:46 Uhr</td> </tr><tr> <td colspan="2" class="diff-lineno">Zeile 1:</td> <td colspan="2" class="diff-lineno">Zeile 1:</td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>{{Dieser Artikel|1=behandelt ''Polymorphie'' als einen Fachausdruck der Informatik. Für andere Bedeutungen des Wortes siehe [[Polymorphie]].}}</div></td> <td colspan="2" class="diff-empty diff-side-added"></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>'''Polymorphie''' oder '''Polymorphismus''' ({{elS}} für ''Vielgestaltigkeit'') ist ein Konzept in der [[Objektorientierte Programmierung|objektorientierten Programmierung]], das ermöglicht, dass ein [[Bezeichner]] abhängig von seiner Verwendung [[Objekt (Programmierung)|Objekte]] unterschiedlichen [[Datentyp|Datentyps]] annimmt. In älteren [[Typisierung (Informatik)|typisierten]] [[Programmiersprache|Programmiersprachen]] wird dagegen jedem Namen und jedem Wert im [[Quelltext]] eines [[Computerprogramm|Programms]] höchstens ein Typ zugeordnet. Dies bezeichnet man als ''Monomorphie''.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>'''Polymorphie''' oder '''Polymorphismus''' ({{elS}} für ''Vielgestaltigkeit'') ist ein Konzept in der [[Objektorientierte Programmierung|objektorientierten Programmierung]], das ermöglicht, dass ein [[Bezeichner]] abhängig von seiner Verwendung [[Objekt (Programmierung)|Objekte]] unterschiedlichen [[Datentyp|Datentyps]] annimmt. In älteren [[Typisierung (Informatik)|typisierten]] [[Programmiersprache|Programmiersprachen]] wird dagegen jedem Namen und jedem Wert im [[Quelltext]] eines [[Computerprogramm|Programms]] höchstens ein Typ zugeordnet. Dies bezeichnet man als ''Monomorphie''.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> </table> Trustable https://de.wikipedia.org/w/index.php?title=Polymorphie_(Programmierung)&diff=248232265&oldid=prev Dlanold: Hinweis zur Begriffserklärungsseite eingefügt 2024-09-01T17:25:56Z <p>Hinweis zur Begriffserklärungsseite eingefügt</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="de"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Nächstältere Version</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Version vom 1. September 2024, 19:25 Uhr</td> </tr><tr> <td colspan="2" class="diff-lineno">Zeile 1:</td> <td colspan="2" class="diff-lineno">Zeile 1:</td> </tr> <tr> <td colspan="2" class="diff-empty diff-side-deleted"></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>{{Dieser Artikel|1=behandelt ''Polymorphie'' als einen Fachausdruck der Informatik. Für andere Bedeutungen des Wortes siehe [[Polymorphie]].}}</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>'''Polymorphie''' oder '''Polymorphismus''' ({{elS}} für ''Vielgestaltigkeit'') ist ein Konzept in der [[Objektorientierte Programmierung|objektorientierten Programmierung]], das ermöglicht, dass ein [[Bezeichner]] abhängig von seiner Verwendung [[Objekt (Programmierung)|Objekte]] unterschiedlichen [[Datentyp|Datentyps]] annimmt. In älteren [[Typisierung (Informatik)|typisierten]] [[Programmiersprache|Programmiersprachen]] wird dagegen jedem Namen und jedem Wert im [[Quelltext]] eines [[Computerprogramm|Programms]] höchstens ein Typ zugeordnet. Dies bezeichnet man als ''Monomorphie''.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>'''Polymorphie''' oder '''Polymorphismus''' ({{elS}} für ''Vielgestaltigkeit'') ist ein Konzept in der [[Objektorientierte Programmierung|objektorientierten Programmierung]], das ermöglicht, dass ein [[Bezeichner]] abhängig von seiner Verwendung [[Objekt (Programmierung)|Objekte]] unterschiedlichen [[Datentyp|Datentyps]] annimmt. In älteren [[Typisierung (Informatik)|typisierten]] [[Programmiersprache|Programmiersprachen]] wird dagegen jedem Namen und jedem Wert im [[Quelltext]] eines [[Computerprogramm|Programms]] höchstens ein Typ zugeordnet. Dies bezeichnet man als ''Monomorphie''.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> </table> Dlanold https://de.wikipedia.org/w/index.php?title=Polymorphie_(Programmierung)&diff=247064639&oldid=prev JonasKonrad: Präzisierung 2024-07-24T22:05:54Z <p>Präzisierung</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="de"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Nächstältere Version</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Version vom 25. Juli 2024, 00:05 Uhr</td> </tr><tr> <td colspan="2" class="diff-lineno">Zeile 57:</td> <td colspan="2" class="diff-lineno">Zeile 57:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=== Überladen und Coercion ===</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=== Überladen und Coercion ===</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>[[Funktion (Programmierung)|Funktionen]] sind [[überladen]], wenn unterschiedliches Verhalten mit demselben Namen verbunden ist. Beispielsweise ist der [[Operator (Mathematik)|Operator]] + in vielen [[Programmiersprache|Programmiersprachen]] von vornherein überladen. So können mit ihm sowohl ganze Zahlen als auch Gleitkommazahlen addiert werden. Oft wird er auch zur [[Konkatenation (Wort)|Stringkonkatenierung]] verwendet:</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>[[Funktion (Programmierung)|Funktionen]] sind [[überladen]], wenn unterschiedliches Verhalten mit demselben Namen verbunden ist.<ins style="font-weight: bold; text-decoration: none;"> Dies gilt analog für Bezeichner von Operatoren:</ins> Beispielsweise ist der [[Operator (Mathematik)|Operator]] + in vielen [[Programmiersprache|Programmiersprachen]] von vornherein überladen. So können mit ihm sowohl ganze Zahlen als auch Gleitkommazahlen addiert werden. Oft wird er auch zur [[Konkatenation (Wort)|Stringkonkatenierung]] verwendet:</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>&lt;syntaxhighlight lang="text"&gt;</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>&lt;syntaxhighlight lang="text"&gt;</div></td> </tr> </table> JonasKonrad https://de.wikipedia.org/w/index.php?title=Polymorphie_(Programmierung)&diff=240988121&oldid=prev 2003:E4:D723:63E3:909B:4592:BC53:FA0D: /* Weitere Unterteilungen */ 2024-01-08T21:11:25Z <p><span class="autocomment">Weitere Unterteilungen</span></p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="de"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Nächstältere Version</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Version vom 8. Januar 2024, 23:11 Uhr</td> </tr><tr> <td colspan="2" class="diff-lineno">Zeile 47:</td> <td colspan="2" class="diff-lineno">Zeile 47:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>** Überladung</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>** Überladung</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Manchmal wird Ad-hoc-Polymorphie gleichgesetzt mit [[Überladen]]. Das ist auf [[Christopher Strachey]] zurückzuführen,&lt;ref&gt;''Fundamental concepts in programming languages.'' Lecture notes for International Summer School in Computer Programming, Copenhagen, August 1967.&lt;/ref&gt; der als Erster Polymorphie<del style="font-weight: bold; text-decoration: none;"> unterteilte und zwar</del> in parametrische und Ad-hoc-Polymorphie.</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Manchmal wird Ad-hoc-Polymorphie gleichgesetzt mit [[Überladen]]. Das ist auf [[Christopher Strachey]] zurückzuführen,&lt;ref&gt;''Fundamental concepts in programming languages.'' Lecture notes for International Summer School in Computer Programming, Copenhagen, August 1967.&lt;/ref&gt; der als Erster Polymorphie in parametrische und Ad-hoc-Polymorphie<ins style="font-weight: bold; text-decoration: none;"> unterteilte</ins>.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Luca Cardelli und Peter Wegner erweiterten Stracheys Konzept um die Inklusionspolymorphie,&lt;ref&gt;''On Understanding Types, Data Abstraction, and Polymorphism.'' In: ''ACM Computing Surveys.'' Band 17, Nr. 4, 1985, S. 471–522.&lt;/ref&gt; um Subtypen und Vererbung zu modellieren. Die obige Auflistung spiegelt also Stracheys Einteilung wider, erweitert um die Inklusionspolymorphie von Cardelli und Wegner.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Luca Cardelli und Peter Wegner erweiterten Stracheys Konzept um die Inklusionspolymorphie,&lt;ref&gt;''On Understanding Types, Data Abstraction, and Polymorphism.'' In: ''ACM Computing Surveys.'' Band 17, Nr. 4, 1985, S. 471–522.&lt;/ref&gt; um Subtypen und Vererbung zu modellieren. Die obige Auflistung spiegelt also Stracheys Einteilung wider, erweitert um die Inklusionspolymorphie von Cardelli und Wegner.</div></td> </tr> </table> 2003:E4:D723:63E3:909B:4592:BC53:FA0D https://de.wikipedia.org/w/index.php?title=Polymorphie_(Programmierung)&diff=239613235&oldid=prev 77.12.92.47: /* Beschränkter parametrischer Polymorphismus */ C# 2023-11-30T15:43:05Z <p><span class="autocomment">Beschränkter parametrischer Polymorphismus: </span> C#</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="de"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Nächstältere Version</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Version vom 30. November 2023, 17:43 Uhr</td> </tr><tr> <td colspan="2" class="diff-lineno">Zeile 96:</td> <td colspan="2" class="diff-lineno">Zeile 96:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* beschränkten parametrischen Polymorphismus.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* beschränkten parametrischen Polymorphismus.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Letzterer behebt die Probleme der Typsicherheit, die innerhalb von Typdefinitionen dadurch entstehen, dass beim Erstellen der Typdefinition auf Grund der Parametrisierung noch nicht klar ist, Objekte welchen Typs eigentlich Gegenstand der Typ-Operationen (des Protokolls, der Methoden, die Terminologie variiert hier je nach Programmiersprache) sind. Wird durch einen Typ beispielsweise eine numerische Operation definiert, die auf den Elementen des Typs ausführbar sein soll, seine Typvariable dann aber mit einem nichtnumerischen Typen belegt, so würde es zu Laufzeitfehlern kommen. In der Regel verwendet man daher beschränkte parametrische Typen, die für ihre Typvariablen eine Beschränkung auf bestimmte Typen angeben. In Strongtalk wird hierzu bspw. die Typvariable mittels ''T &lt; Supertyp'' angegeben, wobei Supertyp die Einschränkung der Typen angibt, die in die Typvariable T eingesetzt werden können. Java ermöglicht die Angabe solcher Einschränkungen mittels der Schreibweise ''&lt;T extends Supertyp&gt;''.</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Letzterer behebt die Probleme der Typsicherheit, die innerhalb von Typdefinitionen dadurch entstehen, dass beim Erstellen der Typdefinition auf Grund der Parametrisierung noch nicht klar ist, Objekte welchen Typs eigentlich Gegenstand der Typ-Operationen (des Protokolls, der Methoden, die Terminologie variiert hier je nach Programmiersprache) sind. Wird durch einen Typ beispielsweise eine numerische Operation definiert, die auf den Elementen des Typs ausführbar sein soll, seine Typvariable dann aber mit einem nichtnumerischen Typen belegt, so würde es zu Laufzeitfehlern kommen. In der Regel verwendet man daher beschränkte parametrische Typen, die für ihre Typvariablen eine Beschränkung auf bestimmte Typen angeben. In Strongtalk wird hierzu bspw. die Typvariable mittels ''T &lt; Supertyp'' angegeben, wobei Supertyp die Einschränkung der Typen angibt, die in die Typvariable T eingesetzt werden können. Java ermöglicht die Angabe solcher Einschränkungen mittels der Schreibweise ''&lt;T extends Supertyp&gt;''<ins style="font-weight: bold; text-decoration: none;">. In C# gibt es verschiedene Arten von Einschränkungen ("Constraints"), die man für einen Typparameter verlangen kann: Abgeleitet von einer bestimmten Basisklasse, Vorhandensein eines bestimmten Interfaces oder eines parameterlosen Konstruktors sowie weitere. Kombinationen mehrerer Constraints sind möglich, die dann alle erfüllt sein müssen</ins>.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=== Inklusionspolymorphie ===</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=== Inklusionspolymorphie ===</div></td> </tr> </table> 77.12.92.47 https://de.wikipedia.org/w/index.php?title=Polymorphie_(Programmierung)&diff=233015712&oldid=prev Sebastian.Dietrich: Eine derart sinnändernde Änderung in der Einleitung bitte zuerst auf der Disk bespechen. C ist z.B. typisiert, kennt aber keinen Polymorphismus 2023-04-20T18:33:26Z <p>Eine derart sinnändernde Änderung in der Einleitung bitte zuerst auf der Disk bespechen. C ist z.B. typisiert, kennt aber keinen Polymorphismus</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="de"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Nächstältere Version</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Version vom 20. April 2023, 20:33 Uhr</td> </tr><tr> <td colspan="2" class="diff-lineno">Zeile 1:</td> <td colspan="2" class="diff-lineno">Zeile 1:</td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>'''Polymorphie''' oder '''Polymorphismus''' ({{elS}} für ''Vielgestaltigkeit'') ist ein Konzept in [[<del style="font-weight: bold; text-decoration: none;">Typisierung</del> <del style="font-weight: bold; text-decoration: none;">(Informatik)</del>|<del style="font-weight: bold; text-decoration: none;">typisierten]]</del> <del style="font-weight: bold; text-decoration: none;">[[Programmiersprache|Programmiersprachen</del>]], das ermöglicht, dass ein [[Bezeichner]] abhängig von seiner Verwendung <del style="font-weight: bold; text-decoration: none;">unterschiedliche</del> [[Datentyp|<del style="font-weight: bold; text-decoration: none;">Typen</del>]] annimmt. In älteren [[Typisierung (Informatik)|typisierten]] [[Programmiersprache|Programmiersprachen]] wird dagegen jedem Namen und jedem Wert im [[Quelltext]] eines [[Computerprogramm|Programms]] höchstens ein Typ zugeordnet. Dies bezeichnet man als ''Monomorphie''.</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>'''Polymorphie''' oder '''Polymorphismus''' ({{elS}} für ''Vielgestaltigkeit'') ist ein Konzept in<ins style="font-weight: bold; text-decoration: none;"> der</ins> [[<ins style="font-weight: bold; text-decoration: none;">Objektorientierte</ins> <ins style="font-weight: bold; text-decoration: none;">Programmierung</ins>|<ins style="font-weight: bold; text-decoration: none;">objektorientierten</ins> <ins style="font-weight: bold; text-decoration: none;">Programmierung</ins>]], das ermöglicht, dass ein [[Bezeichner]] abhängig von seiner Verwendung <ins style="font-weight: bold; text-decoration: none;">[[Objekt (Programmierung)|Objekte]] unterschiedlichen</ins> [[Datentyp|<ins style="font-weight: bold; text-decoration: none;">Datentyps</ins>]] annimmt. In älteren [[Typisierung (Informatik)|typisierten]] [[Programmiersprache|Programmiersprachen]] wird dagegen jedem Namen und jedem Wert im [[Quelltext]] eines [[Computerprogramm|Programms]] höchstens ein Typ zugeordnet. Dies bezeichnet man als ''Monomorphie''.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Arten der Polymorphie ==</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Arten der Polymorphie ==</div></td> </tr> </table> Sebastian.Dietrich https://de.wikipedia.org/w/index.php?title=Polymorphie_(Programmierung)&diff=233014203&oldid=prev Ikosit: Polymorphie ist kein Alleinstellungsmerkmal von objektorientierter Programmierung. Bspw. sind Haskell und Rust beide nicht OO, besitzen allerdings trotzdem Polymorphismus. Zudem besitzen viele Programmiersprachen nicht objekt-orientierten Polymorphismus. Z.B. Templates in C++, Generics in Java, …. 2023-04-20T17:27:59Z <p>Polymorphie ist kein Alleinstellungsmerkmal von objektorientierter Programmierung. Bspw. sind Haskell und Rust beide nicht OO, besitzen allerdings trotzdem Polymorphismus. Zudem besitzen viele Programmiersprachen nicht objekt-orientierten Polymorphismus. Z.B. Templates in C++, Generics in Java, ….</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="de"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Nächstältere Version</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Version vom 20. April 2023, 19:27 Uhr</td> </tr><tr> <td colspan="2" class="diff-lineno">Zeile 1:</td> <td colspan="2" class="diff-lineno">Zeile 1:</td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>'''Polymorphie''' oder '''Polymorphismus''' ({{elS}} für ''Vielgestaltigkeit'') ist ein Konzept in<del style="font-weight: bold; text-decoration: none;"> der</del> [[<del style="font-weight: bold; text-decoration: none;">Objektorientierte</del> <del style="font-weight: bold; text-decoration: none;">Programmierung</del>|<del style="font-weight: bold; text-decoration: none;">objektorientierten</del> <del style="font-weight: bold; text-decoration: none;">Programmierung</del>]], das ermöglicht, dass ein [[Bezeichner]] abhängig von seiner Verwendung <del style="font-weight: bold; text-decoration: none;">[[Objekt (Programmierung)|Objekte]] unterschiedlichen</del> [[Datentyp|<del style="font-weight: bold; text-decoration: none;">Datentyps</del>]] annimmt. In älteren [[Typisierung (Informatik)|typisierten]] [[Programmiersprache|Programmiersprachen]] wird dagegen jedem Namen und jedem Wert im [[Quelltext]] eines [[Computerprogramm|Programms]] höchstens ein Typ zugeordnet. Dies bezeichnet man als ''Monomorphie''.</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>'''Polymorphie''' oder '''Polymorphismus''' ({{elS}} für ''Vielgestaltigkeit'') ist ein Konzept in [[<ins style="font-weight: bold; text-decoration: none;">Typisierung</ins> <ins style="font-weight: bold; text-decoration: none;">(Informatik)</ins>|<ins style="font-weight: bold; text-decoration: none;">typisierten]]</ins> <ins style="font-weight: bold; text-decoration: none;">[[Programmiersprache|Programmiersprachen</ins>]], das ermöglicht, dass ein [[Bezeichner]] abhängig von seiner Verwendung <ins style="font-weight: bold; text-decoration: none;">unterschiedliche</ins> [[Datentyp|<ins style="font-weight: bold; text-decoration: none;">Typen</ins>]] annimmt. In älteren [[Typisierung (Informatik)|typisierten]] [[Programmiersprache|Programmiersprachen]] wird dagegen jedem Namen und jedem Wert im [[Quelltext]] eines [[Computerprogramm|Programms]] höchstens ein Typ zugeordnet. Dies bezeichnet man als ''Monomorphie''.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Arten der Polymorphie ==</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Arten der Polymorphie ==</div></td> </tr> </table> Ikosit https://de.wikipedia.org/w/index.php?title=Polymorphie_(Programmierung)&diff=230510098&oldid=prev 2001:470:7512:0:2C96:2D62:F5D8:3F27: Link zu einer Wiki Seite geändert, die meiner Meinung nach hier besser passt. 2023-02-03T19:20:02Z <p>Link zu einer Wiki Seite geändert, die meiner Meinung nach hier besser passt.</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="de"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Nächstältere Version</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Version vom 3. Februar 2023, 21:20 Uhr</td> </tr><tr> <td colspan="2" class="diff-lineno">Zeile 111:</td> <td colspan="2" class="diff-lineno">Zeile 111:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Angenommen, eine Anwendung soll statistische Daten sowohl grafisch als auch schriftlich in Tabellenform darstellen. Außerdem soll es möglich sein, die Darstellungsmethoden über [[Plug-in]]s zu erweitern. Dann erlaubt das Konzept der Polymorphie über das ''VisualizationPlugin'' Interface jede beliebige Implementierung (hier ''GraphDisplayPlugin'', ''TextDisplayPlugin'', ''HistogramDisplayPlugin'') aufzurufen.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Angenommen, eine Anwendung soll statistische Daten sowohl grafisch als auch schriftlich in Tabellenform darstellen. Außerdem soll es möglich sein, die Darstellungsmethoden über [[Plug-in]]s zu erweitern. Dann erlaubt das Konzept der Polymorphie über das ''VisualizationPlugin'' Interface jede beliebige Implementierung (hier ''GraphDisplayPlugin'', ''TextDisplayPlugin'', ''HistogramDisplayPlugin'') aufzurufen.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Die Anwendung selbst muss bei neuen [[Plug-in|Plug-ins]] nicht geändert werden und kann diese einfach über das [[Interface]] mit dem Aufruf von ''setData'' und ''display'' starten.</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Die Anwendung selbst muss bei neuen [[Plug-in|Plug-ins]] nicht geändert werden und kann diese einfach über das [[<ins style="font-weight: bold; text-decoration: none;">Schnittstelle (Objektorientierung)|</ins>Interface]] mit dem Aufruf von ''setData'' und ''display'' starten.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>&lt;syntaxhighlight lang="java"&gt;</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>&lt;syntaxhighlight lang="java"&gt;</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>interface VisualizationPlugin {</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>interface VisualizationPlugin {</div></td> </tr> </table> 2001:470:7512:0:2C96:2D62:F5D8:3F27 https://de.wikipedia.org/w/index.php?title=Polymorphie_(Programmierung)&diff=206227142&oldid=prev 87.254.97.74: /* Überladen und Coercion */ Beispiele und Erläuterungen 2020-12-04T16:54:57Z <p><span class="autocomment">Überladen und Coercion: </span> Beispiele und Erläuterungen</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="de"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Nächstältere Version</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Version vom 4. Dezember 2020, 18:54 Uhr</td> </tr><tr> <td colspan="2" class="diff-lineno">Zeile 57:</td> <td colspan="2" class="diff-lineno">Zeile 57:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=== Überladen und Coercion ===</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=== Überladen und Coercion ===</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>[[Funktion (Programmierung)|Funktionen]] sind [[überladen]], wenn unterschiedliches Verhalten mit demselben Namen verbunden ist. Beispielsweise ist der [[Operator (Mathematik)|Operator]] + in vielen [[Programmiersprache|Programmiersprachen]] von vornherein überladen. So können mit ihm ganze Zahlen <del style="font-weight: bold; text-decoration: none;">und</del> Gleitkommazahlen addiert werden. Oft wird er auch zur [[Konkatenation (Wort)|Stringkonkatenierung]] verwendet:</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>[[Funktion (Programmierung)|Funktionen]] sind [[überladen]], wenn unterschiedliches Verhalten mit demselben Namen verbunden ist. Beispielsweise ist der [[Operator (Mathematik)|Operator]] + in vielen [[Programmiersprache|Programmiersprachen]] von vornherein überladen. So können mit ihm<ins style="font-weight: bold; text-decoration: none;"> sowohl</ins> ganze Zahlen <ins style="font-weight: bold; text-decoration: none;">als auch</ins> Gleitkommazahlen addiert werden. Oft wird er auch zur [[Konkatenation (Wort)|Stringkonkatenierung]] verwendet:</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>&lt;syntaxhighlight lang="text"&gt;</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>&lt;syntaxhighlight lang="text"&gt;</div></td> </tr> <tr> <td colspan="2" class="diff-lineno">Zeile 65:</td> <td colspan="2" class="diff-lineno">Zeile 65:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>&lt;/syntaxhighlight&gt;</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>&lt;/syntaxhighlight&gt;</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Einige [[Programmiersprache|Programmiersprachen]] unterscheiden dabei, welche Namen [[überladen]] werden dürfen und welche nicht. In [[Java (Programmiersprache)|Java]] ist Methodenüberladung erlaubt, Operatorüberladung außer <del style="font-weight: bold; text-decoration: none;">der</del> schon eingebauten <del style="font-weight: bold; text-decoration: none;">Überladung,</del> wie des +-Operators aber nicht. [[C++]] und manche andere Sprachen erlauben generell beides.</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Einige [[Programmiersprache|Programmiersprachen]] unterscheiden dabei, welche Namen [[überladen]] werden dürfen und welche nicht. In [[Java (Programmiersprache)|Java]] ist Methodenüberladung erlaubt, Operatorüberladung außer <ins style="font-weight: bold; text-decoration: none;">den</ins> schon eingebauten <ins style="font-weight: bold; text-decoration: none;">Überladungen</ins> wie<ins style="font-weight: bold; text-decoration: none;"> der</ins> des +-Operators aber nicht<ins style="font-weight: bold; text-decoration: none;">. Auch in [[C-Sharp|C#]] sind nicht alle Operatoren überladbar</ins>. [[C++]] und manche andere Sprachen erlauben generell beides.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Coercion ist eine Art implizite [[Typumwandlung]], um zum Beispiel Argumente einer Funktion in die<del style="font-weight: bold; text-decoration: none;"> von der Funktion</del> erwarteten Typen umzuwandeln. Coercion ist mit dem Überladen eng verknüpft und Unterschiede sind für den Programmierer nicht unbedingt gleich ersichtlich.</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Coercion ist eine Art implizite [[Typumwandlung]]<ins style="font-weight: bold; text-decoration: none;">, sozusagen das Anwenden einer unsichtbaren, automatisch eingefügten Funktion</ins>, um zum Beispiel Argumente<ins style="font-weight: bold; text-decoration: none;"> eines Unterprogramms oder</ins> einer Funktion in die erwarteten Typen umzuwandeln. Coercion ist mit dem Überladen eng verknüpft<ins style="font-weight: bold; text-decoration: none;">,</ins> und<ins style="font-weight: bold; text-decoration: none;"> die</ins> Unterschiede sind für den Programmierer nicht unbedingt gleich ersichtlich.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Beispiel:</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Beispiel:</div></td> </tr> <tr> <td colspan="2" class="diff-lineno">Zeile 78:</td> <td colspan="2" class="diff-lineno">Zeile 78:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>In einer Sprache könnte der Additionsoperator lediglich für zwei reelle Zahlen definiert sein. Coercion würde dann dafür sorgen, dass [[Ganze Zahl|ganze Zahlen]] zuerst in [[Gleitkommazahl|Gleitkommazahlen]] umgewandelt werden. In (4) und (5) würde dann Coercion zum Einsatz kommen. Es ist aber auch denkbar, dass der Additionsoperator für mehrere Varianten definiert ist.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>In einer Sprache könnte der Additionsoperator lediglich für zwei reelle Zahlen definiert sein. Coercion würde dann dafür sorgen, dass [[Ganze Zahl|ganze Zahlen]] zuerst in [[Gleitkommazahl|Gleitkommazahlen]] umgewandelt werden. In (4) und (5) würde dann Coercion zum Einsatz kommen. Es ist aber auch denkbar, dass der Additionsoperator für mehrere Varianten definiert ist.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Bei der Überladung handelt es sich offenbar nicht um eine echte Form von Polymorphie, da man sich vorstellen könnte, der [[Compiler]] werde die Uneindeutigkeit durch die mehrfache Benutzung eines Symboles zur Kompilationszeit wieder auflösen. Wir erlauben also nur einem Symbol, verschiedene Werte zu denotieren, die allerdings unterschiedliche und möglicherweise zueinander inkompatible Typen haben.</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Bei der Überladung handelt es sich offenbar nicht um eine echte Form von Polymorphie, da man sich vorstellen könnte, der [[Compiler]] werde die Uneindeutigkeit durch die mehrfache Benutzung eines Symboles zur Kompilationszeit wieder auflösen. Wir erlauben also nur einem Symbol, verschiedene<ins style="font-weight: bold; text-decoration: none;"> (funktionsartige)</ins> Werte zu denotieren, die allerdings unterschiedliche und möglicherweise zueinander inkompatible Typen haben.</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Mit Coercions verhält es sich ähnlich. Man könnte meinen, ein [[Operator (Mathematik)|Operator]] akzeptiere Operanden verschiedenen Typs (wie das + oben), jedoch müssen die Typen erst für den Operator gewandelt werden. Der Ausgabetyp des Operators hängt also nicht mehr mit den Typen der Operanden zusammen (oder nur partiell), daher kann keine echte Polymorphie vorliegen.</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Mit Coercions verhält es sich ähnlich. Man könnte meinen, ein [[Operator (Mathematik)|Operator]] akzeptiere Operanden verschiedenen Typs (wie das + oben), jedoch müssen die Typen erst für den Operator gewandelt werden. Der Ausgabetyp des Operators hängt also nicht mehr mit den Typen der Operanden zusammen (oder nur partiell), daher kann keine echte Polymorphie vorliegen.</div></td> </tr> </table> 87.254.97.74 https://de.wikipedia.org/w/index.php?title=Polymorphie_(Programmierung)&diff=205947163&oldid=prev 87.254.97.74: /* Überladen und Coercion */ Verhalten singular. 2020-11-26T09:00:23Z <p><span class="autocomment">Überladen und Coercion: </span> Verhalten singular.</p> <table style="background-color: #fff; color: #202122;" data-mw="interface"> <col class="diff-marker" /> <col class="diff-content" /> <col class="diff-marker" /> <col class="diff-content" /> <tr class="diff-title" lang="de"> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Nächstältere Version</td> <td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Version vom 26. November 2020, 11:00 Uhr</td> </tr><tr> <td colspan="2" class="diff-lineno">Zeile 57:</td> <td colspan="2" class="diff-lineno">Zeile 57:</td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=== Überladen und Coercion ===</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>=== Überladen und Coercion ===</div></td> </tr> <tr> <td class="diff-marker" data-marker="−"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>[[Funktion (Programmierung)|Funktionen]] sind [[überladen]], wenn unterschiedliches Verhalten mit demselben Namen verbunden <del style="font-weight: bold; text-decoration: none;">sind</del>. Beispielsweise ist der [[Operator (Mathematik)|Operator]] + in vielen [[Programmiersprache|Programmiersprachen]] von vornherein überladen. So können mit ihm ganze Zahlen und Gleitkommazahlen addiert werden. Oft wird er auch zur [[Konkatenation (Wort)|Stringkonkatenierung]] verwendet:</div></td> <td class="diff-marker" data-marker="+"></td> <td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>[[Funktion (Programmierung)|Funktionen]] sind [[überladen]], wenn unterschiedliches Verhalten mit demselben Namen verbunden <ins style="font-weight: bold; text-decoration: none;">ist</ins>. Beispielsweise ist der [[Operator (Mathematik)|Operator]] + in vielen [[Programmiersprache|Programmiersprachen]] von vornherein überladen. So können mit ihm ganze Zahlen und Gleitkommazahlen addiert werden. Oft wird er auch zur [[Konkatenation (Wort)|Stringkonkatenierung]] verwendet:</div></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br /></td> </tr> <tr> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>&lt;syntaxhighlight lang="text"&gt;</div></td> <td class="diff-marker"></td> <td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>&lt;syntaxhighlight lang="text"&gt;</div></td> </tr> </table> 87.254.97.74