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 :

Programmation objet Java


Sujet :

Langage Java

  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 162
    Points : 545
    Points
    545
    Par défaut Programmation objet Java
    Bonjour,

    Je dispose d'une classe possédant un membre qui est un tableau 2D d'objets nommé "Cell"
    J'aurais besoin d'une classe qui fasse la même chose mais avec un tableau 3D d'objets "Cell"
    La façon a éviter consiste à écrire une classe qui possède un membre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cell[][] cell = new Cell[N1][N2]
    puis une autre classe qui possède :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cell[][][] cell = new Cell[N1][N2][N3]
    Evidemment, ceci est très mauvais car les opérations sur l'objet Cell que je veux effectuer sont les mêmes quelle que soit la dimension 2 ou 3 du tableau et j'aurais donc plein de code dupliqué.

    Une autre façon de faire consiste à n'écrire qu'une seule classe qui contienne le tableau 3D :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cell[][][] cell = new Cell[N1][N2][N3]
    et il suffit d'écrire un constructeur avec N1 en paramètre de telle sorte que si N1 = 1, je travaille en 2D et si N1 > 1 je suis en 3D.

    Je voulais savoir s'il existait un autre moyen "plus élégant" style template ou héritage de façon à traiter le problème et éviter de réécrire inutilement du code.

    Merci.

  2. #2
    Membre confirmé Avatar de spekal
    Inscrit en
    Mai 2005
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 502
    Points : 510
    Points
    510
    Par défaut
    Il est difficile de te répondre avec tes explications.

    En effet, pour concevoir un système de classes, il faut - à mon avis - se rapporter aux objets du monde réel, du moins à l'idée que tu t'en fais. Or tu ne nous parles que des propriétés de ce monde : si n = 1 alors ceci, sinon cela.

    Certes, les propriétés aident à repérer les objets et les classes, mais en l'absence de toute description de ton monde tel que tu le vois et le comprends, je ne vois pas comment on peut t'aider. On sait juste que dans un cas il y a deux dimensions, dans l'autre, 3. Avec ça on pourrait te donner des trucs pour jongler de 2 à 3, mais je ne sais pas si cela te serait bien utile...

    Sinon, pour créer un objet si n = 1, et un autre sinon, on emploie souvent des factory. C'est une méthode statique d'un objet qui fait les if et les new selon ce qu'il faut. On considère souvent les factory comme un des must de la programmation objet ; donc tu peux facilement exploiter cette idée pour donner un petit tour objet à tes programmes !

  3. #3
    Membre régulier Avatar de spoutyoyo
    Inscrit en
    Avril 2004
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 116
    Points : 83
    Points
    83
    Par défaut
    Comme le dit spekal, des informations fonctionnelles sur tes classes permettraient de mieux gérer ton problème.

    Sinon moi je verrais :
    - une classe mére Matrice et deux classes filles Matrice2D et Matrice3D si le traitement sur les deux types de matrices est différents
    - ou une classe Matrice qui représente aussi bien tes tableaux à 2 ou 3 dimensions

    - Et ta classe principale au lieu de l'attribut Cell[][] ou Cell[][][], un attribut de type Matrice
    http://www.stop-monsanto.qsdf.org/

  4. #4
    Membre actif Avatar de @ldehan
    Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    215
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 215
    Points : 278
    Points
    278
    Par défaut
    je vois 2 solutions, mais tout depends des opérations que tu execute sur tes matrices. les 2 se valent à mon avis.

    soit, comme tu l'as dit tu ne créer qu'une classe avec un tableau a trois dimmension et quand elle est instancié en 2D, tu "oublies" une dimension.

    soit tu crée une classe Matrice2D et une seconde classe Matrice3D qui contient une tableau de Matrice 2D où tu surcharge certaine méthode de Matrice2D pour gérer la 3eme dimension. Ceci permet de factoriser le code car tu peux toujours appeler les methodes de Matrice2D dans Matrice3D

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    class Matrice2D {
       private Object[][] cell;
       public set(Object o, int x, int y){
          cell[x][y] = o;
       }
    }
     
    class Matrice3D {
       private Matrice2D[] cell;
       public set(Object o, int x, int y, int z){
          cell[z].set(o, x, y);
       }
    }

  5. #5
    Membre confirmé

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 162
    Points : 545
    Points
    545
    Par défaut
    Merci pour ta réponse.
    En effet je pensais utiliser quelque chose qui ressemble à ta 2eme solution.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. programmation objet java
    Par newtech dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 08/07/2009, 11h48
  2. Questions sur la programmation objet en Delphi
    Par Manopower dans le forum Débuter
    Réponses: 20
    Dernier message: 15/06/2005, 15h39
  3. [ASP] Programmation objet ?
    Par Hell dans le forum ASP
    Réponses: 6
    Dernier message: 07/04/2005, 15h28
  4. Problème programmation objet
    Par Contrec dans le forum MFC
    Réponses: 54
    Dernier message: 30/03/2005, 11h30
  5. [SAX] Passer d'objet java en fichier XML?
    Par spoutyoyo dans le forum Format d'échange (XML, JSON...)
    Réponses: 15
    Dernier message: 05/01/2005, 08h31

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