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

avec Java Discussion :

architecture générale : cherche conseils


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 36
    Par défaut architecture générale : cherche conseils
    bonjour,
    je suis débutant en java et pour bien corsé l'affaire je me suis lancé dans une application assez complexe (pour moi ) : gestion d'un magasin (articles/clients/fournisseurs, etc ...) avec base de données MySQL.

    j'avance pas mal mais je crois que j'ai qqs soucis dans l'architecture générale de mon programme...

    Alors question :
    je suis amené a gérer des articles donc j'ai créer une class Article pour pouvoir gérer UN article (reference, prix, fournisseur, etc...).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public class Article {
      public String reference;
      public Float prix;
      public Fournisseur fournisseur;
     
      public Float getPrix(){ ... }
      public Fournisseur getFournisseur() { ... }
    }
    Je suis amené aussi à afficher la liste de tous mes Article avec une fonction printAllItems().
    Selon vous pour avoir une bonne architecture, faut il placer cette fonction dans ma class Article ou alors vaudrait il mieux la placer dans une class a part qui controlerai mes Article ?


    je vous remercie d'avance

  2. #2
    Membre extrêmement actif Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 242
    Par défaut
    printAllItems(List<L> liste) peut aussi imprimer toutes les listes qui lui sont passées en paramètre.

    Comme cela cette méthode peut être déclarée en static et être appelée dans toutes tes applications pour toutes sortes de liste.

    A+

  3. #3
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 36
    Par défaut
    oui je suis daccord mais cela ne m'aide pas vraiment héhé

    dans ton exemple si je veux afficher une Liste d'article encore faut il la créer qqpart...
    et a quel endroit dois je la créer ? dans ma class Article ou autre part ?

    merci de ta réponse

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2007
    Messages : 132
    Par défaut
    Est-ce que tu utilises un couche pour Mapper tes tables SQL dans des objets ?

    Sinon, je te conseille de regarder le project hybernate et tu auras la réponse à ta question

    Et en plus tu apprendras librairie super utilisée.

  5. #5
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 36
    Par défaut
    non j'utilise rien pour BDD seulement des classes a moi ..
    j'ai deja lus quelques trucs sur hibernate mais j'ai trouvé ça super compliqué alors j'ai préféré continuer à tout gérer moi même.
    mais c'est vrai qu'avec la gestion de la BDD en plus c'est pas simple :s

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2007
    Messages : 132
    Par défaut
    Personnellement je trouve qu'il est dommage de réinventer la roue.
    Le résultat risque d'être:
    1) moins bon
    2) moins performant
    3) moins évolutif

    Je suis d'accord, tu perdras du temps au début mais, tu verras, tu en gagneras pas mal ensuite.

    Comme je le dis souvent "on n'a pas le temps de gagner du temps".

  7. #7
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par défaut
    Citation Envoyé par TyeFromEzella Voir le message
    Je suis amené aussi à afficher la liste de tous mes Article avec une fonction printAllItems()
    Salut,

    Que signifie "afficher la liste" pour toi.

    En général, dans les applications avec base de données, les données métiers comme Article dispose juste de getter/setter et éventuellement (on va dire rarement) d'une méthode toString() qui sera plus utilisé pour afficher des traces dans la console (ce qui sert plus pour le débug/développement qu'autres choses).

    En général, tu récupères de la base de données une collection d'Article (ou une liste ou un set), et c'est dans la partie de visualisation de générer la représentation de l'article car seule la vue sait comment on veut l'écrire.

    Dans une application console, cela pourrait être des simples sorties sur System.out, dans une application Web, cela pourrait être la jsp qui s'occupe de parcourir la liste pour afficher les données dans un tableau par exemple, et dans une application Swing, cela se ferait au niveau de la génération de tes Frames.

    Et concernant Hibernate/JDBC, on peut faire du mapping objet-relationnel en JDBC et avoir une architecture relativement bonne qui pourra éventuellement être modifié à l'avenir pour mettre de l'hibernate.

  8. #8
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par TyeFromEzella Voir le message
    Je suis amené aussi à afficher la liste de tous mes Article avec une fonction printAllItems().
    Selon vous pour avoir une bonne architecture, faut il placer cette fonction dans ma class Article ou alors vaudrait il mieux la placer dans une class a part qui controlerai mes Article ?
    Comme je suppose que la fonction "printAllItems()" a pour objectif d'afficher tous les articles du magasin, alors il est logique de la placer dans une classe Magasin. non ?
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  9. #9
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    Comme je suppose que la fonction "printAllItems()" a pour objectif d'afficher tous les articles du magasin, alors il est logique de la placer dans une classe Magasin. non ?
    J'aurais même tendance à l'externaliser complètement dans une classe ayant pour but de faire uniquement de la présentation, et laisser les objets Produits et Magasins en tant que de beans sans plus. Cette classe ayant un magasin/un produit en tant que delegate.

  10. #10
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par sinok Voir le message
    J'aurais même tendance à l'externaliser complètement dans une classe ayant pour but de faire uniquement de la présentation, et laisser les objets Produits et Magasins en tant que de beans sans plus. Cette classe ayant un magasin/un produit en tant que delegate.
    Mais si le PO compte utiliser un ORM, il sera effectivement plus simple de faire de simple beans, et de créer des delegate.

    Mais vu qu'on est dans le forum "débuter", je proposais un simple découpage en responsabilité "métier" car c'est plus simple a appréhender.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  11. #11
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Généralement, on utilise une classe par "entité" qui ne fait que représenter les données de l'entité ainsi que les références "utiles" d'un point de vue fonctionnel.
    On fait ensuite une classe spécialisée (DAO) pour extraire ou manipuler les entités. Le CRUD (pour Create Read Update Delete) est une forme simple de DAO pour les opérations de base sur une entité.
    D'un point de vue découpage, on aura donc des DAO plus ou moins complexes pour l'extraction des données et des CRUD pour l'aspect persistence le tout manipulant des entités.

    Donc, dans ton cas, ta classe Article ne devrait que contenir les propriétés de l'article et éventuellement des listes d'objets liés à un article.
    Tu devrais donc mettre ta méthode listAll() dans le CRUD alors que je mettrais une méthode list(String param1, Integer param2, ...) dans un DAO parce que là, c'est un besoin spécifique à un module particulier (peut-être).
    Tu me suis ? Si je ne suis pas clair, n'hésite pas

    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  12. #12
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 36
    Par défaut
    waaa super ! merci à tous, je commence a y voir plus clair. En fait je crois que je connais la "théorie" (MVC et tout ca...) mais je n'arrive pas à le mettre en pratique...

    @OButterlin :
    je ne comprends pas la réelle différence entre CRUD et DAO puisque tu me dis que un CRUD est une forme de DAO....

    et dans le cas de ma class Article la comment appellerais tu la classe qui contrôlerais/manipulerais mon entité Article ?


    merci !! et bonne soirée à tous !

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 12/04/2010, 15h59
  2. cherche conseil pour Anti Virus
    Par StyleXP dans le forum Sécurité
    Réponses: 4
    Dernier message: 15/08/2005, 19h05
  3. cherche conseil sur livre pour jbuilder
    Par med1 dans le forum JBuilder
    Réponses: 3
    Dernier message: 09/06/2004, 13h33
  4. Réponses: 3
    Dernier message: 01/07/2003, 16h04
  5. Cherche conseil pour choisir mon orientation.
    Par AslDice dans le forum Débuter
    Réponses: 6
    Dernier message: 24/04/2003, 17h07

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