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

Java Discussion :

Aide sur conception d'un programme


Sujet :

Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 256
    Points : 85
    Points
    85
    Par défaut Aide sur conception d'un programme
    Bonjour à tous,

    J'ai plusieurs questions qui ne vous demanderont pas de code mais plus une méthode de conception. Voilà, j'ai un projet de gestion d'hôtel et avant d'aller plus loin dans sa conception j'aurai une question sur la mise en place de la gestion des clients, je vais vous expliquez sans être trop long.

    J'ai comme base de données un fichier XML qui contient les clients (Nom, Prénom, ...), je dois charger les données dans un formulaire que je représente avec des jTextFields, jComboBox, etc. mes questions sont la suivante:
    - Qu'elle est pour vous la meilleur façon de travailler ses données ?
    - Créer une classe Collection avec une panoplie de méthode (getName, getName, ...) que ensuite j'implémenterai dans la classe de mon formulaire ?
    - Dernière question, on me demande d'enregistrer les données quoi qu'il advienne, c'est à dire que si le programme plante ou autres les données doivent être enregistrées, je pensais à mettre en place un thread de type daemon, qu'en pensez-vous ?

    Je vous remercie d'avance à tous, il bien entendu que je veux des conseils et en aucun cas que vous me développiez mon projet mais c'est juste pour être le plus juste possible dans sa conception.

    Bonne journée à tous.

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    1. Fais des classes qui représentent les éléments de ton modèle à manipuler : Chambe, Reservation... avec chacune les accesseurs et mutateurs pour chaque propriété (getNom(), setNom()...). Les classes graphiques ne les "implémentent" pas, elles les utilisent. Soit par système évenementiel (comme je t'ai indiqué dans l'autre discussion), soit en direct, avec une méthode seChambre(Chambre chambre) (par exemple) qui remplit les champs, et une méthode Chambre getChambre() (par exemple) qui récupère les valeurs des champs pour les mettre dans la classe (surement beaucoup plus simple pour toi).
    2. Surtout pas de daemon, surtout pour les entrées/sorties. La JVM s'arrête quand tous les threads non daemon sont terminés.
      Un System.exit() (ou un CTRL-C) arrêtra tous les threads. C'est particulièrement contre-indiqué pour les I/O, parce que tu risques de laisser des streams ouverts, non flushés...
      Les seules choses que tu peux faire :
      • Sauvegarder au plus tôt (dès qu'il y a création, modification, ou suppression). Si tu le fais dans un thread, tu pourras être sûr que la sauvegarde resiste à la fermeture (non forcée et non inoportune), mais ce sera un peu plus complexe de gérer (conflit chargement/sauvegarde, multiples sauvegardes). Eventuellement un Executor pourra te simplifier l'enchainement des différentes sauvegardes et chargements (un SingleThreadExecutor).
      • Evetuellement utiliser un shutdownHook, pour finaliser certaines choses quand on quitte l'application, y compris par un ctrl-c, (mais ça ne résistera ni à un arrêt forcé, ni à un crash). Particulièrement indispensable en particulier si tu utilises un SingleThreadExecutor, pour faire le shutdown de cet Executor.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Août 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 256
    Points : 85
    Points
    85
    Par défaut
    Ok Joël ! J'ai bien noté !
    Actuellement je charge mes données XML avec "DOM" de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
            NamedNodeMap attrs = element.getAttributes();
            for (int i = 0; i < attrs.getLength(); i++) {
                org.w3c.dom.Attr attr = (org.w3c.dom.Attr) attrs.item(i);
                if (attr.getName().equals("id")) {
                    Id = attr.getValue();
                }
                if (attr.getName().equals("name")) {
                    Name = attr.getValue();
                }
                if (attr.getName().equals("rate")) {
                    Rate = attr.getValue();
                }
            }
     
            String[] arr0 = {Id, Name, Rate};
            array.add(arr0);
    Je me dis que c'est peut être pas très correct ce que j'ai fait et peut être pas en relation avec la POO, c'est donc pour cela que je me suis permis de poster ce message, je voudrais rester dans le concept de la POO mais je trouve que c'est assez compliqué.
    J'ai bien noté qu'il ne fallait surtout pas créer de thread deamon odnc je vais le bannir, je vais donc suivre ton conseil et sauvegarder les datas dès qu'elles seront validées par l'utilisateur mais j'ai quand même un doute sur ce que veut mon prof, il a noté ceci :
    Toutes les données manipulées sont stockées en mémoire dans les collections adéquantes (déjà ici je ne suis pas sur d'utiliser ce qui est demandé). Cependant en cas de problème ou simplement en cas d'arrêt et de redémarrage de l'application, il faut pouvoir retrouver l'ensemble de ces données à jour.

    C'est donc pour cela que j'ai pensé à un thread.

    Qu'en penses-tu ?

    Merci

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Jb_One73 Voir le message
    Actuellement je charge mes données XML avec "DOM" de la façon suivante :
    [...]
    Je me dis que c'est peut être pas très correct ce que j'ai fait et peut être pas en relation avec la POO, c'est donc pour cela que je me suis permis de poster ce message, je voudrais rester dans le concept de la POO mais je trouve que c'est assez compliqué.
    Peu importe que tu les fasses en DOM, SAX, StAX, ou par bean mapping (genre Castor), à partir du moment où tu remplis tes instances de classes de modèle de données par les données chargées, tu as un modèle objet.

    Citation Envoyé par Jb_One73 Voir le message
    J'ai bien noté qu'il ne fallait surtout pas créer de thread deamon odnc je vais le bannir, je vais donc suivre ton conseil et
    sauvegarder les datas dès qu'elles seront validées par l'utilisateur mais j'ai quand même un doute sur ce que veut mon prof, il a noté ceci :
    Toutes les données manipulées sont stockées en mémoire dans les collections adéquantes (déjà ici je ne suis pas sur d'utiliser ce qui est demandé). Cependant en cas de problème ou simplement en cas d'arrêt et de redémarrage de l'application, il faut pouvoir retrouver l'ensemble de ces données à jour.
    Cet enoncé n'est pas très clair pour moi : il n'est nullement question explicitement d'arrêt inopiné (crash ou forçage d'arrêt). A mon avis, il est seulement question de d'assurer que les données soient sauvargées au plus tôt (et non pas gérées en mémoire, avec un chargement au démarrage, et une sauvegarde à la fin quand on ferme l'application). Peut-être peux-tu demander des précisions à ton professeur. Sinon, il y a une précaution que tu peux prendre dont je n'ai pas parlé dans mon premier message : ne jamais écrire directement le fichier xml. Ecrire dans un fichier temporaire, et à la fin, remplacer le bon fichier par le fichier temporaire. Ainsi, en cas d'arrêt inopiné pendant la sauvegarde, au moins, tu ne perd au pire que les dernières modifiiations.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Août 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 256
    Points : 85
    Points
    85
    Par défaut
    Très bien ! Je vais voir avec mon enseignant pour cette petite précision sur la pertinence des données. Ta 1ere notation me rassure si reste dans le sujet de la POO c'est déjà ça.
    Vivement que ce projet soit mis sur pied car je voudrais bien dormir !!!

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

Discussions similaires

  1. [XL-MAC 2011] aide sur une ligne de programmation
    Par vivi21 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 27/10/2011, 10h41
  2. [XL-2003] Aide sur conception PLANNING
    Par AAIJ97421 dans le forum Conception
    Réponses: 2
    Dernier message: 07/09/2011, 16h36
  3. [XL-2003] Aide sur conception planning
    Par AAIJ97421 dans le forum Conception
    Réponses: 0
    Dernier message: 20/06/2011, 16h01
  4. Aide sur conception
    Par Imakandis dans le forum ALM
    Réponses: 0
    Dernier message: 29/04/2010, 10h17
  5. Aide sur conception schema rélationnel
    Par Daniel MOREAU dans le forum Modélisation
    Réponses: 4
    Dernier message: 03/11/2008, 12h56

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