<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Trait_%28Programmierung%29</id>
	<title>Trait (Programmierung) - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Trait_%28Programmierung%29"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Trait_(Programmierung)&amp;action=history"/>
	<updated>2026-05-28T03:52:58Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Trait_(Programmierung)&amp;diff=2411328&amp;oldid=prev</id>
		<title>imported&gt;Heronils: Deutsche Übersetzung hinzugefügt</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Trait_(Programmierung)&amp;diff=2411328&amp;oldid=prev"/>
		<updated>2023-08-28T17:28:02Z</updated>

		<summary type="html">&lt;p&gt;Deutsche Übersetzung hinzugefügt&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Ein &amp;#039;&amp;#039;&amp;#039;Trait&amp;#039;&amp;#039;&amp;#039; (Deutsch: &amp;#039;&amp;#039;Eigenschaft&amp;#039;&amp;#039;, &amp;#039;&amp;#039;Charakteristik&amp;#039;&amp;#039;) ist ein Begriff aus der [[Objektorientierte Programmierung|objektorientierten Programmierung]] und beschreibt eine wiederverwendbare Sammlung von [[Methode (Programmierung)|Methoden]] und [[Attribut (Programmierung)|Attributen]], ähnlich einer [[Klasse_(Objektorientierung)|Klasse]]. Die Idee der Traits entspringt der [[Programmiersprache]] [[Self (Programmiersprache)|Self]] und findet mittlerweile in vielen modernen objektorientierten Sprachen Verwendung.&lt;br /&gt;
