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 :

Créer et utiliser un adaptateur de classe


Sujet :

Langage Java

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    consultant informatique
    Inscrit en
    Août 2018
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : consultant informatique

    Informations forums :
    Inscription : Août 2018
    Messages : 172
    Points : 0
    Points
    0
    Par défaut Créer et utiliser un adaptateur de classe
    J'ai un problème en java que j'ai du mal à résoudre ,c'est sur les adaptateurs de classe ,voici
    le problème en question:
    La classe WidgetRunner est conçue pour stocker et exécuter des objets de types Widget.
    Malheureusement vous utilisez des classes issues d'un autre packet qui ne sont pas des Widget.il s'agit des classes ThirdPartySubtraction et ThirdPartyDivision.
    Le but de l'exercice est de stocker des instances de ces classes dans un objet Widget et que leur méthodes de calcul soient exécutées par la méthode WidgetRunner.runWidgets( ).Vous ne devez ni modifiez la classe WidgetRunner ni créer un cas spécial pour les objets de type ThirdPartySubtraction ou ThirdPartyDivision.
    Créez une instance de type ThirdPartySubtraction et de type ThirdPartyDivision,puis trouvez une solution pour que l'objet WidgetRunner stocké dans la propriété this.runner puisse stocker une référence à ces instances et utilise leur méthode calculate() lors de l'exécution de WidgetRunner.runWidgets( ).

    Voici le code à compléter:

    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
    public class ExerciceImpl {
     
        final WidgetRunner runner = new WidgetRunner();
     
        public void runExercise( String[] argv ) throws Exception {
            this.runner.storeWidget( new AdditionWidget() );
     
            // créez une instance de ThirdPartySubtraction
            // et de  ThirdPartyDivision
            // Trouvez un moyen de stocker ces instances dans this.runner
            // pour que leur méthode calculate() puisse être exécutée lorsque runWidgets() est appelé
     
            /*----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------*/
     
            /**** Entrez votre code ici ****/
     
            /*----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------*/
            this.runner.runWidgets( 4, 5 );
        }
    }
     
    class WidgetRunner {
        private ArrayList<Widget> widgets = new ArrayList<Widget>();
     
        public void runWidgets( int a, int b ) {
            for ( Widget widget : this.widgets ) {
                System.out.println( widget.calculate( a, b )+"<br />" );
            }
        }
     
        public void storeWidget( Widget w ) {
     
            this.widgets.add( w );
        }
    }
     
    abstract class Widget {
        abstract public int calculate( int a, int b );
    }
     
    class AdditionWidget extends Widget {
     
        public int calculate( int a, int b ) {
     
            return a + b;
        }
    }
     
    class ThirdPartySubtraction {
     
        public int mycalculation( int a, int b ) {
     
            return a - b;
        }
    }
     
    class ThirdPartyDivision {
        public int doCalc( int a, int b ) {
     
            return a / b;
        }
     
    }
    Voici le code que j'ai proposé:

    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
    public class ExerciceImpl {
     
        final WidgetRunner runner = new WidgetRunner();
     
        public void runExercise( String[] argv ) throws Exception {
            this.runner.storeWidget( new AdditionWidget() );
     
            // créez une instance de ThirdPartySubtraction
            // et de  ThirdPartyDivision
            // Trouvez un moyen de stocker ces instances dans this.runner
            // pour que leur méthode calculate() puisse être exécutée lorsque runWidgets() est appelé
     
            /*----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------*/
     
            ThirdPartySubtraction tps=new ThirdPartySubtraction();
            ThirdPartyDivision tpd=new ThirdPartyDivision();
     
            /*----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------*/
            this.runner.runWidgets( 4, 5 );
        }
    }
    Comme l'a suggeré l'énoncé, j'ai créé les instances de ThirdPartySubtraction et de ThirdPartyDivision,mais je ne sais pas comment stocker ces instances
    dans this.runner pour que leur méthode calculate( ) puisse être executée lorsque runWidgets( ) est appelé.

    Avez vous une idée?

  2. #2
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2013
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

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

    Informations forums :
    Inscription : Octobre 2013
    Messages : 131
    Points : 203
    Points
    203
    Par défaut
    Je te conseille de regarder du cote du design pattern : https://www.tutorialspoint.com/desig...er_pattern.htm

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    consultant informatique
    Inscrit en
    Août 2018
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : consultant informatique

    Informations forums :
    Inscription : Août 2018
    Messages : 172
    Points : 0
    Points
    0
    Par défaut
    Bonjour,
    J'ai regardé le lien que tu m'as donné https://www.tutorialspoint.com/desig...er_pattern.htm et j'en
    ai déduit le code suivant:

    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
    public class ExerciceImpl5 {
     
        final WidgetRunner runner = new WidgetRunner();
     
        public void runExercise( String[] argv ) throws Exception {
            this.runner.storeWidget( new AdditionWidget() );
     
            // créez une instance de ThirdPartySubtraction
            // et de  ThirdPartyDivision
            // Trouvez un moyen de stocker ces instances dans this.runner
            // pour que leur méthode calculate() puisse être exécutée lorsque runWidgets() est appelé
     
            /*----------NE MODIFIEZ PAS LE CODE AU DESSUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------*/
     
            ThirdPartySubtraction tps=new ThirdPartySubtraction();
            ThirdPartyDivision tpd=new ThirdPartyDivision();
            class FinalWidget extends Widget {
     
                @Override
                public int calculate(int a, int b) {
                    return 0;
                }
            }
     
            /*----------NE MODIFIEZ PAS LE CODE EN DESSOUS DE CETTE LIGNE, IL SERA REINITIALISE LORS DE l'EXECUTION----------*/
            this.runner.runWidgets( 4, 5 );
        }
    }
    Qu'est ce que tu en penses?

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 565
    Points : 21 630
    Points
    21 630
    Par défaut
    Hello,

    je ne te vois pas stocker quoi que ce soit.

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    consultant informatique
    Inscrit en
    Août 2018
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : consultant informatique

    Informations forums :
    Inscription : Août 2018
    Messages : 172
    Points : 0
    Points
    0
    Par défaut
    En fait c'est parce que je ne comprends pas,je dois stocker dans un Map ou Hashmap
    ou bien comment je dois stocker et où je dois stocker, c'est ça qui me pose problème,
    avez vous une idée svp?

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 565
    Points : 21 630
    Points
    21 630
    Par défaut
    Tu dois le stocker directement dans l'adaptateur. Les Maps c'est pour stocker plein de choses, là tu n'as qu'une seule chose à stocker. Alors fais comme d'habitude quand tu as besoin qu'une classe contienne une chose.

    L'exemple qui était donné dans l'URL du dessus était peut-être un peu trop compliqué. Contente-toi donc de celui de Wikipédia, c'est simple et c'est l'exemple type d'un adaptateur.

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    consultant informatique
    Inscrit en
    Août 2018
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : consultant informatique

    Informations forums :
    Inscription : Août 2018
    Messages : 172
    Points : 0
    Points
    0
    Par défaut
    j'ai regardé l'exemple de Wikipedia c'est du C++ et du C# ,il n'y a pas de java

  8. #8
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 565
    Points : 21 630
    Points
    21 630
    Par défaut
    ... Et alors ?

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    consultant informatique
    Inscrit en
    Août 2018
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : consultant informatique

    Informations forums :
    Inscription : Août 2018
    Messages : 172
    Points : 0
    Points
    0
    Par défaut
    Et alors? Mon exercice sur les adaptateurs est en java,donc je ne pourrai pas exploiter l'exemple
    de wikipédia car c'est du C++ et du C#.
    Et moi je fais du java , je ne connais donc pas le C++ et le C#,ça sera dur pour moi de faire le
    rapprochement.
    à moins que je traduise le C++ ou le C# en java.

Discussions similaires

  1. débutant:utilisation de variable entre classe
    Par troojan dans le forum MFC
    Réponses: 1
    Dernier message: 07/12/2005, 23h31
  2. utiliser mysql++ dans une classe
    Par Yevetrovitch dans le forum Bibliothèques
    Réponses: 2
    Dernier message: 11/04/2005, 10h53
  3. Utilisation iterator avec une classe perso
    Par SteelBox dans le forum C++
    Réponses: 19
    Dernier message: 07/03/2005, 11h30
  4. [MFC] Comment créer et utiliser une base Access
    Par maitre hibou dans le forum MFC
    Réponses: 3
    Dernier message: 10/05/2004, 18h11
  5. Créer les get et set des classes
    Par cameleon2002 dans le forum JBuilder
    Réponses: 3
    Dernier message: 17/09/2003, 21h03

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