Td corrigé Examen final du 26 Juin 2008 ? LO43 - Moodle UTBM pdf

Examen final du 26 Juin 2008 ? LO43 - Moodle UTBM

26 juin 2008 ... LO43 - Examen final du 30 Juin 2011. Durée 2 heures ? aucun ... Dessiner les diagrammes de classes correspondant aux situations suivantes. 1) Classer les ... accès à l'objet ?}. Corriger l'erreur, expliquer très brièvement.




part of the document



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.
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.