&lt;br /&gt;
Die Verwendung von Traits erlaubt das horizontale Wiederverwenden einer Methodensammlung. Bei dem Prinzip der [[Mehrfachvererbung]], das einige objektorientierte Programmiersprachen anbieten, ist das gleiche Vorgehen möglich; jedoch umgehen Traits (so wie auch [[Mixin|Mixins]]) das [[Diamond-Problem]], eine speziell durch die Mehrfachvererbung hervorgerufene Beziehungsproblematik unter verschiedenen Klassen.&lt;br /&gt;
&lt;br /&gt;
== Traits als besondere Variante der Mixins ==&lt;br /&gt;
Traits sind bei der Einbindung in andere Klassen viel flexibler als [[Mixin]]s:&amp;lt;ref&amp;gt;[http://www.kingcrunch.de/blog/2011/08/01/php5-4-traits-aka-horizontal-reuse/ kingcrunch.de: PHP5.4: Traits aka „Horizontal Reuse“]&amp;lt;/ref&amp;gt;&lt;br /&gt;
* einzelne Methoden eines Traits lassen sich ausschließen oder durch eine andere ersetzen&lt;br /&gt;
* mehrere Traits können in eine Klasse inkludiert werden, wobei sich Namenskonflikte (d.&amp;amp;nbsp;h. gleichbenannte Methoden) mit Hilfe von [[Aliasing|Aliasen]] lösen lassen.&lt;br /&gt;
* ein Trait kann Methoden benutzen, die nicht in ihm selbst definiert wurden, sondern in der inkludierenden Klasse.&lt;br /&gt;
* ein Trait bietet die Möglichkeit, auch Klassenattribute zu definieren.&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
=== PHP === &lt;br /&gt;
In der Programmiersprache [[PHP]] können Traits ab der Version 5.4 benutzt werden:&amp;lt;ref&amp;gt;[http://www.php.net/manual/en/language.oop5.traits.php Einführung in Traits auf php.net]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight highlight=&amp;quot;19&amp;quot; lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
trait Hello&lt;br /&gt;
{&lt;br /&gt;
    public function sayHello()&lt;br /&gt;
    {&lt;br /&gt;
        echo &amp;#039;Hello &amp;#039;;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
trait World&lt;br /&gt;
{&lt;br /&gt;
    public function sayWorld()&lt;br /&gt;
    {&lt;br /&gt;
        echo &amp;#039;World&amp;#039;;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
class HelloWorld&lt;br /&gt;
{&lt;br /&gt;
    use Hello, World;&lt;br /&gt;
&lt;br /&gt;
    public function sayExclamationMark()&lt;br /&gt;
    {&lt;br /&gt;
        echo &amp;#039;!&amp;#039;;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
$objHelloWorld = new HelloWorld;&lt;br /&gt;
&lt;br /&gt;
$objHelloWorld-&amp;gt;sayHello();&lt;br /&gt;
&lt;br /&gt;
$objHelloWorld-&amp;gt;sayWorld();&lt;br /&gt;
&lt;br /&gt;
$objHelloWorld-&amp;gt;sayExclamationMark();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das obige Beispiel gibt „Hello World!“ aus.&lt;br /&gt;
&lt;br /&gt;
== Programmiersprachen, die Traits unterstützen ==&lt;br /&gt;
* [[Curl (Programmiersprache)|Curl]]&lt;br /&gt;
* [[Fortress (Programmiersprache)|Fortress]]&amp;lt;ref&amp;gt;[http://www.cs.cmu.edu/~aldrich/FOOL/FOOLWOOD07/Allen-slides.pdf Traits in Fortress] (englisch, PDF-Datei; 2,5&amp;amp;nbsp;MB)&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [[Groovy|Groovy (ab Release 2.3)]]&lt;br /&gt;
* [[Haxe (Programmiersprache)|Haxe]] (mit der Zusatzbibliothek Composure möglich)&amp;lt;ref&amp;gt;[http://www.tbyrne.org/introducing-composure-for-haxe-with-dependency-injection Introducing Composure for Haxe (with Dependency Injection)]&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [[JavaScript#Delegationsprinzipien|JavaScript Delegation – Funktionsobjekte als Rollen (Traits und Mixins)]]&lt;br /&gt;
* [[Kotlin (Programmiersprache)|Kotlin]]&lt;br /&gt;
* [[Perl (Programmiersprache)|Perl 5]] (&amp;#039;&amp;#039;roles&amp;#039;&amp;#039;, durch das Modul Moose)&amp;lt;ref&amp;gt;[http://metacpan.org/module/Moose::Role Moose::Role Dokumentation]&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [[Pharo (Programmiersprache)|Pharo Smalltalk]]&lt;br /&gt;
* [[PHP]] ab Version 5.4&lt;br /&gt;
* [[Python (Programmiersprache)|Python]] (z.&amp;amp;nbsp;B. durch das Modul Traits&amp;lt;ref&amp;gt;[http://pypi.python.org/pypi/traits PyPI: traits 4.4.0]&amp;lt;/ref&amp;gt;)&lt;br /&gt;
* [[Raku (Programmiersprache)|Raku]] (auch dort &amp;#039;&amp;#039;roles&amp;#039;&amp;#039; genannt)&amp;lt;ref&amp;gt;{{Webarchiv|url=http://chris.prather.org/traits-vs-roles.md.html |wayback=20110921112151 |text=Perl 6: &amp;#039;&amp;#039;roles&amp;#039;&amp;#039; und &amp;#039;&amp;#039;traits&amp;#039;&amp;#039; |archiv-bot=2019-05-19 04:21:15 InternetArchiveBot }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [[Rust (Programmiersprache)|Rust]]&amp;lt;ref&amp;gt;[https://doc.rust-lang.org/reference/items/traits.html Rust Reference Manual: &amp;#039;&amp;#039;Traits&amp;#039;&amp;#039;]&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [[Scala (Programmiersprache)|Scala]]&lt;br /&gt;
* [[Self (Programmiersprache)|Self]]&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://scg.unibe.ch/research/traits Traits: Composable Units of Behavior] Auswahl von Artikeln über Traits (englisch)&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Programmierung]]&lt;br /&gt;
[[Kategorie:Objektorientierte Programmierung]]&lt;br /&gt;
[[Kategorie:PHP]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Heronils</name></author>
	</entry>
</feed>