IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Organisation des classes


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 8
    Par défaut Organisation des classes
    Bonjour,

    me voila devant un projet en POO. N'étant pas habitué à ce paradigme de la programmation, je suis un peu confus quant à l'architecture de mon programme et l'articulation entre mes classes.

    je dois ouvrir un fichier (pdb) et y lire des informations sur les atomes (lignes commençant par ATOM) ainsi que d'autres paramètres. Lire le fichier ligne par ligne ne me pose pas de problèmes: Pour l'instant tout est dans une seule classe, mais cela me permet de ne lire mon fichier qu'une seule fois et de récupérer toutes les informations en une seule fois...

    Faudrait-il créer une classe juste pour lire? dois-je faire une classe Atome, une autre paramètres?


    Est-ce que quelqu'un pourrait m'éclairer sur la manière d'envisager mon problème?

    En espérant avoir été assez clair...

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Par défaut
    Comme tu l'as suggéré :
    Une classe Atome qui contient les propriétés d'un atome.
    Une classe AtomeFileReader qui contient une méthode
    List<Atom> read(File f)

    Cette méthode va lire les atomes (Si tu as bien un atome par ligne), les ajouter à une liste et ensuite retourner cette liste.

    Après il faudrait connaître tes besoins exacts.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 8
    Par défaut
    merci mad-math pour ta réponse!

    alors pour préciser, un fichier pdb contient des lignes commençant par ATOM ressemblant à ça :

    ATOM 99 O SER A 36 19.371 -0.479 -11.286 1.00 12.56 O

    je dois récupérer les coordonnées (x, y,z) de ces atomes (19.371 -0.479 -11.286) deux paramètres (1.00 et 12.56) et le type (ici O).

    il y a d'autres lignes qui me sont utiles, donnant des paramètres valables pour tous les atome (ce sont des informations sur la maille cristalline...), ici :

    SCALE1 0.016280 0.009400 0.000000 0.00000
    SCALE2 0.000000 0.018799 0.000000 0.00000
    SCALE3 0.000000 0.000000 0.010121 0.00000

    Alors, je pense procéder comme suit :
    Une classe PdbReader qui contiendrait une méthode read et qui, selon le début de la ligne (ATOM, SCALE ou autres) appliquerait soit les méthodes de la classe Atome, soit les méthodes de la classe Scale.
    ça sonne bien?
    comment se passe l'héritage?

  4. #4
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Par défaut
    Proposition :
    Pas d'héritage.

    Une classe PDBFile qui contiendra la liste de tes atomes et ton paramétrage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public class PDBFile {
        private List<Atom> atoms;
        private Parameters parameters;
     
        //getter / setters
    }
    Tu peux stocker la position dans une classe du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public class Position{
        private double x;
        private double y;
        private double z;
     
        //getter / setters
    }
    Si les types possibles d'atomes sont fixe, tu peux créer une Enum
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public enum AtomType {
        O, H, C...
    }

    Ta classe Atom
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public class Atom {
        private Position position;
        private double param1; // 1.00
        private double param2; // 12.56
        private AtomType type; // Remplacer par String si pas d'enum
        //getter / setters
    }
    Ton paramétrage commun à tous les atomes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public class Scale {
        private double x, y, z,? ;
    }
     
    public class Parameters{
        private Scale scale1; 
        private Scale scale2; 
        private Scale scale3; 
        //getter / setters
    }

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 8
    Par défaut
    Waow! merci beaucoup!

    je vais potasser ça et voir comment ça se présente!
    je reviendrai si j'ai d'autres questions, si tu as encore du temps?!

    Bonne soirée

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 8
    Par défaut
    Me revoilà!

    mes classes sont crées, (j'ai dû en créer plus que prévu, afin d'être plus souple quant à l'utilisation de mon code). J'ai maintenant 2 questions :

    - j'ai une classe Coordonnees, et je voudrais créer une classe CoordonneesFractionnaires héritant de la première qui effectuerait un calcul sur les coordonnées x y et z. Je vous avoue que j'ai énormément de mal à faire tourner cette structure, je dois avoir un problème avec la compréhension des mots clés "super" et "this". Comment faire pour que ma classe dérivée puisse fonctionner?

    - J'ai aussi essayé de faire une Enum pour les éléments, comme me l'a suggéré mad-math, avec un switch/case, comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public enum Element { N, C, O}
     
    	public static String getElementValue( Element element){
    		switch(element){
    			case N:		return "azote"; // etc....
    ce n'est pas faux, mais ça ne fait rien, je ne peux pas l'utiliser.

    Merci encore pour l'aide et l'attention...

Discussions similaires

  1. Organisation des classes dans un jeu de type Mario
    Par peijnoob dans le forum Développement 2D, 3D et Jeux
    Réponses: 2
    Dernier message: 16/01/2008, 22h08
  2. organisation des classes et package
    Par blaise_laporte dans le forum Interfaces Graphiques en Java
    Réponses: 5
    Dernier message: 28/02/2007, 11h55
  3. [POO] Organisation des classes PHP
    Par AsQuel dans le forum Langage
    Réponses: 6
    Dernier message: 16/02/2007, 10h09
  4. [GUI]Organisation des classes
    Par c-top dans le forum Interfaces Graphiques en Java
    Réponses: 9
    Dernier message: 04/03/2005, 18h46
  5. Organisation des classes
    Par R3iTt0R dans le forum Langage
    Réponses: 2
    Dernier message: 02/06/2004, 18h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo