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 :

[Débutant] Class - Je ne comprends plus rien !


Sujet :

avec Java

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

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Janvier 2005
    Messages : 586
    Points : 123
    Points
    123
    Par défaut
    Attends, tu va plus vite que moi

    Je cherche avant tout à comprendre. Donc je vais y aller petit à petit.

    Déjà à partir de ma classe actuelle, j'aimerais essayer de comprendre la différence avec la classe que tu ma donné. J'avoue que je suis perdu dans ta classe car il y a beaucoup de choses que je n'ai pas vue. Je début en somme !

    Mais je pense qu'avec des explications, ça devrais aller mieux

  2. #42
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    299
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 299
    Points : 422
    Points
    422
    Par défaut
    Le problème c'est que je trouve que tu n'es pas tout à fait parti dans la bonne direction.
    Tu as 2 attributs path. 1 qui sert dans certains cas, l'autre dans d'autres cas..
    Ton fichier, qu'il soit dans un dossier ou dans un sous-dossier n'a qu'un emplacement à la fois. De plus, si tu lui donnes son chemin complet, tu pourras toujours récupérer le nom du dossier parent par la suite sans avoir à faire un attribut spécial !
    Je pense que le fais d'en mettre 2 peut ajouter des risques ! tu peux te retrouver avec 2 chemins qui n'ont rien à voir l'un avec l'autre.

    J'avoue que je suis perdu dans ta classe car il y a beaucoup de choses que je n'ai pas vue. Je début en somme !
    Je ne vois rien de plus que tu n'as utilisé toi même dans ton code.
    Ce que je peux faire c'est rajouter des commentaires et décomposer un peu plus certaines étapes :
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    import java.io.*;
    import java.util.Properties;
     
    public class MyProperties {		
    	// Attributs
    	private Properties prop; // l'objet properties qui permettra de lire ou d'écrire des propriétés
    	private String path; // L'emplacement du fichier .properties
     
    	// Constructeur
    	public MyProperties(String path){
    		prop = new Properties();
    		this.path = path;
     
    		// On fabrique un File pointant vers l'url "path"
    		File file = new File(path);
    		// On vérifie que ce fichier existe, sinon on le fabrique
    		if(!file.exists()){
    			save();
    		}
     
    		// On charge les propriétés présentes dans le fichier .properties, dans l'objet prop
    		read();
    	}
     
    	// Ecriture des propriétés de "prop" dans le fichier se trouvant à "path"
    	private void save(){
    		try {			
    			FileOutputStream out = new FileOutputStream(path);
    			prop.store(out, null);
    			out.flush();
    			out.close();
    		} catch (IOException e) {e.printStackTrace();}
    	}
     
    	// Chargement des propriétés se trouvant à "path" dans l'objet "prop"
    	private void read(){
    		try{
    			FileInputStream in = new FileInputStream(path);
    			prop.load(in);
    			in.close();
    		}catch(Exception e){e.printStackTrace();}
    	}
     
     
    	// Ajout d'un propriété à l'objet prop + sauvegarde en dur
    	public void add(String key, String value){
    		prop.setProperty(key, value);
    		save();
    	}
     
    	// Récupération d'une propriété de "prop" à partir de sa clé
    	public String get(String key){
    		return (String)prop.get(key);
    	}
    }
    Sinon indique les parties que tu ne comprends pas.

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

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Janvier 2005
    Messages : 586
    Points : 123
    Points
    123
    Par défaut
    Citation Envoyé par Caalador Voir le message
    Le problème c'est que je trouve que tu n'es pas tout à fait parti dans la bonne direction.
    Je suis parfaitement d'accord. Mais il faut bien commencer par un bout et finir par l'autre.
    Citation Envoyé par Caalador Voir le message
    Tu as 2 attributs path. 1 qui sert dans certains cas, l'autre dans d'autres cas..
    Ton fichier, qu'il soit dans un dossier ou dans un sous-dossier n'a qu'un emplacement à la fois. De plus, si tu lui donnes son chemin complet, tu pourras toujours récupérer le nom du dossier parent par la suite sans avoir à faire un attribut spécial !
    Je pense que le fais d'en mettre 2 peut ajouter des risques ! tu peux te retrouver avec 2 chemins qui n'ont rien à voir l'un avec l'autre.
    Oui, sur ce coup, j'ai ajouter des risques et complexifiés terriblement la classe. Par ce que je ne suis pas parti comme il faut.
    Citation Envoyé par Caalador Voir le message
    Je ne vois rien de plus que tu n'as utilisé toi même dans ton code.
    Oui c'est vrai mais je n'ai pas l'habitude avec ce type d'annotation. Exemple envoyer une donnée = un set; recevoir une donnée = un get; envoyer une donnée et recevoir une exeption, une chaine, un bool = une fonction.
    Citation Envoyé par Caalador Voir le message
    Ce que je peux faire c'est rajouter des commentaires et décomposer un peu plus certaines étapes :
    Je veux bien, car je ne comprends pas facilement les points d'entrées et de sorties. Je m'exprime peut-être mal...

  4. #44
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    299
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 299
    Points : 422
    Points
    422
    Par défaut
    Citation Envoyé par Microbulle Voir le message
    Je veux bien, car je ne comprends pas facilement les points d'entrées et de sorties. Je m'exprime peut-être mal...
    En fait, je l'avais déjà fait dans le message précédent, mais je peux essayer de préciser encore plus !

    1. dans les programmes qui vont utiliser ta bibliothèque, tu vas d'abord choisir où tu veux que soit positionné le fichier properties.

    Ex. :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    // Application 1 :
    String path = "c:\mes_dossiers\mon_fichier.properties";
     
    // Application 2 :
    String path = System.getProperty("user.dir") + "/mon_fichier.properties";
     
    // etc ...
    2. Ensuite tu vas créer l'objet qui va gérer les propriétés

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MyProperties prop = new MyProperties(path);
    A ce moment là, les 2 attributs de l'objet vont être initialisé.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    prop = new Properties();
    this.path = path;
    Ensuite un objet File va être créé avec le chemin du fichier properties.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    File file = new File(path);
    On vérifie si le fichier existe, et si ce n'est pas le cas, on demande simplement de sauvegarder les propriétés (vide pour le moment) dans un fichier sur le disque.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if(!file.exists()){
    	save();
    }
    A ce moment là, soit il y avait déjà un fichier et donc rien a changé, soit il n'y avait pas de fichier, et on en a créé un vide.

    Enfin, on charge le contenu de ce fichier dans l'attribut Properties prop.
    Tu as donc, une fois ton MyProperties créé, un objet Properties prop, prêt à l'emploi. (vide si juste créé, ou alors déjà renseigné).

    3. Ensuite, si tu veux ajouter une propriété dans ton fichier properties.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    prop.add("Key1", "Propriété1");
    // Ex. 
    prop.add("SERVEUR_IP", "192.168.2.1");
    4. Et enfin, si tu veux lire une propriété :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String serveur_ip = prop.get("SERVEUR_IP");
    Si tu veux une explication sur une portion du code en particulier, indique le.

+ Répondre à la discussion
Cette discussion est résolue.
Page 3 sur 3 PremièrePremière 123

Discussions similaires

  1. Action sur un bouton..Je comprends plus rien du tout!
    Par koolway dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 26/04/2006, 10h17
  2. Réponses: 4
    Dernier message: 20/04/2006, 14h25
  3. Réponses: 12
    Dernier message: 03/01/2006, 17h23
  4. Je n'y comprend plus rien
    Par Pingouinvert dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 11/09/2005, 10h57
  5. [Kylix] Je n'y comprends plus rien
    Par fafamonteko dans le forum EDI
    Réponses: 5
    Dernier message: 02/03/2004, 16h48

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