Dans ce TP, vous allez vous familiariser avec le patron de conception observateurs/observable.
D'abord, en implémentant sa structure et son mécanisme.
Puis, en utilisant cette couche abstraite pour réaliser un petit programme présentant des objectifs sur des saisies utilisateurs.
Puis, en utilisant cette couche abstraite pour réaliser un petit programme qui suit la progression d'objectifs sur des saisies utilisateurs.
## Partie 1 : Le patron Observateurs / Observable
...
...
@@ -59,7 +59,7 @@ public abstract class Observable {
## Partie 2 : Application
On souhaite réaliser un premier analyseur de texte simple, qui observes les lignes saisies sur l'entrée standard et se met à jour à chaque nouvelle ligne saisie.
On souhaite implémenter un premier suivi d'objectif simple sur un de texte, qui se met à jour à chaque nouvelle ligne saisie sur l'entrée standard.
Nous utiliserons le patron observateurs/observé pour l'implémenter.
On va donc disposer d'une classe Texte, encapsulant un Scanner pour traiter un flux, ici l'enrée standard :
...
...
@@ -77,7 +77,8 @@ ainsi que d'une classe Objectif, chargée d'afficher au fur et à mesure la prog
```mermaid
classDiagram
class Objectif {
-nbRestant : int
#nbRestant : int
#nom : String
}
Objectif : +do() void
Objectif : +isDone() boolean
...
...
@@ -116,9 +117,10 @@ InputStream is = new ByteArrayInputStream(test.getBytes());
```
### Autres objectifs
On va désormais ajouter d'autres objectifs, sur les mêmes saisies, mais vérifiant un critère plus fin, qu'un caractère ait été saisi un certain nombre de fois.
Créer une classe pour ce faire, de manière à mutualiser le plus possible le code avec **Analyseur**.
Là encore, vous réaliserez des tests.
On va désormais ajouter d'autres objectifs, sur les mêmes saisies, mais vérifiant un critère plus fin, qu'un caractère donné ait été saisi un certain nombre de fois.
Créer une classe pour ce faire, de manière à mutualiser le plus possible le code avec **Objectif**, en n'hésitant pas à refactoriser au besoin.
Là encore, vous réaliserez un Main et des tests.
Voici un exemple de comportement attendu :
<pre>
>>>Objectif 1 - nombre de lignes : encore 3<<<
...
...
@@ -140,7 +142,7 @@ Fin de la saisie.
</pre>
Construisez 1 ou 2 autres objectifs sur d'autres critères, par exemple avec un nombre de mots d'une taille donnée ou un nombre de majuscules ou chiffres à atteindre.
Quels sont les avantages de reposer sur le patron Observer/Observable ?
Quels sont les avantages de se baser sur le patron Observer/Observable ?