Académique Documents
Professionnel Documents
Culture Documents
Inversion de controle
On voudrait réaliser une application qui permet d’exploiter des données (affichage des données). Ces
données peuvent être des données saisies par l’utilisateur ou bien des données venant d’une source de
données.
Dans un premier temps nous adoptons le diagramme suivant pour la réalisation de notre application.
Par la suite, nous voudrions que les données récupérées depuis la classe DAO soient d’un fichier
EXCEL. On suppose que la valeur recherchée représente la somme de l’ensemble des données qui se
trouvent dans la première colonne.
A quel niveau nous devrons effectuer les modifications ? Peut-on considérer que notre application est
fermée à la modification ouverte à l’extension ?
2. Pour rendre l’application fermée à la modification ouverte à l’extension, on se basera sur les
interfaces. Pour cela nous utiliserons le diagramme suivant :
(a) Définir les interfaces IDao et Imetier, appartenant, successivement aux packages dao et metier.
(b) IDao contient une méthode getValue() qui retourne un double;
(c) Définir une classe DaoImpl, dans le package dao, qui implémente IDao. Cette classe contient
une méthode getValue() qui permet de demander à l’utilisateur de saisir un double au clavier.
(d) Définir une classe MetierImpl appartenant au package metier. Cette classe contient un objet de
type IDao et implémente IMetier. La méthode calcul est redéfini selon :
d --> d * 2.5 / 100.
(e) Définir une classe Presentation qui permet d’instancier les différentes classes indiquées.
3. Définir une deuxième implémentation de la classe IDao qui permet de lire les données depuis un
fichier EXCEL.
Quelle couche est considérée encore comme partie non fermée à la modification et non ouverte à
l’extension? Pourquoi ?
Comment rendre cette partie elle aussi fermée à la modification et ouverte à l’extension ? – Instaniation
dynamique –
Indications :
- Lire un fichier
Scanner config = new Scanner(new File("config.txt"));
Dépendance maven :
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
- Iterate a row
while (rowIterator.hasNext()) {
Row row = (Row) rowIterator.next();
cellule = row.getCell(0);
int id = (int)cellule.getNumericCellValue();
…
}