Examen - Java - 2012 - 2013
Examen : Langage de programmation Java
Durée : 2 H
En cas d'ambiguïté dans le texte, levez cette ambiguïté en présentant votre interprétation personnelle.
Traitez les questions dans l'ordre de votre choix. N'oubliez pas de commenter vos programmes.
Exercice 1 : Questions de cours (5 pts)
- Donner la définition d'une Classe. (1 pt)
- Quelle est la différence entre une méthode en Java et une fonction en C ? (1 pt)
- Quelle est la différence entre une classe abstraite et une interface ? Quelle est la syntaxe Java pour définir une interface ? (1 pt)
- Quelle est la différence entre une collection de type ArrayList et une collection de type LinkedList? (1 pt)
- Pourquoi la machine virtuelle joue-t-elle un rôle important dans la plateforme Java ? (1pt)
Exercice 2 : QCM (5 pts)
Répondre par exemple par : "Q12 : Réponse 1 et 3"
- Que signifie le mot clef "static" associé à un attribut ?
- Que la valeur de cet attribut est constante
- Que cet attribut n'est visible que dans la classe où il est défini
- Que cet attribut sera toujours passé par valeur
- Que cet attribut a une valeur unique pour toutes les instances de la classe
- Au sujet du mot clef "abstract", quelle assertion est fausse ?
- Une classe abstraite ne peut être instanciée
- Une méthode abstraite n'a pas d'implémentation
- Une classe abstraite n'a pas forcément de classe fille
- Une classe abstraite doit contenir au moins une méthode abstraite
- Une interface en Java peut contenir :
- Des déclarations de méthodes et de constantes
- Des déclarations de méthodes
- Des déclarations de méthodes et de méthodes statiques
- Des déclarations de méthodes et de constructeurs
- Quelle différence existe t-il entre les interfaces List et Set ?
- Une List peut contenir une référence null, pas un Set
- Un Set peut contenir deux fois le même élément, pas une List
- Une List peut contenir deux fois le même élément, pas un Set
- Un Set peut contenir une référence null, pas une List
- Quel est le droit d'accès le plus restrictif pour donner l'accès aux membres d'une autre classe de même package ?
- public
- default access
- abstract
- protected
- La déclaration suivante : public class MaClass<T> {… } permet de définir...
- Rien du tout en java
- Un type générique
- Une classe abstraite dont la classe T hérite forcément
- Un type comparable avec le type T
- Dans quelle situation utilise t-on la séquence : try-catch-finally ?
- Pour traiter les exceptions
- Pour sortir du programme
- Pour déboguer le code
- Peut-on utiliser plusieurs blocs catch après un bloc try ?
- Vrai
- Faux
- Quelle instruction faut-il utiliser pour créer un nouveau tableau d'entiers de type int de 5 cases ?
- Array t = new Array ("int", 5);
- int t = new int[5];
- int[] t = new int[5];
- int[] t = new int[4];
- Array t = new int[5];
- Le code suivant...
import java.util.*; public class Test { public static void main(String args[]) { Set<Integer> s = new TreeSet<Integer>(); s.add(3); s.add(1); s.add('2'); System.out.println(s); } }
- ne compile pas.
- compile, mais lève une exception.
- compile, s'exécute et affiche "1".
- compile, s'exécute et affiche "[3,1,2]".
- compile, s'exécute et affiche "[1,2,3]".
Exercice 3 : (10 pts)
Les questions sont suffisamment expliquées. Si vous avez une remarque reportez-la sur votre copie, il en sera tenu compte.
On souhaite mettre en place la gestion des ventes d'articles électroménagers dans un magasin. La phase d'analyse/conception du problème a conduit au diagramme de classes suivant :
- Classe Article :
public class Article { protected int code; protected String nom; protected double prixHT; public Article(String nom, double prixHT) { // (1) A compléter } public double prixTransport() { return prixHT * 0.05; // 5% du Prix Hors Taxes de l'article } public String toString() { return this.code + " " + this.nom; } }
- Ecrire le constructeur de la classe article. Le code doit être unique pour chaque article. (1pt)
- Comment créer une instance de la classe Article ? (0,5pt)
- Quel est l'intérêt de redéfinir la méthode toString() dans toutes vos classes ? (1pt)
- Classe des articles Fragiles :
- Donner deux constructeurs de la classe Fragile à partir du constructeur de sa classe de base. l'un en précisant l'emballage l'autre non. (1pt)
- Le prix de transport d'un article fragile est deux fois le prix de transport normal d'un Article.
Redéfinir la méthode prixTransport() de la classe Fragile. (1pt)
- Peut-on écrire : Article tv = new Fragile ("LG", 7000.00);
Si oui, quel est le prix de transport de l'article tv ? (1pt)
- Classe Magasin (un ensemble d'articles électroménagers) :
- Quelle relation existe-t-il entre Magasin et Article ? (0,5pt)
- Ajouter les attributs nécessaires pour implémenter cette relation (vous choisirez de quel côté de la relation ajouter ces attributs). (1pt)
- La méthode add() permet d'ajouter un article et la méthode contains() vérifie si un article est disponible au magasin. Donner le plus simplement possible le code de ces deux méthodes. (2pt)
- Interface Exportable :
- Expliquer en quelques mots comment rendre nos articles exportables à l'étranger? (1pt)
Exercice 1 : Questions de cours
- Une classe est un modèle permettant de construire des objets qui ont le même comportement. On peut dire également une classe est moule permettent de construire des objets qui ont le même comportement.
- Une méthode en Java est utilisée pour modifier l’état d’un Objet et de renvoyer l’état d’un Objet. Une fonction en C est utilisée pour effectuer des calculs….. Une méthode est une fonction associée à un objet.
- Une classe abstraite est une classe qui contient au moins une seule méthode abstraite, par contre toutes les méthodes d’une interface sont abstraites.
- La différence entre ArrayList et LinkedList :
- ArrayList: est un tableau dynamique.
- LinkedList : est une liste chainée.
- La machine virtuelle permet :
- l'interprétation du bytecode.
- l'interaction avec le système d'exploitation.
- la gestion de sa mémoire grâce au ramasse miettes.
Exercice 2 : QCM
Q1 : Réponse 4
Q2 : Réponse 1, 2 et 3
Q3 : Réponse 1
Q4 : Réponse 1, 3
Q5 : Réponse 2
Q6 : Réponse 2
Q7 : Réponse 1
Q8 : Réponse 1
Q9 : Réponse 2
Q10 : Réponse 1
Exercice 3 :
1. La classe Article :
public class Article { protected int code; protected String nom; protected double prixHT; private static int comp; public Article(String nom, double prixHT) { this.code = ++comp; this.nom = nom; this.prixHT = prixHT; } public double prixTransport() { return prixHT * 0.05; // 5% du Prix Hors Taxes de l'article } public String toString() { return this.code + " " + this.nom; } }
2. Instance de la classe Article :
Article a = new Article("TV", 9000.00);
3. La méthode toString() permet de donner un aperçut d'un objet instancié.
Par exemple : affichage de la valeur des propriétés.
Article a = new Article("TV", 9000.00); System.out.println(a); //équivalent à System.out.println(a.toString());
4. Les deux constructeurs de la classe Fragile :
public Fragile(String nom, double prixHT) { super(nom, prixHT); } public Fragile(String emballage, String nom, double prixHT) { super(nom, prixHT); this.emballage = emballage; }
5. La méthode prixTransport de la classe Fragile :
public double prixTransport() { return 2 * super.prixTransport(); }
6. Oui, c'est le polymorphisme d'héritage.
Le prix sera : 700.00
7. La relation entre Article et Magasin est une relation d'association avec navigation dans un seul sens.
8. On doit ajouter une liste d'articles dans la classe Magasin :
public class Magasin { private List<Article> articles; }
9. Les méthodes add et contains :
public class Magasin { private List<Article> articles; public Magasin() { articles = new ArrayList<>(); } public void add(Article a) { articles.add(a); } public boolean contains(Article a) { for (Article art : articles) { if (art.getCode() == a.getCode()) { return true; } } return false; } }
10. Pour rendre un article exportable, la classe Article doit implémenter l'interface Exportable. Ensuite, on doit redéfinir les deux méthodes de l'interface pour :
- spécifier le pays de destination.
- régler les droits de douane.