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:
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
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; } }
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
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 ); } }
dans this.runner pour que leur méthode calculate( ) puisse être executée lorsque runWidgets( ) est appelé.
Avez vous une idée?
Partager