M1 GI – EC726 (Programmation avancée) Durée : 2 heures

M1 GI – EC726 Num´
ero d’´
etudiant : .......................
M1 GI – EC726 (Programmation avanc´
ee) Dur´
ee : 2 heures
7 janvier 2016
Remarques :
Les supports et les notes de cours sont autoris´
es,
Les calculatrices et t´
el´
ephones portables sont interdits,
Le bar`
eme est fourni `
a titre indicatif,
— L´
enonc´
e comporte 1 feuille recto-verso.
Cette feuille d’´
enonc´
edoit ˆ
etre rendue avec la copie.
1 Questionnaire `
a choix multiples (6 points)
Une r´
eponse juste vaut 1/2 point. Pour certaines questions, plusieurs choix peuvent ˆ
etre valides.
1. Pour compiler une classe nomm´
ee MaClasse, la ligne de commande associ´
ee sera :
2javac MaClasse.java 2javac MaClasse.class
2java MaClasse.class 2java MaClasse
2. Pour ex´
ecuter une classe nomm´
ee MaClasse, la ligne de commande associ´
ee sera :
2javac MaClasse.java 2javac MaClasse.class
2java MaClasse.class 2java MaClasse
3. Dans la signature d’une m´
ethode d’une classe, quel mot cl´
e permet de sp´
ecifier que cette derni`
ere
est susceptible de lever une exception ?
2try 2catch 2throws 2throw
4. Soit une classe MaClasse dont un des attributs est nomm´
emonAttribut. Soit une classe MaSous-
Classe qui h´
erite de MaClasse. Pour que monAttribut soit accessible directement par MaSousClasse
sans accesseur, quel doit ˆ
etre le mot-cl´
e`
a associer `
amonAttribut ?
2public 2private 2protected 2rien
Les questions suivantes se r´
ef´
ereront `
a l’extrait de programme suivant :
public class MaFenetre extends JFrame implements ActionListener { ... }
5. MaFenetre est :
2Une classe 2Une interface 2Un objet 2Un constructeur
6. JFrame est :
2Une classe 2Une interface 2Un objet 2Un constructeur
7. ActionListener est :
2Une classe 2Une interface 2Un objet 2Un constructeur
8. Le fichier dans lequel se trouve cet extrait de programme est nomm´
e :
2Peu importe 2mafenetre.java 2MaFenetre.java 2MaFenetre.class
1
9. JFrame h´
erite de :
2MaFenetre 2JFrame 2ActionListener 2Object
10. MaFenetre h´
erite de :
2MaFenetre 2JFrame 2ActionListener 2Object
Soit la classe Math faisant partie de l’API Java. Cette classe poss`
ede une m´
ethode pow, qui calcule le
nombre abdont la signature est la suivante : public static double pow(double a,double b)
11. Quel est le type de la valeur retourn´
ee par la m´
ethode pow ?
2public 2static 2double 2pow
12. Nous souhaitons exploiter cette m´
ethode dans un de nos programmes pour calculer 210. Quelles
sont les utilisations correctes de pow ?
2double res = pow(2,10);
2double res = Math.pow(2,10);
2a=2; b=10; double res = double pow(double a, double b);
2a=2; b=10; double res = double Math.pow(double a, double b);
2 Questions de synth`
ese (4 points)
1. Quel est, en programmation orient´
ee objet, le rˆ
ole d’un constructeur. Quel est son lien avec
les objets d’une part et les classes d’autre part ?
2. Quels sont, selon vous, les avantages `
a utiliser l’h´
eritage en programmation orient´
ee objet ?
3 Exercices (10 points)
3.1 Compr´
ehension de programme (5 points)
Nous consid´
erons le code source pr´
esent´
e dans le listing 1 page suivante. Apr`
es avoir tent´
e de compi-
ler une premi`
ere fois ce programme, nous obtenons le message suivant :
ExitApp.java:6: error: ExitButton is not abstract and does not override abstract
method actionPerformed(ActionEvent) in ActionListener
class ExitButton extends JButton implements ActionListener {
ˆ
1 error
Questions
1. Que signifie l’erreur du compilateur ? A quelle ligne est elle survenue ?
2. Indiquer les modifications `
a r´
ealiser sur le programme pour que ce dernier compile.
3. Tracer le diagramme de classes associ´
e`
a ce programme. En particulier, on fera apparaˆ
ıtre les
classes JFrame,JButton,ActionListener,ExitButton,ExitApp. Les deux derni`
eres classes de
la liste devront apparaˆ
ıtre sous forme de classes document´
ees, contrairement aux 3 premi`
eres
classes qui seront non document´
ees.
4. Selon vous, que fait ce programme ?
2
1import j a v a x . s win g . J B u t t o n ;
import j a v a x . swing . JFram e ;
import j a v a . aw t . e v e n t . A c t i o n E v e n t ;
import j a v a . awt . e v e n t . A c t i o n L i s t e n e r ;
6class ExitButton extends JButton implements
ActionListener {
public E x i t B u t t o n ( ) {
super ( ) ;
setText ("Emergency Exit" ) ;
addActionListener ( t h i s ) ;
11 }
p u b l i c v oi d a c t io n D o n e ( A c t i o n E v e n t e ) {
System . e x i t ( 0 ) ;
}
16 }
p u b l i c c l a s s ExitApp {
s t a t i c p u b l i c v o id main ( S t r i n g [ ] a r g s ) {
J B u t t o n e x i t = new E x i t B u t t o n ( ) ;
21 JFrame fra m e = new JFrame ( ) ;
fr a m e . add ( e x i t ) ;
fr ame . s e t S i z e ( 2 0 0 , 1 0 0 ) ;
fr a m e . s e t V i s i b l e ( t r u e ) ;
}
26 }
Listing 1 – La classe ExitApp
3.2 Conception de classe (5 points)
Nous souhaitons cr´
eer une classe repr´
esentant des nombres complexes. Ces derniers ont deux parties :
une partie r´
eelle et une partie imaginaire et sont not´
es sous la forme c=a+ib o`
uaest la partie r´
eelle
et bla partie imaginaire. Vous pourrez, au choix, compl´
eter le listing 2 page suivante ou l’´
ecrire le
programme r´
esultant sur votre copie.
Questions
1. Quels sont les attributs n´
ecessaires au fonctionnement de votre classe ? Avec quels types les
d´
eclarerez vous ? Compl´
eter la partie A avec les instructions pour d´
eclarer vos attributs.
2. Nous souhaitons disposer de deux constructeurs diff´
erents afin de pouvoir initialiser nos objets
repr´
esentant des nombres complexes. Le premier, sans param`
etre, affecte une valeur nulle aux
parties r´
eelle et imaginaire. Le second prend deux param`
etres permettant de donner des valeurs
aux parties r´
eelle et imaginaire. ´
Ecrire ces deux constructeurs (partie B du listing).
3. ´
Ecrire une m´
ethode appel´
ee display permettant d’afficher le nombre complexe sous la forme
a+ib (partie C du listing).
4. ´
Ecrire deux m´
ethodes de calcul sur les nombres complexes. La premi`
ere m´
ethode, nomm´
e
add prendra en param`
etre un nombre complexe, l’additionnera `
a l’objet poss´
edant la m´
ethode
et retournera en r´
esultat un nombre complexe. La deuxi`
eme m´
ethode, nomm´
emult prendra en
param`
etre un nombre complexe, le multipliera `
a l’objet poss´
edant la m´
ethode et retournera en
r´
esultat un nombre complexe.
3
Rappel : Soient C=a+ib et L=m+in deux nombres complexes, leur somme sera : S=
C+L= (a+m) + i(b+n)et leur produit sera : P=C×L= (am bn) + i(bm +an).
p u b l i c c l a s s ComplexNumber {
/ /P a r t i e A : d ´
e c l a r a t i o n des a t t r i b u t s //
4
/ /P a r t i e B : d ´
e c l a r a t i o n des c o n s t r u c t e u r s //
9
14
19
/ /P a r t i e C : a f f i c h a g e d ’ un nombre c o m p l e x e //
24
/ /P a r t i e D : f o n c t i o n s de c a l c u l //
29
34
39
44
}
Listing 2 – La classe ComplexNumber
4
1 / 4 100%