-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathquestionnaire.txt
128 lines (75 loc) · 5.79 KB
/
questionnaire.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
% NOM Prénom (numéro) : MARESTIN Théodore (14)
**Remarque :** Ce fichier est au format Markdown. À partir de lui, on peut
produire un pdf, un odt, un docx, du html, etc. Par exemple, avec pandoc on
pourra faire :
~~~
pandoc --toc -o questionnaire.pdf questionnaire.txt
pandoc --toc -s -o questionnaire.html questionnaire.txt
~~~
# Points non traités du sujet
* Les sources
* Swing
# Traitements
## Quelle est la classe du traitement choisi ?
Non réalisé
## Pourquoi avoir fait de traitement une classe abstraite et non une interface ?
On a fait Traitement une classe abstraite car cela permet de définir un comportement par défaut pour
les autres classes qui vont hériter d'elle. Contrairement à une interface qui ne peut pas avoir
d'implémentation sans utiliser une autre classe Java qui l'implémente.
## Pourquoi certaines méthodes sont déclarées `final` ?
Les méthodes déclarées finales ne peuvent pas être modifiées par la suite du programme.
Cela est surtout utile dans un soucis de conception et/ou d'optimisation afin que les
classes dérivées ne puissent pas modifier le comportement de cette méthode.
## La classe Traitement est abstraite alors qu'elle ne contient pas de méthodes abstraites. Pourquoi ?
La classe Traitement est abstraite pour qu'on ne puisse pas l'instancier en tant que telle. Cependant elle peut
avoir des classes dérivées qui vont hériter de ces méthodes comme un comportement par défaut.
## Est-ce que de faire de Traitement une classe abstraite est vraiment logique ici ?
Oui car Traitement désigne un ensemble de classes qui fonctionnent avec la même logique algorithmique et
certaines méthodes en commun mais qui se dissocient par leurs spécificités. La classe Traitement seule ne
représente pas d'intérêt pour être instanciée dans le traitement des données que l'on souhaite faire car
elle ne correspond à aucune tâche spécifique mais simplement à un comportement général entre toutes ses
classes dérivées.
## Pour le traitement Normaliseur, quels autres traitements avez-vous utilisés et comment ?
Pour la classe Normaliseur, je n'ai pas utilisé d'autres traitements. J'ai simplement appliqué le calcul d'une
fonction affine en me basant sur les valeurs de début et fin fournit lors de la construction de la classe.
Il ne me pas sembler nécessaire d'utiliser d'autres Traitements, une erreur de compréhension du sujet de ma
part probablement.
## Quelles modifications avez-vous été obligés de faire sur la classe Position ?
Pour la classe Position nous sommes obligés de modifier sa méthodes "equals" utilisée par Java pour faire des
comparaisons entre les Objets. En effet, une position contient deux attributs et nous souhaitons indiquer au système
que lorsque l'on compare deux Objets Position entre eux, on souhaite le faire en comparant leurs abscisses et ordonnées
respectives.
# Remarques sur Swing
Je n'ai pas eu assez de temps pour l'utiliser.
# Remarques sur l'Introspection
J'ai mis un peu de temps à bien comprendre le principe de fonctionnement et ses subtilités. La syntaxe choisie est
volontairement restée simple pour être accessible. Si j'avais dû la concevoir, j'aurai probablement fait quelque
chose de similaire. Préciser le nombre de traitements suivants permet de construire l'arborescence des traitements
assez simplement puis la définition des paramètres également est assez intuitive
# Remarques sur XML
## Lecture d'un document XML
Pas eu assez de temps
## Production d'un document XML
Pas eu assez de temps
# Principaux choix faits
Etant donné mon temps limité, j'ai choisi de me concentrer sur la partie fonctionnelle des Traitements
ainsi que les tests fournis avec le projet. J'ai essayé d'être le plus fidèle possible au sujet et fonctions
proposées sans ajouter d'attributs ou de méthodes non définies dans le sujet.
# Critiques de l'architecture proposée et améliorations possibles
L'architecture proposée est déjà un bel exemple de l'utilisation d'héritage entre classes Java. Peut-être que certaines
classes peuvent avoir un comportement similaire qui mériterait d'être définit dans une classe abstraite.
Aussi certaines classes de Traitements sont peut-être inutiles en tant que telles et ne nécessitent par d'être instanciées
et auraient pu être implémentées via une simple méthode dans la méthode "traiter" de la classe Traiement.
Par exemple pour SupprimerPlusGrand et SupprimerPlusPetit, un simple 'if' dans la classe traiter et un attribut dans Traiement
afin de sauvegarder la valeur permettrait d'utiliser moins de ressources système lors de l'executions de très gros scripts.
Cela permettrait une certaine optimisation mais également de penser différents l'architecture du projet et ne serait vraiment
utile que dans le cas de manipulations d'une quantitée très élevée de Traitements différents.
# Difficultés rencontrées
Une difficulté qui m'a bloqué pendant une journée entière (à mon grand regret quand j'en ai découvert la raison ...), les Locales !
En effet lorsque j'utilisais la fonction nextDouble() du Scanner avec pour argument "12.5" par exemple, le scanner ne parvenait pas
à déchiffrer le nombre décimal. Il m'a fallut un certain temps et de nombreux tests avant de comprendre que le problème ne venait pas
de mon algorithme mais plutôt de mon utilisation du Scanner. Pour être précis, la classe Scanner utilise par défaut sur mon ordinateur
une Locale Française qui définit les nombres décimaux avec des virgules et non des points ! Ce qui explique pourquoi ma classe Scanner
ne parvenait pas à déchiffrer les doubles. J'ai donc rajouté une vérification dans ma méthode "décoderEffectif" pour utiliser,
quoiqu'il arrive la locale US avec le scanner afin d'être certain d'être conforme avec les nombres décimaux à points utilisés dans
le sujet.