Trait (type abstrait)

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher
Page d'aide sur l'homonymie Pour les articles homonymes, voir Trait.

Un trait est un type abstrait, « simple modèle conceptuel pour structurer des programmes orientés objets ». Il contient des méthodes concrètes, et permet de les ajouter à une classe pour étendre ses fonctionnalités. Quand un langage de programmation supporte les traits, il permet la résolution explicite des conflits qui apparaissent quand une classe utilise deux traits qui ont des méthodes qui portent le même nom.

Les traits sont similaires aux mixins, mais peuvent inclure des définitions pour des méthodes de classe.

Implémentations[modifier | modifier le code]

Scala inclut cette fonctionnalité, de même que PHP depuis sa version 5.4[1]. Et les « mixins de module » de Ruby sont comparables aux traits dans une certaine mesure. De même le rôle en Perl 6 est une fonctionnalité inspirée du concept de trait.

Les traits sont proposés pour inclusion dans Smalltalk.

Exemple[modifier | modifier le code]

L'exemple d'utilisation suivant en PHP montre une meilleure granularité des traits en comparaison d'un héritage multiple :

trait Hello {
    public function sayHello() {
        echo 'Hello ';
    }
}
 
trait World {
    public function sayWorld() {
        echo ' World';
    }
}
 
class MyHelloWorld {
    use Hello, World;
    public function sayExclamationMark() {
        echo '!';
    }
}
 
$o = new MyHelloWorld();
$o->sayHello();
$o->sayWorld();
$o->sayExclamationMark();

Notes et références[modifier | modifier le code]

  1. « Traits » : « As of PHP 5.4.0, PHP implements a method of code reuse called Traits. »

Voir aussi[modifier | modifier le code]

Articles connexes[modifier | modifier le code]

Liens externes[modifier | modifier le code]