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 :

Utilisation de méthodes privées pour appuyer les méthodes publiques


Sujet :

Java

  1. #1
    Membre habitué
    Inscrit en
    Septembre 2008
    Messages
    234
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 234
    Points : 156
    Points
    156
    Par défaut Utilisation de méthodes privées pour appuyer les méthodes publiques
    Bonjour,

    Je suis en train de réaliser une classe Catalogue destinée à regrouper des Livres.

    La méthode suivante est utilisée pour la création d'un Livre qui seras référencé dans une table de Catalogue.

    Ma question est de savoir s'il s'agit d'une bonne pratique de recourrir à une méthode privée de cette manière. L'alternative est d'utiliser un break ou un booléen pour récupérer l'ndice d'une case vide.

    P.S: Une question supplémentaire : la méthode creerLivre ne retourne qu'une objet Livre. Le retour à lui seul ne permet pas de déterminer s'il y a eu un échec d'instantiation ou si le tableau est rempli. Que fait t-on le plus souvent dans ce genre de cas ?

    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
    	public Livre creerLivre()
    	{
    		int indice;
     
    		// On recherche le premier élément du tableau vide
     
    		indice = trouverIndiceLibre();
     
    		if( indice > 0 )
    			tableauLivres[ indice ] = new Livre();
    		else
    			return null;
     
    		if( tableauLivres[ indice ] != null )
    			return tableauLivres[ indice ];
    		else
    			return null;
    	}
     
    	private int trouverIndiceLibre()
    	{
    		for( int i = 0; i < tableauLivres.length; i++ )
    			if( tableauLivres[ i ] == null )
    				return i;
     
    		return -1;
    	}

  2. #2
    Invité
    Invité(e)
    Par défaut
    J'ai un peu de mal à comprendre ce que fais ta méthode trouverIndiceivre().
    Peux-tu nous expliquer quel est son but ?

  3. #3
    Membre habitué
    Inscrit en
    Septembre 2008
    Messages
    234
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 234
    Points : 156
    Points
    156
    Par défaut
    Le but est de trouver la première case disponible (égal à null) et d'éviter d'avoir le code ci-dessous dans la méthode publique.
    Cette approche seras toujours valable si une méthode de suppression est ajoutée.

    Dans ce cas de figure, il ne serviras que dans deux méthodes mais je me posais la question de savoir si c'était une pratique courante d'avoir des classes "utilitaires" privées dans ce genre.

    (Pour information le tableau est initialisé par l'utilisateur à travers un entier. C'est ce qui est demandé dans l'exercice)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    	private Livre tableauLivres[];
     
    (...)
     
    	for( int i = 0; i < tableauLivres.length; i++ )
    		if( tableauLivres[ i ] == null )
    			break;
     
    	tableauLivres[ i ] = new Livre();
    Ou encore :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    	private Livre tableauLivres[];
     
    (...)
     
    	for( int i = 0; i < tableauLivres.length && !bIndiceTrouve; i++ )
    		if( tableauLivres[ i ] == null )
    			bIndiceTrouve;
     
    	tableauLivres[ i ] = new Livre();

  4. #4
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Bonjour,

    Je vois pas le pb de ta méthode private, elle est utilisée dans ta class ...

    Sinon pour le code tu peux abréger en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    		indice = trouverIndiceLibre();
     
    		if( indice > 0 )
    			tableauLivres[ indice ] = new Livre();
                            return tableauLivres[ indice];
    		else
    			return null;
    Parceque dans tous les cas tu retournes null dans le cas d'un pb d'instanciation ou si le tableau est plein ...


    Pour le deuxième pb, tu passes par les exceptions que tu throw sur la procédure appelante (par ex) ici tu traites les erreurs du new et puis si null bien ce sera pour tableau plein (par ex aussi)

  5. #5
    Membre habitué
    Inscrit en
    Septembre 2008
    Messages
    234
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 234
    Points : 156
    Points
    156
    Par défaut
    Merci pour ta réponse Fench. Donc je devrais mettre un try catch dans la méthode (il s'agit d'un menu textuel) qui appelle creerLivre. Si j'ai bien compris, l'exception à intercepter est celle qui est lancée lorsqu'on sort des limites d'une table (out of bounds exception) ?

  6. #6
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Par ex pour ton instanciation tu as:

    http://java.sun.com/j2se/1.4.2/docs/...Exception.html

    Pour ton tableau effectivement un OutofBounds etc ...

  7. #7
    Membre habitué
    Inscrit en
    Septembre 2008
    Messages
    234
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 234
    Points : 156
    Points
    156
    Par défaut
    Merci pour les pistes.

    L'exception semble s'appliquer aux classes Abstraites et les Interfaces mais c'est toujours bon à savoir.

Discussions similaires

  1. Réponses: 6
    Dernier message: 20/12/2011, 08h46
  2. Utiliser des fichiers .properties pour lancer des méthodes
    Par mussali dans le forum Développement Web en Java
    Réponses: 15
    Dernier message: 08/09/2011, 11h45
  3. Utilisation de la variable self dans les méthodes
    Par sliderman dans le forum Général Python
    Réponses: 2
    Dernier message: 19/11/2007, 01h20
  4. Réponses: 4
    Dernier message: 08/12/2006, 14h59
  5. Méthode simple pour gérer les collisions
    Par Hyoga dans le forum OpenGL
    Réponses: 2
    Dernier message: 19/02/2005, 13h43

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