INSA - 4 AE Dur´ee : 1H00
2007 – 2008
Contrˆole
Programmation Objet – Java
Correction
Consignes
Tous les documents sont autoris´es, mais ils seront peu utiles.
Indiquez vos nom et pr´enom sur chaque feuille.
Le corrig´e sera mis sur la page du cours dans la journ´ee.
Nom :
Pr´enom :
Bar`eme
Exercice Bar`eme Note Total partiel
Exercice 1 – Questions rapides 5 points
Exercice 2 – S´emantique de Java 10 points
Exercice 3 – Questions avanc´ees 5 points
Note globale : / 20
1
Exercice 1 5 points Questions rapides
Vrai / Faux
Pour dissuader les r´eponses au hasard, des points n´egatifs sont mis `a partir de trois r´eponses incor-
rectes (mieux vaut ne rien cocher lorsque l’on ne sait pas).
Vrai Faux
Exemple
Java signifie “caf´e”
Java appartient `a Bill Gates
Compilation
Eclipse est le seul moyen de compiler du Java
Si je compile une classe Bar qui utilise ma classe Foo, le compilateur a besoin du
fichier Foo.java
Si je compile une classe Bar qui utilise ma classe Foo, le compilateur a besoin du
fichier Foo.class
Si mon programme compile bien, en principe il ne provoquera pas d’exception `a
l’ex´ecution
Si mon programme compile bien, en principe il ne fera pas d’erreur de segmentation
(segfault, comme en C)
Environnement d’ex´ecution
Toute classe Java-standard (J2SE) doit contenir un main
Toute classe Java-embarqu´e (J2ME) doit contenir un main
Une classe Java-standard (J2SE) contenant un main est directement ex´ecutable par
la machine virtuelle Java une fois compil´ee.
Une classe Java-standard (J2SE) sans main est directement ex´ecutable par la ma-
chine virtuelle Java une fois compil´ee.
Pour qu’une classe Java-embarqu´e (J2ME) soit ex´ecutable sur un mobile, il est
n´ecessaire qu’elle contienne un main.
Pour qu’une classe Java-embarqu´e (J2ME) soit ex´ecutable sur un mobile, il est
n´ecessaire qu’elle h´erite d’une certaine classe.
2
Nom : Pr´enom :
Pr´ecision : en Java, une classe est un type.
Vrai Faux
Classes et objets (1)
En Java, les types int et Integer existent.
Le type int est un abr´eg´e pour la classe Integer
En Java, les types String et char* sont ´equivalents.
Les concepteurs des librairies Java aiment bien les identifiants `a rallonge comme
ByteArrayInputStream ou AnnotationTypeMismatchException.
void est un nom de classe, synonyme de Object
Classes et objets (2)
L’h´eritage (mot-clef extends) est une alternative `a new pour cr´eer de nouveaux
objets `a l’ex´ecution.
Il existe une classe dont Integer et String sont deux sous-types.
On reconnaˆıt le constructeur d’une classe `a ce qu’il porte le mˆeme nom que la classe.
Le constructeur d’une classe doit recevoir autant d’arguments que la classe a d’at-
tributs.
Une interface n’a pas de constructeur.
Il est possible de d´efinir deux constructeurs dans la mˆeme classe.
Il est possible de d´efinir deux m´ethodes avec le mˆeme nom dans la mˆeme classe.
Les programmeurs en langages `a objet sont souvent tr`es pointilleux sur le vocabu-
laire relatif `a la programmation objet.
Classes et objets (3)
Un objet, c’est essentiellement la mˆeme chose qu’un struct en C dans lequel on met
aussi des fonctions.
this repr´esente une classe (cocher Vrai) ou un objet (cocher Faux)
Si Java permettait l’h´eritage multiple (de plusieurs classes), on pourrait se passer
des attributs.
Quel que soit le probl`eme `a r´esoudre, une programmation `a objets (POO) est
toujours mieux adapt´ee que d’autres styles de programmation.
3
Nom : Pr´enom :
Exercice 2 10 points S´emantique de Java
Le programme constitu´e des deux classes ci-dessous compile correctement.
Pr´ecision : l’exception SecurityException est connue du compilateur par d´efaut, et n’a pas besoin
d’ˆetre signal´ee `a chaque m´ethode avec un throws
R´epondez aux questions de la page ci-contre. L’objectif est de v´erifier que vous maˆıtrisez la s´emantique
de Java, c’est-`a-dire la mani`ere pr´ecise dont un programme se d´eroule.
Soyez tr`es rigoureux, prenez votre temps ! (Vous pouvez librement griffonner le programme)
class Class A {
s t a t i c i nt al p ha = 0 ;
public i n t beta ;
Class A ( ) {be t a = alpha ; }
void f oo ( ) {
alpha++ ;
System . out . p r i n t l n ( ”Alpha= + alpha + ; Beta= + beta ) ;
}
void moo ( ) {throw new SecurityException () ;}
void zoo ( ) {
try {
th i s . f oo ( ) ;
th i s . moo ( ) ;
th i s . f oo ( ) ;
}catch ( Exception E) {
System . out . p r i n t l n ( ”GLOP! ” ) ;
}
}
}
class Class B extends Class A {
Clas s B ( ) {super ( ) ; }
void moo ( ) {
try {
i f (t h i s . beta >= 2) super . moo ( ) ;
}catch ( Exception E) {
System . out . p r i n t l n ( ”ATARI! ” ) ;
}
}
pub li c s t a t i c void main ( S t r i n g [ ] a r gs ) {
Class B b1 = new C lass B ( ) ;
b1 . zoo ( ) ;
Class B b2 = new C lass B ( ) ;
b2 . zoo ( ) ;
}
}
4
Qu’affiche le programme si je lance java Class B ?
Alpha=1 ;Beta=0
Alpha=2 ;Beta=0
Alpha=3 ;Beta=2
ATARI !
Alpha=4 ;Beta=2
Qu’affiche le programme si, apr`es la premi`ere ex´ecution, je lance une deuxi`eme fois java Class B ?
La mˆeme chose
Expliquez en quelques mots ce qui se passe si, dans la m´ethode zoo(), je remplace this.moo() par
seulement moo().
C¸a ne change rien.
Expliquez en quelques mots ce qui se passe si, dans la m´ethode zoo(), je remplace catch (Exception
E) par catch (SecurityException E).
C¸a ne change rien non plus.
5
1 / 6 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !