Article Scala (langage pour la JVM) : Les Traits
Comme alternative au design pattern décorateur par Sylvain Leroux
Le 2010-08-16 10:46:58, par sleroux, Membre habitué
Bonjour,
Je viens de mettre la dernière main à l'article Traits Scala et décorateurs.
Mon idée était de présenter la notion de trait en montrant sur un cas d'utilisation comment cet outil peut offrir une alternative au "design pattern" décorateur que l'en rencontre fréquemment en Java et en POO en général. Vous verrez au passage que si les deux concepts sont proches, il n'en reste pas moins des différences...
N'hésitez pas à faire des commentaires!
- Sylvain
Je viens de mettre la dernière main à l'article Traits Scala et décorateurs.
Mon idée était de présenter la notion de trait en montrant sur un cas d'utilisation comment cet outil peut offrir une alternative au "design pattern" décorateur que l'en rencontre fréquemment en Java et en POO en général. Vous verrez au passage que si les deux concepts sont proches, il n'en reste pas moins des différences...
N'hésitez pas à faire des commentaires!
- Sylvain
-
bredeletMembre éclairéBonne introduction aux mixins de Scala.
En effet faire de Forfait un mixin n'est pas trop nécessaire, mais cela permet à l'article de soulever des points intéressants.
Une question de la part d'un novice: tu dis qu'un trait n'a pas de constructeur, mais dans l'exemple je voisCode : super.impute(credit, "** Forfait **")
(note: dans mon langage dodo les traits/mixins s'appellent "qualifier"le 06/09/2010 à 2:02 -
Salut
En fait en Scala, un trait a un constructeur par défaut, mais ne peut (pour le moment) avoir de paramètres. Un trait peut donc avoir des instructions de constructeur définies dans le corps de la classe, mais tu ne peux pas écrire ceci :
Code : 1
2trait Test(val test: String)
le 06/09/2010 à 9:11 -
slerouxMembre habituéMerci pour ces retours!
En effet, je me suis mal exprimé: en Scala, un trait ne peut pas avoir de constructeur acceptant des paramètres. Et comme le souligne George7, le code dans le corps du trait définit un constructeur par défaut (sans paramètre). On peut assimiler cela à un bloc d'initialisation statique en Java.Envoyé par http://www.scala-lang.org/node/126
A+,
- Sylvainle 06/09/2010 à 14:57 -
Je trouve les early initializers pas assez puissants
J'avais parlé avec Martin Odersky et une personne est sensée en ce moment même s'occuper d'ajouter les paramètres aux traits, puis il veulent le support pour le deep mixin composition et enfin les classes virtuelles (laissées à l'abandon depuis 2008). Sur ce dernier point je pourrai surement vous en dire plus quand nous y seront, car je devrais y participer, pour le reste, j'attends aussi avec impatiencele 06/09/2010 à 15:12