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 :

Quelques précisions concernant une classe


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Caxton
    Homme Profil pro
    Sans
    Inscrit en
    Janvier 2005
    Messages
    586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Janvier 2005
    Messages : 586
    Par défaut Quelques précisions concernant une classe
    Bonjour tout le monde.

    Je suis sur un affreux dilemme à trois cas . Dans ma classe, j'ai besoin de créer une ligne dans un fichier contenant une clef et une donnée.

    Cas 1:
    Soi je fait un setter pour la clef, un setter pour la donnée puis une fonction qui va créer dans le fichier la ligne avec la clef = donnée.
    Cas 2:
    Soi je fait un setter qui prendra directement la clef et la donnée puis une fonction qui va créer dans le fichier la ligne avec la clef = donnée.
    Cas 3:
    Soi je ne fait aucun setter et je fait une fonction interne qui demande la clef et la donnée puis elle se chargera de créer la ligne avec la clef = donnée.
    Je cherche à avoir un code facilement maintenable dans le temps et à m'éviter des lignes inutiles dans mon main au travers de ma classe. Quel est la meilleure méthode ?
    Laquelle me fera économisé du temps par la suite ?
    Faut-il que je copie/colle ma classe actuelle ?

    Autant de questions que je me pose actuellement.

  2. #2
    Membre émérite
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Par défaut
    Bonjour,

    Disons qu'avex les infos que l'on a, ce n'est pas forcément la meilleure solution que l'on va pouvoir te proposer (je dis après la lecture de ta proposition 3 où il est question de demander le couple clé/valeur).

    Ceci dit, je me tournerais plus vers la classe Properties si tes clé et données sont des String, ou alors vers une Map sinon (sachant que Properties te permet déjà d'écrire dans une stream).

    A voir selon ton besoin.

    Dans tous les cas, je serais plus dans la proposition n°2, mais selon le contexte, les autres doivent pouvoir se justifier.

  3. #3
    Membre expérimenté
    Homme Profil pro
    Consultant BigData
    Inscrit en
    Juillet 2009
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Consultant BigData

    Informations forums :
    Inscription : Juillet 2009
    Messages : 129
    Par défaut
    A mon avis, il faut que tu te poses le question sur la signification de ta classe car plusieurs possibilités sont bonnes.

    Je pense qu'il faut seulement que tu évites la deuxième solution. Un setter sert à donner une valeur à une variable. Il ne doit pas setter deux variables. Ou alors, il s'agit d'une fonction membre, mais il ne faut pas l'appeler setter.

    Ensuite, tu dois te demander si, dans la signification de ta classe, des setters ont un sens ou non. Si ils en ont, tu peux les mettre, sinon, ne les met pas. Pour la méthod qui écrit dans le fichier, une fois de plus choisis par rapport aux sens logique.

    Si les deux cas sont logiques pour toi, je pense que le premier est mieux, pas forcément pour la maintenabilité, mais pour l'évolutivité. Tu peux ainsi inclure d'autres méthodes de changement des variables à écrire sans affecter la façon de les écrire.

  4. #4
    Membre éclairé Avatar de Caxton
    Homme Profil pro
    Sans
    Inscrit en
    Janvier 2005
    Messages
    586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Janvier 2005
    Messages : 586
    Par défaut
    En fait, je pense aussi que la solution 1 est logique pour l'évolution. Mais elle demande alors de bien setter les deux strings clé et donnée.

    Ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    GestionProp prop = new GestionProp();
     
    prop.setKey("ma clef");
    prop.setVal("ma donnée");
    prop.update();
    Fonctionnera mais aussi plus loin un simple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    GestionProp prop = new GestionProp();
     
    prop.setKey("ma clef");
    String réponse = prop.getVal();
    Fonctionnera ainsi sans avoirr a ajouter une commande spécifique à la clef.
    Un inconvénient c'est que je vais avoir plusieurs lignes à écrire.

  5. #5
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Par défaut
    bonjour,

    Pourquoi réinventer la roue ?
    Comme la dit Deaf il existe la classe Properties qui fait exactement ce que tu souhaites faire.

    Cette classe permet de gérer un ensemble clé / valeur, de charger les propriétés à partir d'un fichier, et aussi de les sauvegarders dans une fichier !

    Que demander de plus.
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre éclairé Avatar de Caxton
    Homme Profil pro
    Sans
    Inscrit en
    Janvier 2005
    Messages
    586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Janvier 2005
    Messages : 586
    Par défaut
    oui je suis bien d'accord.
    Mais pour avoir essayer de coder avec, ca deviens lourd alors qu'avec une classe qui gère ça bien, c'est plus rapide.

  7. #7
    Membre émérite
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Par défaut
    Citation Envoyé par Microbulle Voir le message
    une classe qui gère ça bien, c'est plus rapide.
    Qu'entends-tu par là? qu'est-ce que bien gérer?

    Je suis quand même surpris que Properties soit lourd à utiliser. Quel est ton besoin? Qu'est-ce qui t'as posé problème à l'utilisation?

    Rien ne t'empêche d'hériter de Properties ou Map pour simplifier ce qui te gêne ou pour ajouter des fonctionnalité.

    A noter aussi que si tu ne souhaite gérer qu'une seule paire clé/valeur, tu peux très bien utiliser la classe Entry.

Discussions similaires

  1. definir une class avec précision
    Par Invité dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 21/03/2011, 08h54
  2. Réponses: 1
    Dernier message: 14/05/2010, 01h56
  3. Réponses: 0
    Dernier message: 11/02/2010, 18h49
  4. Précision sur fonction static d'une classe pour Thread
    Par thebop dans le forum Threads & Processus
    Réponses: 9
    Dernier message: 22/06/2009, 15h18
  5. Réponses: 19
    Dernier message: 21/12/2007, 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