Le 12/02/2013 03:12, Adrien Cheype a écrit :
1ère proposition :
lien pour modifier le diagramme <http://yuml.me/diagram/plain;/class/edit/%5BMolecule%7C+getId%28%29%5D%3Cmolecule-%5BMoleculeProvenance%5D,%20%5BMoleculeRow%5B%7C+getId%28Molecule%29;+getId%28MoleculeProvenance%29%5D>
+ la surcharge de méthode permet la différenciation de traitement + aucune modification du modèle, MoleculeRow est indépendant du modèle et peut ainsi être inclue dans la couche web - ne répond pas au problème d'interface commune
2ème proposition :
lien pour modifier le diagramme <http://yuml.me/diagram/plain;/class/edit/[--Interface--;MoleculeRow%7C+getRowId%28%29]%5E-[MoleculeProvenance%7C+getRowId%28%29],%20[--Interface--;MoleculeRow]%5E-[Molecule%7C+getId%28%29;+getRowId%28%29],%20[Molecule]%3Cmolecule-[MoleculeProvenance]>
(comprendre <<Interface>> pour --Interface--)
+ l'utilisation du surclassage permet d'apporter les deux améliorations - est un peu plus intrusif par rapport au modèle (bien que l'interface et les méthodes supplémentaires n'auront a priori pas d'impact sur la structure de la BD sous-jacente)
Quelle solution préférez-vous ? Une autre alternative à proposer ? Personnellement, je préfère la première car cela représente un cas particulier d'affichage et cela permet de ne pas polluer le modèle de données avec des problématiques d'affichage.
Par contre, je pense qu'elle ne convient pas exactement au problème, car l'objet à manipuler devrait être un javaBean car wicket affiche un propriété d'un bean, par exemple: columns.add(new PropertyColumn<Molecule>(new Model<String>(getString("Molecule.nomCommun")), "nomCommun", "nomCommun")); il va appeler la méthode getNomCommun() de la ligne courant. Nous allons également essayer de réfléchir à une solution. Pour revenir a la même problématique pour les Produit, les molécules portant sur les produits, cela devient également lorsque l'on doit afficher le nom du programme sachant que: * la ligne est soit une Molecule, soit une MoleculeProvenance * le produit est soit une Fraction, soit un extrait Par exemple, pour la référence du lot, je dois faire deux cas encore suivant le type de produit: * "produit.purification.lotSource.ref" * "produit.extraction.lot.ref" -- Éric Chatellier - Code Lutin Tel: 02.40.50.29.28 - http://www.codelutin.com