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 :

Exercice débutant Java


Sujet :

avec Java

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 10
    Points : 4
    Points
    4
    Par défaut Exercice débutant Java
    Bonjour,

    J'ai quelques difficultés avec cet exercice:

    Soit la classe Garage contenant une collection de voitures. On vous donne uniquement l'entête de cette classe et de 2 de ses méthodes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public class Garage implements Iterable<Voiture>{
            //ajoute au garage les voitures de la collection en paramètre
            public void ajouterVoitures(Collection voitures){}
            //ajoute dans la collection en paramètre les voitures du garage de la
            // couleur en paramètre
            public extraireVoitures(Collection voitures,Couleur couleur){}
    }
    Q1.Préciser le paramètre de généricité du type Collection pour le paramètre voitures pour les 2 méthodes
    ajouterVoiture et extraireVoiture. Veiller à garder la souplesse de l'héritage
    Q2.On considère une classe cliente utilisant la classe garage. Donner le code de la méthode d'affichage
    complet d'un garage en réutilisant la représentation textuelle de base de chaque voiture. L'entête de la méthode a codé est la suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    private static void afficherGarage(Garage garage){ ... }
    Déjà j'ai du mal à comprendre l'énnoncé de la question Q1...

    Je vous remercie d'avance pour votre aide !

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Dans la question 1, on te demandes de paramétrer l'argument de type collection, tu sais le "truc" entre <> qu'on met à la fin du nom de la classe, pour paramétrer le type des objets qui sont dans la collection. On te précise que ce "truc" devra respecter un maximum de généricité par rapport aux notions d'héritages (sous-entendu par rapport à des classes héritant de Voiture).

    Plus de détails sur la notion de paramètres génériques dans ce tutoriel.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    ça reviendrait à avoir ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public void ajouterVoitures(Collection<Voiture> voitures){}

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Pas tout à fait, bien que ce soit la bonne voie, parce que là je ne peux pas passer une List<Ferrari> par exemple

  5. #5
    Membre chevronné
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Points : 1 855
    Points
    1 855
    Par défaut
    puis-je te demander d'où tu sors cet exercice?
    ça m'intéresse bougrement de le savoir
    J'ai des principes: je peux toujours trouver une bonne raison pour les contredire .... mais j'ai des principes!
    (mon excellent bouquin sur Java : https://eska-publishing.com/fr/livre...822407076.html)

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    c'est un exercice fait par des profs de mon école d'ingénieur

  7. #7
    Membre chevronné
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Points : 1 855
    Points
    1 855
    Par défaut
    Citation Envoyé par bourito77 Voir le message
    c'est un exercice fait par des profs de mon école d'ingénieur
    si je puis me permettre: quelle Ecole?
    J'ai des principes: je peux toujours trouver une bonne raison pour les contredire .... mais j'ai des principes!
    (mon excellent bouquin sur Java : https://eska-publishing.com/fr/livre...822407076.html)

  8. #8
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    EISTI à cergy pontoise

  9. #9
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par professeur shadoko Voir le message
    puis-je te demander d'où tu sors cet exercice?
    ça m'intéresse bougrement de le savoir
    Ha, je vois un prof qui s'est fait pomper ses cours par un autre prof sans prévenir

  10. #10
    Membre chevronné
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Points : 1 855
    Points
    1 855
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Ha, je vois un prof qui s'est fait pomper ses cours par un autre prof sans prévenir
    pas tout à fait: je dis explicitement que mes cours sont à réutiliser/détourner/enrichir par ceux qui les suivent .... je suis juste curieux de savoir où ils sont passés
    D'ailleurs quand je serais à la retraite j'espère mettre en open-source un gros paquet de modules de cours Java ... (pas un bouquin, pas une publication sur le web: je pense que la relation pédagogique est essentielle si on veut faire les choses bien. Donc je compte sur d'autres formateurs pour pomper, corriger, enrichir ce cursus ... si ça leur convient)
    (+ l'exemple ressemble effectivement à une série d'exos que j'ai donnée depuis longtemps... mais il est très possible que les mêmes idées se retrouvent .... donc c'est juste de la curiosité)
    donc bourito tu peux juste demander (innocemment) à ton prof si, par hasard, il n'aurait pas eu un jour un prof. connu pour rouler en monocycle
    J'ai des principes: je peux toujours trouver une bonne raison pour les contredire .... mais j'ai des principes!
    (mon excellent bouquin sur Java : https://eska-publishing.com/fr/livre...822407076.html)

  11. #11
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Points : 13 670
    Points
    13 670
    Par défaut
    Citation Envoyé par professeur shadoko Voir le message
    donc bourito tu peux juste demander (innocemment) à ton prof si, par hasard, il n'aurait pas eu un jour un prof. connu pour rouler en monocycle
    [HS]Et surtout qui ressemble à un ourson..[/HS]
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  12. #12
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    La prof en question a suivit ses cours au Havre, donc ça dépend ou tu avais enseigné.

    Et pour revenir au sujet initial, en fait il y'a a un point en plus que je ne comprends pas
    c'est "collection" j'ai déjà utilisé "Collections" avec un "s" mais pas sans.

    Je sais que dans le diagramme avec les set, list etc.. c'est au dessus mais après comment ça marche je sais pas ...

  13. #13
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Ben comme à chaque fois que dans le diagramme, c'est au-dessus.

    Tu sais comment ça marche avec Voiture et Ferrari extends Voiture ?

    Eh ben pareil entre Collection et List extends Collection.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  14. #14
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    et ça veut dire aussi que si par exemple je me une liste de voiture dans la méthode
    ajouter voiture ça marche ? (enfin liste, set...)

    Donc faudrait un truc comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public void ajouterVoitures(Collection<?> voitures){}
    Comme ça on met ce qu'on veut

  15. #15
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par bourito77 Voir le message
    et ça veut dire aussi que si par exemple je me une liste de voiture dans la méthode
    ajouter voiture ça marche ? (enfin liste, set...)
    Oui.

    Citation Envoyé par bourito77 Voir le message
    Donc faudrait un truc comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public void ajouterVoitures(Collection<?> voitures){}
    Comme ça on met ce qu'on veut
    Sauf que, mettre ce que tu veux est contradictoire avec le fait que Garage implements Iterable<Voiture>.
    Ça veut dire que quand on liste le contenu du garage, on doit obtenir des Voiture, pas des Choucroute, des TraiteDePaix ou des Socket. D'une manière ou d'une autre il y a un endroit où ça marcherait pas.

    On peut obtenir des Ferrari, tout simplement parce que Ferrari extends Voiture et donc qu'on peut mettre une Ferrari dans une variable de type Voiture.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  16. #16
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    J'ai du mal à comprendre, comme ça se fait que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public void ajouterVoitures(Collection<Voiture> voitures){}
    ne marche pas ? si au final on peut mettre une ferrari dans une variable de type voiture

  17. #17
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Parce qu'on ne peut pas mettre une Voiture dans une variable de type Ferrari.

    Et donc si tu fais une List<Ferrari>, tu ne peux pas la passer à ta méthode public void ajouterVoitures(Collection<Voiture> voitures).
    Parce qu'une telle méthode pourrait contenir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public void ajouterVoitures(Collection<Voiture> voitures) {
      voitures.add(new Voiture());
    }
    et que ce n'est pas possible d'ajouter new Voiture() dans une List<Ferrari>. On pourrait y ajouter à la rigueur des Ferrari, mais il ne peut pas être possible d'y mettre des Voiture.

    En l'occurrence, tu n'as pas envie d'ajouter des voitures à ta variable voitures. Mais si tu mets Collection<Voiture> tu permets de le faire. Donc ça ne peut pas aller.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  18. #18
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    Ah ok, je crois que j'ai compris

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public void ajouterVoitures(Collection<? extends Voiture> voitures){}
    La ça marche pour la ferrari, et on aura pas un type Choucroute/TraiteDePaix

  19. #19
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Voilà, avec cette signature, tu dis au compilateur: c'est une Collection typée, je peux te garantir que le type est Voiture ou un Descendant, mais j'ignore quel est le type, du coup fait avec et assure toi que je peux vraiment appeler les méthodes que je veux appeler.

    Avec la signature Collection<Voiture> tu dis au compilateur "c'est typé exactement pour le type voiture". Du coup je pourrais jamais filer une List<Ferrari> à la méthode. Avec les Generic, t'es obligé de penser dans les deux sens


    Maintenant, si tu avais cette méthode: ajouterUneFerrari, tu serais obligé de prendre une Collection qui accepte une Ferrari, pas une Collection de ? extends Ferrari (je ne peux pas mettre n'importe quelle Ferrari dans une Collection<FerrariF355>) ou de ? extends Voiture (je ne peux pas mettreune Ferrari dans un Set<Renault>). Bien sur, une Collection de Voiture toutes simple serait aussi acceptable, donc on utilise le super:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public void ajouterUneFerrari(Collection<? super Ferrari> vehicules){
        vehicules.add(new Ferrari());
    }

Discussions similaires

  1. Exercice débutant JAVA
    Par ovz974 dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 12/03/2014, 13h02
  2. Exercice débutant sur Java
    Par neufrdb dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 31/01/2011, 09h17
  3. [Débutant][Java] Web Service
    Par ArseNic dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 14/11/2005, 11h09
  4. [Débutant] java.lang.object
    Par bonnefr dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 27/05/2004, 14h54
  5. [débutante][java]connection internet PPC\PC de bureau
    Par Emma20 dans le forum Développement
    Réponses: 2
    Dernier message: 19/05/2004, 14h01

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