Exercice 1. Définitions Exercice 2. Java Exercice 3. Dériveur

publicité
L3 MIME 2006 – Programmation Objets – partiel
1
Exercice 1. Définitions
Question 1.1. Programmation objet
Définir les mots ci-dessous. Justifiez votre réponse à l’aide d’un exemple.
1. objet
6. attribut
2. classe
7. interface
3. héritage
8. méthode statique
4. méthode
9. protection (public, privée, protégé,
défaut)
5. méthode abstraite
3min/déf
→
45min
5pts
Question 1.2. UML
Définir et illustrer par un diagramme UML les mots suivants :
1. classe, attribut, méthode
4. composition
2. héritage
5. multiplicité
3. agrégation
6. réalisation d’une interface
Exercice 2. Java
20min
Écrire, en langage Java, deux classes A et B telles que :
3pts
– La classe B hérite de la classe A ;
– la classe A possède :
– un attribut entier x visible seulement par ses classes filles ;
– un constructeur affectant une valeur à l’attribut x ;
– une méthode triple renvoyant la valeur de x multipliée par 3 si x6= 0.
– La classe B possède :
– un attribut entier y visible que dans la classe B ;
– un constructeur affectant une valeur aux attributs x et y ;
– une méthode divise revoyant la valeur de y divisée par le triple de la valeur y
quand cela est possible.
Tous les choix seront justifiés à l’aide de commentaires Javadoc.
Exercice 3. Dériveur symbolique
Dans cet exercice, nous réalisons un dériveur symbolique pour la fonction puissance :
(un )0 = nun−1 u0 avec u une fonction dérivable et n ∈ et n 6= 0.
6pts
N
20min
1. Compléter le diagramme de classes UML (figure 1 sur la page 3). Justifier toutes les 3pts
réponses.
30min
2. Écrire les classes Expression, Symbole et Puissance. Justifier les différents choix. 3pts
1pt/classe
L3 MIME 2006 – Programmation Objets – partiel
2
Exercice 4. Factory
Contexte
60min
6pts
Une application de bureautique peut manipuler plusieurs formats de fichiers. Chaque
format de fichier est décrit dans une classe distincte. Ces classes héritent toutes d’une
classe Document. Par exemple, le format RTF est géré par une classe RtfDocument, le
format MS Word est géré par une classe DocDocument. De plus, l’utilisateur peut installer
de nouvelles classes de formats en faisant des mises à jour de l’application. Dans ce
contexte, l’application ne peut connaı̂tre de façon définitive tous les formats disponibles.
Se pose alors le problème suivant : Comment instancier la bonne classe lors du chargement d’un fichier sachant que l’on connaı̂t le nom de ce dernier ?
Solution
La solution au problème précédent est d’utiliser le design pattern Factory (Usine). Ce
pattern permet fabriquer dynamiquement un objet implémentant une interface donnée en
fonction d’un ou plusieurs paramètres. Par exemple, une DocumentFactory peut fabriquer
un document du bon format si nous lui passons en paramètre le nom d’un fichier. Pour
cela, la factory détecte l’extension du fichier puis tente d’instancier une classe dont le nom
est construit en concaténant l’extension du fichier à la chaı̂ne ((Format)). Par exemple, si le
nom du fichier donné en argument est ((unfichier.rtf)) alors la factory renvoie une instance
de classe RtfFormat (((Rtf)) + ((Format))).
Question 4.1. Conception
Décrire complètement le design pattern Factory à l’aide de diagramme(s) UML. Ne
pas oublier le cas où le format n’est pas disponible. Cette description sera justifiée.
30min
Question 4.2. Programmation
Programmer, en langage Java, une factory construisant des instances de l’interface
DocumentFormat en fonction d’un chaı̂ne codant le format :
DocDocument, RtfDocument, HtmlDocument, ...
Votre programme sera justifié.
30min
java.lang.Number
1
1
Nombre
+deriver(Symbole variable) : Derivable
1
1
Puissance
+deriver(Symbole variable) : Derivable
1
1
<<interface>>
Derivable
+deriver(Symbole variable) : Derivable
Expression
+deriver(Symbole variable) : Derivable
OperationBinaire
+deriver(Symbole variable) : Derivable
2
java.lang.String
1
1
Symbole
+deriver(Symbole variable) : Derivable
+estVariableDeDerivation() : boolean
1
Multiplication
+deriver(Symbole variable) : Derivable
L3 MIME 2006 – Programmation Objets – partiel
3
Fig. 1 – Diagramme de classes UML du dériveur à compléter. (Ajoutez vos nom, prénom
et numéro d’étudiant)
Téléchargement