Вы находитесь на странице: 1из 2

Consortium International e-Miage

&
Université de Picardie Jules Verne d’Amiens

EXAMEN Code du Module: B211


Session de décembre 2018 Intitulé du module: Programmation orientée objet (Java)
Nombre de pages :2 Nom de l’enseignant: Sébastien Choplin
Durée de l’épreuve : 2 heures - Chaque exercice est sur 5 points.
Aucun support autorisé (ni papier, ni matériel électronique, ...)

Exercice 1 : Tableau
En langage JAVA, en utilisant des tableaux :
1. Écrire une méthode permettant d'obtenir la /**
position de la plus petite valeur contenue dans un * @param tab : le tableau des valeurs
tableau d'entiers passé en paramètre. * @return : position de la plus petite des valeurs
Exemples : **/
 plusPetit([0,2,-5,4]) doit renvoyer 2 public static int plusPetit(int[] tab);
 plusPetit([3,2, 5,4]) doit renvoyer 1
 plusPetit([2,2, 5,4]) doit renvoyer 0 Signature de la méthode
2. Écrire une méthode qui renvoie un tableau
contenant les valeurs d’un tableau passé en /**
* @param tab : le tableau des valeurs
paramètre sans la plus petite valeur (s’il y en a
* @return : même tableau sans la valeur la plus petite
plusieurs, on ne l’enlève qu’une fois). **/
Exemples :
public static int[] reduit(int[] tab);
 reduit([0,2,-5,4]) doit renvoyer [0,2,4]
 reduit([2,2, 5,4]) doit renvoyer [2,5,4]
Signature de la méthode
Conseil : réutiliser la méthode plusPetit.
3. Écrire un programme (méthode ‘main’) réutilisant ces méthodes pour afficher la
somme des 2 plus petites valeur d’un tableau.
Par exemple : pour [1,2,-5,4] , le programme doit afficher « trouvé : -4 »

Exercice 2 : Polymorphisme public abstract class Animal {


/** @return le cri de l’animal **/
Voici une classe abstraite «Animal» : public abstract String getCri() ;
1. Écrire les classes Java «Chat», « Chien » /** @return le nom de l’animal **/
public abstract String getNom() ;
héritant de la classe abstraite «Animal». @Override
2. Quelles seraient les modifications à public String toString() {
apporter si «Animal» était une interface ? return "je suis un " + getNom() +
" et je " + getCri();
3. Écrire une classe « Ferme » représentant un }
groupe d’animaux qui serait composée de }
plusieurs objets «Animal» (tableau ou collection).
4. Dans la classe « Ferme » : écrire des méthodes pour ajouter, supprimer des animaux.
5. Dans la classe « Ferme » : écrire une méthode pour afficher (en réutilisant la
méthode toString() de « Animal ») l’ensemble des objets « Animal » contenus
dans l’objet.

1/2
Exercice 3 : Exceptions
1. A quoi servent les instructions «catch» et « finally » dans l'instruction
« try – catch - finally »?
Voici une interface :
public interface Calculateur {
/** Calcul la division entière de a par b
* @return : a/b
* @throws IllegalArgumentException si b vaut 0
**/
public int division(int a,int b) throws IllegalArgumentException;
}

2. Écrire une implémentation de cette interface en gérant l’exception.


Voici l’implémentation de la classe Exception dont toutes les « exceptions » doivent
hériter :
public class Exception extends Throwable {
public Exception() {
}
public Exception(String message) {
super(message);
}
public Exception(String message, Throwable cause) {
super(message, cause);
}
public Exception(Throwable cause) {
super(cause);
}
}
3. Écrire une classe « DivisionParZeroException » héritant de « Exception » et réécrire
l’interface et l’implémentation en utilisant cette exception à la place de
« IllegalArgumentException ».

Exercice 4 : Questions Java


1. Qu'est qu'une « classe abstraite » ?
2. Qu’est-ce que le « bytecode Java » ?
3. A quoi sert le mot-clef « final » dans la déclaration d'un attribut ?
4. A quoi sert le mot-clef « final » dans la déclaration d'une méthode ?
5. Trouver 3 erreurs dans ce code provoquant une erreur à la compilation, expliquer
pourquoi :
public abstract class Toto {
private final int v;
protected Toto(int vv) {
this.v = vv;
}
public int getV() { return vv; }

public void setV(int vv) { this.v = vv; }

public void double() { return this.v*2; }

public static void main(String[] args) {


Toto o = new Toto(3);
System.out.println(o.getV());
}
}
2/2

Вам также может понравиться