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 :

[Newbie] Utilisation des classes


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Analyste/développeur Java EE
    Inscrit en
    Janvier 2005
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste/développeur Java EE

    Informations forums :
    Inscription : Janvier 2005
    Messages : 376
    Par défaut [Newbie] Utilisation des classes
    Bonjour,
    me voici en train de développer une petite application qui télécharge les images d'un site après 3 heures de cours... Et on me demande d'utiliser des classes. Pour commencer, j'ai tout codé dans la classe principale en utilisant des fonctions. Je viens de tester en séparant cette classe en plusieurs classes mais je me demande si je le fais bien.

    J'ai la classe principale avec la fonction main, une classe tools avec les différentes fonctions et une classe pour les exceptions personnelles. Le programme fonctionne comme avant mais avec plusieurs classes, mais il n'y a pas d'héritage entre elles. Je les utilise comme je le faisais auparavant avec des includes en C.

    Voici le code pour les classes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    class Bug extends Exception{...}
    class Tools{...}
    class ImageDownloader extends Tools{....} //classe principale
    J'ai du mettre extends Tools autrement il ne reconnaît pas les fonctions que j'appelle.

    Merci d'avance pour vos lumières.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    102
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2005
    Messages : 102
    Par défaut
    Salut,

    Si ta classe Tools sert d'utilitaire, tu peux mettre les méthodes en static et ainsi dans ImagesDownloader tu utilises un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ... Tools.doAction(...);
    Autre solution, ta classe ImagesDownloader pourrait avoir une instance de la classe Tools ainsi tu peux retirer le extends !

    Sans voir le code de tes classes, je ne peux pas te conseiller plus Si toutes tes méthodes dans Tools sont indépendantes les unes des autres, alors je prendrais la première solution.

    A plus,
    Mathieu

  3. #3
    Membre éclairé
    Homme Profil pro
    Analyste/développeur Java EE
    Inscrit en
    Janvier 2005
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste/développeur Java EE

    Informations forums :
    Inscription : Janvier 2005
    Messages : 376
    Par défaut
    Dur de montrer sans tout montrer.
    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
    class Tools{
    	/**
             * The method used for creating a new folder
             * @param folderName the name of the new folder
             * @return none
             */
    	public static void createFolder(String folderName){
    		try{
    			File f = new File(folderName);
    			if (!(f.exists())){
    				if (!(f.mkdir()))
    					throw new Bug("Cannot create the new folder!");
    			}
     
    			//Change current folder
    			System.setProperty("user.dir", f.getAbsolutePath());
    		}
    		catch(Exception e){
    			System.err.println("Error in urlToFile: "+e.getMessage());
    		}
    	}
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    class Bug extends Exception{
    	public Bug() {}
     
    	public Bug(String message){
    		System.err.println(message) ;
    	}
    }
    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
    public class ImageDownloader extends Tools{
     
    	/**
             * The main function
             * @param args[] unused in the next code
             * @return none
             */
    	public static void main(String args[]){
    		try{
    			//Reads the url from the keyboard 
    			System.out.println("Enter an url:");
    			InputStreamReader inputstreamreader = new InputStreamReader(System.in);
    			BufferedReader bufferedreader = new BufferedReader(inputstreamreader);
    			String urlStr = bufferedreader.readLine();
    			URL url = new URL(urlStr);  //converts String into URL format
     
    			//Create a new folder
    			createFolder(url.getHost());
    		}
    		catch(Exception e){
    			System.err.println("Error in main: "+e.getMessage());
    		}
    	}
    }
    Dans la classe Tools, j'ai des fonctions qui s'appellent l'une l'autre. Je n'ai pas tout montré (ça fait 200 lignes), mais voici en gros comment j'ai codé le tout.

  4. #4
    Membre éclairé
    Homme Profil pro
    Analyste/développeur Java EE
    Inscrit en
    Janvier 2005
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste/développeur Java EE

    Informations forums :
    Inscription : Janvier 2005
    Messages : 376
    Par défaut
    Une petite question en plus, je dois faire une javadoc, donc je lance javadoc et il récupère tout les commentaires voulus. Mais il ne prend que la class principale, il ne parle pas de la class Tools ni de la class Bug. Comment solutionner cela?

    Merci

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    102
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Luxembourg

    Informations forums :
    Inscription : Avril 2005
    Messages : 102
    Par défaut
    Salut

    Ta classe ImagesDownloader n'a pas besoin d'étendre Tools. Tu peux utiliser par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Tools.createFolder("XXFolder");
    dans ImagesDownloader puisque ta méthode dans Tools est static ! (un petit tour dans la FAQ si tu as un doute sur le mot clé.

    Ensuite, pour la javadoc, dans Eclipse, tu peux la générer sur un projet en entier. (Project > Generate Javadoc... et tu suis l'assistant).

    A plus,
    Mathieu

  6. #6
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    Juste deux petites remarques :

    - Quand tu programmes en Java, essaye progressivement de "penser objet" au départ, et non de penser "fonctions". Avant de réfléchir aux fonctionnalités de ton programme et de le découper ainsi (comme on le fait en C), réfléchis plutôt à quels sont les acteurs, les entités de mon système, qu'est-ce qui les caractérisent, qu'est-ce qu'ils sont capables de faire etc ...
    Ca ne vient pas en un jour, c'est clair, mais ça ne vient que si on essaye comme ça ^^
    A voir que le "static" est plus ou moins une entorse à l'objet ...

    - Une des plus grandes forces de Java ce sont ses Exception qui font que quand on les utilise bien le debugging est beaucoup beaucoup beaucoup plus simple (entre autres), grâce à la stack. Dès le départ, pense bien qu'une exception c'est un objet, et non une simple châine de caractères (le message). C'est dommage de perdre l'information de la stack.
    En plus, les try/catch non nécessaires et surtout avec des catch Exception ce n'est pas vraiment recommandé, à n'utiliser qu'en pleine connaissance de cause !

Discussions similaires

  1. [c#] Utiliser des classes ou des tableaux ?
    Par dysko dans le forum Windows Forms
    Réponses: 4
    Dernier message: 19/02/2007, 11h22
  2. Réponses: 2
    Dernier message: 31/10/2006, 16h29
  3. utiliser des classes C++ en delphi
    Par Guigui_ dans le forum Delphi
    Réponses: 6
    Dernier message: 07/07/2006, 10h29
  4. utiliser des classes dont on n'a pas le source
    Par kocin dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 28/08/2004, 16h05

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