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 :

Fonctions dans une class


Sujet :

Langage Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 66
    Points : 37
    Points
    37
    Par défaut Fonctions dans une class
    Bonjour les gens,

    pour mes études, je dois réaliser une class en Java permettant de gérer des calculs sur des ensembles, en utilisant une liste chainée
    voici la class que j'ai crée:
    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    public class Ensemble<T extends Comparable<T>>
    {
        private ListeChainee<T> e;
     
        public Ensemble()
        {
        	e = new ListeChainee<T>();
        }
     
        public boolean appartient(T x)
        {
        	return rechercher( x );
        }
     
        public void ajouter(T x)
        {
        	if( !rechercher(x) )
        	{
        		if( this.e.getTaille() <= 1 )
        	        e.ajouterFin( x );
        		else
        			e.ajouterAvant( x );
        	}
        }
     
        public void supprimer(T x)
        {
        	boolean b = rechercher(x);
        	if( b )
        	    e.supprimerCourant();
        }
     
        /* Recherche une valeur dans la liste
         * Place le marqueur sur l'element si il est trouvé, sur l'element de valeur superieur sinon
         * Revoie true si l'element est trouvé, false sinon. */
        private boolean rechercher(T x)
        {
        	e.placerTete();
        	while( !e.estFini() )
        	{
        		T t = e.getElementCourant();
        		int r = t.compareTo(x);
        		if( r == 0 )
        			return true;
        		else if( r > 0 )
        			return false;
        		else
        			e.placerSuivant();
        	}
        	return false;
        }
     
        public void afficher()
        {
        	System.out.print( e.getTaille() + " elements : { ");
        	e.placerTete();
        	while( !e.estFini() )
        	{
        		System.out.print(e.getElementCourant() + " ");
        		e.placerSuivant();
        	}
        	System.out.println("}");
        }
    }
    et voici l'énoncé de ce qu'il me reste a faire:
    Ajoutez à l'implémentation ci-dessus les opérations suivantes sous formes de fonctions et non de méthodes ; toutes ces opérations créent un nouvel ensemble :
    NB : étant donnée que ces opérations sont programmées dans l'implémentation, vous devez
    tirer parti de la représentation interne et en particulier du fait que les listes sont triées
    par ordre croissant pour écrire des algorithmes efficaces.
    • union de deux ensembles
    • intersection de deux ensembles
    • différence de deux ensembles.
    J'ai souligné le passage qui me dérange, je ne vois pas comment mettre des fonctions utilisables dans la class (tout en gardant la généricité), j'ai essayé des:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public static Ensemble<T> union(Ensemble<T> a, ensemble<T> b)
    ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public static Ensemble union(Ensemble a, ensemble b)
    mais j'ai à chaque fois des erreurs.

    Pourriez vous m'indiquer comment mettre en places ces fonctions ?
    merci d'avance.

    ps: si vous voyez des erreurs/améliorations de codage dans la class, je suis preneur aussi

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par orochimaru Voir le message
    J'ai souligné le passage qui me dérange, je ne vois pas comment mettre des fonctions utilisables dans la class (tout en gardant la généricité), j'ai essayé des:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public static Ensemble<T> union(Ensemble<T> a, ensemble<T> b)
    ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public static Ensemble union(Ensemble a, ensemble b)
    mais j'ai à chaque fois des erreurs.

    Pourriez vous m'indiquer comment mettre en places ces fonctions ?
    merci d'avance.
    Petit détail : en Java on parle plutôt de méthode static et non pas de fonction...


    Sinon ton problème vient du fait que tu essayes d'utiliser le paramétrage Générics de l'instance de la classe... alors que tu es dans une méthode static totalement indépendante...

    Il faut utiliser les Generics au niveau de la méthode uniquement comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public static <E> Ensemble<E> union(Ensemble<E> a, ensemble<E> b)
    On utilisera de préférence une lettre différente pour éviter les conflits

    Citation Envoyé par orochimaru Voir le message
    ps: si vous voyez des erreurs/améliorations de codage dans la class, je suis preneur aussi
    Pas trop regardé... mais le nom de tes variables et attributs laisse à désirer : Par exemple il est difficile de savoir à quoi correspond "e" lors de la relecture du code, sans avoir à aller le vérifier. Un simple "list" aurait déjà été plus clair

    a++

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 66
    Points : 37
    Points
    37
    Par défaut
    Merci pour ton aide,

    quand je tape ce que tu me propose, j'ai ce message d'erreur;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Bound mismatch: The type E is not a valid substitute for the bounded parameter <T extends Comparable<T>> of the type Ensemble<T>
    Et il me faudra certainement ajouter des methodes pour accéder aux éléments de l'ensemble afin de réaliser ces methodes statiques, non ?

  4. #4
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Il faudrait avoir un peu plus de détail sur l'erreur...

    a++

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 66
    Points : 37
    Points
    37
    Par défaut
    Et bien dans eclipse, devant la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public static <E> Ensemble<E> union(Ensemble<E> a, Ensemble<E> b)
    Les "E" sont soulignés en rouge (sauf le premier),
    il y a une croix rouge devant la methode qui lorsque l'on clique dessus indique
    Bound mismatch: The type E is not a valid substitute for the bounded parameter <T extends Comparable<T>> of the type Ensemble<T>
    trois fois (une fois pour chaque "E").

  6. #6
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Je n'avais pas fait gaffe au paramétrage de la classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public class Ensemble<T extends Comparable<T>>
    Il faut bien sûr que le paramétrage de la methode soit compatible, donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public static <E extends Comparable<E>> Ensemble<E> union(Ensemble<E> a, Ensemble<E> b) {
    a++

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 66
    Points : 37
    Points
    37
    Par défaut
    Ça fonctionne très bien, merci beaucoup.

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

Discussions similaires

  1. Response.Redirect dans une fonction dans une classe
    Par jpower dans le forum ASP.NET
    Réponses: 14
    Dernier message: 24/08/2007, 10h45
  2. Vérifier existence fonction dans une classe
    Par zoparg dans le forum Langage
    Réponses: 2
    Dernier message: 17/02/2007, 14h29
  3. [POO] Fonctions dans une classe abstraite
    Par Seth77 dans le forum Langage
    Réponses: 4
    Dernier message: 27/06/2006, 14h21
  4. Appel de fonction dans une classe
    Par saint-pere dans le forum Langage
    Réponses: 3
    Dernier message: 08/05/2006, 23h13
  5. Appel de fonction dans une classe
    Par Seth77 dans le forum Langage
    Réponses: 8
    Dernier message: 16/01/2006, 11h32

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