This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
2014_2015:s3:concprogobjet:td:td6 [2014/11/02 20:29] blay [Maison numérique évolutive] |
2014_2015:s3:concprogobjet:td:td6 [2014/11/22 19:00] blay [Refactoring et Pattern Composite] |
||
---|---|---|---|
Line 36: | Line 36: | ||
QUESTION (15 mn): | QUESTION (15 mn): | ||
- | Lire l'ensemble de l'énoncé à présent et compléter ou corriger votre modélisation. | + | * Lire l'ensemble de l'énoncé à présent et compléter ou corriger votre modélisation. |
===== Capteurs Passifs ===== | ===== Capteurs Passifs ===== | ||
- | Les capteurs "passifs" sont des capteurs qu'il faut interroger pour obtenir la valeur correspondant par exemple à une température ou un éclairage. A un capteur passif nous associons un capteur physique qui vous est donné. Il s'agit d'un composant très simple qui lit et écrit une valeur dans un fichier. Il vous sert de "bouchon" puisque nous ne disposons pas d'un vrai capteur physique auquel nous connecter. | + | Les capteurs "passifs" sont des capteurs qu'il faut interroger pour obtenir la valeur correspondant par exemple à une température ou un éclairage. A un capteur passif nous associons un {{:2014_2015:s3:concprogobjet:td:capteurphysique.zip|capteur physique}} qui vous est donné. Il s'agit d'un composant très simple qui lit et écrit une valeur dans un fichier. Il vous sert de "bouchon" puisque nous ne disposons pas d'un vrai capteur physique auquel nous connecter. |
Line 47: | Line 47: | ||
- Définir la classe CapteurPassif en lui associant un capteurPhysique. | - Définir la classe CapteurPassif en lui associant un capteurPhysique. | ||
+ | Voici les codes dont vous avez besoin : | ||
+ | *{{:2014_2015:s3:concprogobjet:td:capteurphysique.zip|}} | ||
+ | *{{:2014_2015:s3:concprogobjet:td:fichiero.zip|}} | ||
===== Pièce équipée ===== | ===== Pièce équipée ===== | ||
Line 58: | Line 61: | ||
- Créer un jeu de tests vous permettant de tester votre classe Pièce. | - Créer un jeu de tests vous permettant de tester votre classe Pièce. | ||
- | exemple de trace : | + | Exemple de trace : |
<code> | <code> | ||
Salon | Salon | ||
Line 71: | Line 74: | ||
Il permet de visualiser tous les capteurs présents dans toutes les pièces de la maison. | Il permet de visualiser tous les capteurs présents dans toutes les pièces de la maison. | ||
+ | QUESTION (20 mn): | ||
+ | * Implémenter et tester la classe ''MaisonNumerique'' et tout ce qui est nécessaire pour répondre aux exigences. | ||
Line 90: | Line 94: | ||
- | QUESTION : | + | QUESTION (30mn) : |
- | * Définir la classe CapteurPassifReactif comme une extension de la classe CapteurPassif. | + | * Définir la classe ''CapteurPassifReactif'' comme une extension de la classe ''CapteurPassif''. |
* Vous rendez ses instances observables en respectant le pattern ci-après : | * Vous rendez ses instances observables en respectant le pattern ci-après : | ||
- | * Un observeur d'un CapteurPassifReactif doit pouvoir recevoir des messages update(String message) : Nous aurons des "ObserveurDeCapteur" | + | * Un observeur d'un ''CapteurPassifReactif'' doit pouvoir recevoir des messages ''update(String message)'' : Nous aurons des ''ObserveurDeCapteur'' |
- | * On peut enregistrer des ObserveurDeCapteur dans un CapteurPassifReactif et en enlever | + | * On peut enregistrer des ''ObserveurDeCapteur'' dans un ''CapteurPassifReactif'' et en enlever; |
- | * A chaque appel au setValeur d'un CapteurPassifReactif tous les oberveurs sont notifiés par un "update" et la nouvelle valeur du capteur en paramètre | + | * A chaque appel au ''setValeur'' d'un ''CapteurPassifReactif'' tous les observeurs sont notifiés par un ''update'' et la nouvelle valeur du capteur en paramètre. |
Nous n'avons pas encore défini d'observeur d'un capteur. Cependant nous voulons vérifier que les notifications sont bien prévues. | Nous n'avons pas encore défini d'observeur d'un capteur. Cependant nous voulons vérifier que les notifications sont bien prévues. | ||
Line 169: | Line 173: | ||
- | Vous pouvez faire le choix de continuer à tester avec EasyMock ou de faire les tests en créant les bouchons etc. | + | QUESTION (30mn) : |
+ | * Vous pouvez faire le choix de continuer à tester avec EasyMock ou de faire les tests en créant les bouchons etc. | ||
===== Pièce numérique "intelligente" ===== | ===== Pièce numérique "intelligente" ===== | ||
- | L'objectif est à présent de définir des pièces intelligentes comme contenant des capteurs passifs et des capteurs passifs réactifs. Lorsque l'un de ces derniers capteurs a sa valeur modifiée, la pièce est notifiée du changement et le update consiste à ré-afficher les valeurs de tous les capteurs. | + | L'objectif est à présent de définir des pièces intelligentes qui lorsque l'un de ses capteurs "Observable" a sa valeur modifiée, la pièce est notifiée du changement et le update consiste à ré-afficher les valeurs de tous les capteurs. |
- | Question : Vous devez définir une "SmartPiece" sans modifier une Piece. | + | QUESTION (10mn) : |
+ | * Vous devez définir une "SmartPiece" sans modifier une Piece. | ||
Line 183: | Line 189: | ||
Lorsque l'on ajoute un capteur à une pièce de la maison on veut que le tableau de bord de la maison prenne automatiquement en compte cette évolution. | Lorsque l'on ajoute un capteur à une pièce de la maison on veut que le tableau de bord de la maison prenne automatiquement en compte cette évolution. | ||
- | Question : Modifier vos classes pour prendre cette nouvelle exigence, si vous ne l'aviez pas déjà fait. | + | QUESTION : |
- | Si vous le voulez, vous êtes autorisé à cette étape à utiliser les classes java "Observer" et "Observable". | + | * Modifier vos classes pour prendre en compte cette nouvelle exigence, si vous ne l'aviez pas déjà fait. |
+ | Si vous le voulez, vous êtes autorisé à cette étape à utiliser les classes java ''java.util.Observable'' et ''java.util.Observer''. | ||
- | ===== Capteurs Réactifs ===== | + | ===== Capteurs actifs ===== |
Un capteur actif est associé à un capteur physique. Il scrute régulièrement la valeur physique du capteur physique qui lui est associé et notifie ses observeurs chaque fois qu'il détecte un changement. | Un capteur actif est associé à un capteur physique. Il scrute régulièrement la valeur physique du capteur physique qui lui est associé et notifie ses observeurs chaque fois qu'il détecte un changement. | ||
Line 193: | Line 200: | ||
Voici les éléments de code dont vous avez besoin pour le définir : | Voici les éléments de code dont vous avez besoin pour le définir : | ||
* Ce code vous permet de le déclarer comme pouvant s'exécuter "dans une thread à part" : <code Java> | * Ce code vous permet de le déclarer comme pouvant s'exécuter "dans une thread à part" : <code Java> | ||
- | public class CapteurReactif ... implements... Runnable{ | + | public class CapteurActif ... implements... Runnable{ |
</code> | </code> | ||
Line 219: | Line 226: | ||
- | QUESTION (15mn) : | + | QUESTION (30mn) : |
- | * Définir les capteurs réactifs | + | * Définir les capteurs actifs |
+ | |||
+ | |||
+ | ===== Refactoring et Pattern Composite ===== | ||
+ | |||
+ | On vient de réaliser que des dispositifs peuvent être associés directement à la maison et pas forcément aux pièces. | ||
+ | Proposer une modélisation qui préserve l'ensemble de vos "tests" mais vous permet de prendre en compte cet aspect. | ||
<html> | <html> | ||
Line 368: | Line 381: | ||
Si maintenant on veut que tout message dans la boite SNAPCHAT soit ephemere ? | Si maintenant on veut que tout message dans la boite SNAPCHAT soit ephemere ? | ||
- | |||
- | ===== Estimation de performance ===== | ||
- | |||
- | |||
- | Une route est définie par des Tronçons. Un tronçon est défini par deux Positions et une longueur. Une Position est définie par un nom. | ||
- | |||
- | Calculer le plus cours chemin entre deux positions. | ||
- | Déterminer la complexité de votre algorithme. | ||
- | => Outils de recherche de code dupliqué? | ||