• Aucun résultat trouvé

LO43 - Examen final du 30 Juin 2011 Durée 2 heures – aucun document autorisé

N/A
N/A
Protected

Academic year: 2022

Partager "LO43 - Examen final du 30 Juin 2011 Durée 2 heures – aucun document autorisé"

Copied!
2
0
0

Texte intégral

(1)

LO43 - Examen final du 30 Juin 2011

Durée 2 heures – aucun document autorisé

Exercice 1. Considérons le schéma de conception (design pattern) Singleton.

1) Quel est l’intérêt de ce modèle dans une application ?

2) Compléter la définition de classe ci-dessous pour que le modèle fonctionne correctement, même lorsqu’il est utilisé via des threads concurrents. Compléter à l’endroit des pointillés (…).

class Singleton {

... Singleton unique = new Singleton();

private Singleton() {} // supprime le constr. public ... Singleton getInstance() {

return unique;

} }

3) Même question qu’en 2) avec la version suivante :

class Singleton {

... Singleton unique = null;

private Singleton() {} // supprime le constr. public ... Singleton getInstance() {

if (unique == null)

unique = new Singleton();

return unique;

} }

4) Donner un exemple d’utilisation et d’appel dans un programme.

Exercice 2. Considérons maintenant le schéma de conception Adapter définit suivant le modèle de classe suivant :

1) Quel est l’intérêt de ce modèle dans une application ?

2) Donner un exemple d’application de ce pattern en écrivant le code des différentes classes en Java. Vous pouvez reprendre l’exemple vu en cours avec les classes Point et Cercle. Préciser bien les classes écrites en Java avec méthodes et constructeurs. Donner également un exemple d’utilisation en langage Java.

(2)

Exercice 3. Considérons maintenant le schéma de conception Composite. Il a plusieurs intérêts.

Il permet la composition récursive d’objets, de représenter une hiérarchie d'objets, d’ignorer la différence entre un composant simple et un composant en contenant d'autres (interface uniforme).

1) Rappeler un exemple type d’application où ce schéma est utilisé.

2) Donner le modèle de classe UML de ce schéma de conception.

Exercice 4. Dessiner les diagrammes de classes correspondant aux situations suivantes.

1) Classer les relations suivantes en généralisation, agrégation, lien ou association.

(a) Un pays possède une capitale.

(b) Un philosophe qui dîne utilise deux fourchettes pour manger, sachant qu’ils sont cinq et qu’il y a cinq fourchettes sur la table.

(c) Un joueur de rugby est un avant, un demi ou un arrière.

(d) Une équipe de rugby est composée de 8 avants, 2 demis et 5 arrières.

2) Une galerie expose des œuvres, faites par des créateurs, et représentant des thèmes. Des clients accueillis par la galerie achètent des œuvres.

3) Un bateau contient des cabines, occupées par des personnes qui effectuent des activités. Les personnes sont ou bien des guides, ou bien des animateurs, ou bien des passagers. Les guides expliquent des visites aux passagers et les animateurs animent des animations pour les passagers.

Exercice 5. On considère un téléphone portable avec ses fonctions standards de communication. La touche « verte » du téléphone permet d’accepter la réception d’un appel ou de lancer un appel vers un destinatoire, sachant que le clavier alphanumérique comporte les dix chiffres de « 0 » à « 9 » pour la numérotation préalable. En plus de cela, un ensemble de menus permettent de configurer le téléphone. On se déplace dans un menu à l’aide des boutons « en bas », « en haut » et « ok ». Un menu particulier permet d’ajouter un nom dans le répertoire des numéros de téléphones. Une fois entré dans le menu « répertoire », l’utilisateur se sert des mêmes touches pour se déplacer, choisir la fonction d’ajout, saisir un nom, un numéro de téléphone, puis valider. Les touches du clavier alphanumérique fournissent l’alphabet. Donner un diagramme Etat/Transition spécifiant les aspects dynamiques des différents modes d’utilisation du téléphone portable en fonction des séquences d’appui-touche. On ne détaillera que les modes précisés ci-dessus (veille, numérotation, appel, réception, répertoire, saisie dans le répertoire). On attachera une importance particulière à proposer un diagramme bien lisible.

Exercice 6. Questions sur les threads.

1) Très brièvement, que signifient les 5 instructions suivantes dans un programme JAVA:

Synchronized(objet){}, Synchronized(this){}, this.wait(), objet.notify(), objet.notifyAll().

Expliquer les différences.

2) Si plusieurs threads accèdent à un même objet partagé pour lequel ils veulent obtenir l’accès exclusif, quelle est l’erreur commise si chacun d’eux exécute une instruction du style Synchronized(this){ // accès à l’objet …}. Corriger l’erreur, expliquer très brièvement.

Références

Documents relatifs

Un polynôme est considéré comme une liste de monômes ordonnée par degré croissant.. Un monôme est représenté par son coefficient et

2) La compagnie (classe Compagnie) et les véhicules (classe Véhicule) sont simulés par des Thread. La génération des demandes de transport est simulée par une classe Environnement,

Le but est de concevoir un programme de simulation en JAVA de l’optimisation en temps-réel des plans de routes suivis par des véhicules (en temps-réel) pour servir des demandes

Considérons le modèle Producteur/Consommateur avec plusieurs producteurs et plusieurs consommateurs, vu en cours. Nous voulons en donner une version implémentée par synchronisation

- touche clavier "ctrl" maintenue enfoncée avec choix à la souris d'un premier sommet puis d'un second sommet : les deux sommets sont fusionnés, les arcs précédents reliés

Le mouvement d'une patte se décompose en deux phases : en rétraction, le pied de la patte est posé sur le sol et le mécanique de la patte effectue un mouvement de l'avant

Exercice 4. Un télécopieur permettant d’envoyer et recevoir des fax comporte un clavier numérique, avec une touche de prise de ligne, un scanner pour lire les

Un avion est caractérisé par un numéro d’avion (code interne à la compagnie) et appartient à un certain type d’avion (par exemple : AIRBUS,