URL: https://linuxfr.org/forums/programmation-java/posts/d%C3%A9river-une-classe-conteneur-de-donn%C3%A9es-de-classe-d%C3%A9riv%C3%A9e Title: dériver une classe conteneur de données de classe dérivée Authors: nicolas Date: 2007年05月30日T16:41:49+02:00 Tags: Score: 0 Bonjour, Je travaille sur la création d'un logiciel de modéilisation moléculaire appliqué à la théorie de Huckel en JAVA.Je résume mon affaire Actuellement un objet de classe Molecule est un un conteneur d'objtets d'Atomes Huckel et de Liaisons Huckel . En gros : public class Molecule { private ArrayList lstAtom // liste d'atomes private ArrayList lstBond // liste de liaisons private int charge // charge de la molécule /*** créer un atom d'un type Enum atomType à un poin donné ****/ public Atom createAtom (AtomType type, Point2D p) {...} /** lier deux atomes . type de liaison = 1 ou 2 ou 3 (simple, double triple) public void link (Atom a1, Atom a2, int type) {...} public void rotate () {................} public List getAtoms () {............} public List getBonds () {............} ........... } Ma classe Atom et ma Class Bond contiennent des parametres (membres de classe) inhérents au squelette de la molécule : comme par exemple charge atomique, nombre d'électrons, pour l'atome la classe Bond possède uen référence sur les deux atomes qui contiennent la liaison et un type de laiison "int" : 1 2 ou 3 suivant si c'est une liaison triple ou double. Ces deux classes ne sont pas "interne" à la molécule pour plus de lisibilité, donc elles contiennent une référence à la molécule qui les incluent : je ne sais pas si cela est efficace, j'aurai peut etre dû mettre ces classes à l'intérieur de la lcase molécule. mais les classes Atom et Bond ont actuellement aussi des paramètres inhérents à la théorie de huckel : double hX pour l'atome et double hxy pour la liaison (bond) . quand on modifie le type d'atome (Carbone, Azote, etc.... propriété inhérente au squelette) le paramètre hx est modifié sur l'atome, mais cela va aussi modifier le paramètre Hxy dans toutes les liaisons de la molécule qui possèdent l'atome. pour cela qd on fait un "set" sur l'atome, l'objet appelle ensuite une fonction "handle...." dans la molécule qui va faire les modifs sur les liaisons. Apres chaque modif apportée sur la molécule ou une liaison ou un atome l'objet molécule envoie des évenements aux vues par des listeners que j'ai créé (classe MoleculeEvent, interface MoleculeListener) . Bref voilà ma question . comment puis-je séparer ce qui est inhérent au squelete et et ce qui est inhérent à huckel ??? En effet j'aimerai bien que mon suqelette de base soit réutilisable pour des logiciels qui n'ont rien à voir avec huckel. j'avias pensé au départ faire une classe Skeleton qui contient des listes d'AtomSekel et de BondSekel ayant simplement eux meme des propriété inhétentes aux squelette, et dérivée AtomSkel et BondSkel en AtomHuckel et BondHuckel., puis dérivée Skeleton et MoleculeHuckel. Cela n'est pas possible parce que par dérivation les arraylist de MoleculeHuckel n'auront pas AtomSkel et des BondSkel mais simlplement des AtomHuckel et des BondHuckel. Comment faire ? j'ai 'impression que je dois tout mettre dans la même classe et qu'il est impossible de dériver un conteneur d'objet contenant un contenu lui-même dérivé En vous remerciant par avance Cordialement

AltStyle によって変換されたページ (->オリジナル) /