This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
2017_2018:s3:concprogobjet:td:td7 [2017/11/24 09:10] blay [Capteurs logiciels à état] |
2017_2018:s3:concprogobjet:td:td7 [2017/12/06 10:42] (current) blay [Rendu] |
||
---|---|---|---|
Line 3: | Line 3: | ||
====== Digital Home : application des DP ====== | ====== Digital Home : application des DP ====== | ||
- | <note warning>DRAFT</note> | + | |
Objectifs de ce TD : | Objectifs de ce TD : | ||
- Appréhender une petite application dans sa totalité | - Appréhender une petite application dans sa totalité | ||
Line 59: | Line 59: | ||
QUESTION (5 mn): | QUESTION (5 mn): | ||
- | * Récupérer le code "bouchon" du capteur Physique. **VOUS n'avez pas le droit de le modifier !!** | + | * Récupérer le code "bouchon" du {{:2017_2018:s3:concprogobjet:td:physicalsensor.jar|capteur Physique}}. **VOUS n'avez pas le droit de le modifier !!** ; vérifiez que les tests passent bien avant de passer à la suite. |
<note tip>Attention de manière générale on ne fait pas des tests sur des "string" pour tester l'état des objets. | <note tip>Attention de manière générale on ne fait pas des tests sur des "string" pour tester l'état des objets. | ||
Line 76: | Line 76: | ||
- Tester vos capteurs logiciels. | - Tester vos capteurs logiciels. | ||
- | |||
- | |||
- | Voici le diagramme de classe concernant cette partie, pour vous aider éventuellement. | ||
- | |||
- | {{ :2015_2016:s3:concprogobjet:td:iut.capteurs.jpg?direct&300 |}} | ||
===== Capteurs logiciels à état ===== | ===== Capteurs logiciels à état ===== | ||
Line 103: | Line 98: | ||
StateLazy sl; | StateLazy sl; | ||
- | PhysicalSensor ps = new PhysicalSensor("mySensorLux"); | + | Sensor ps = ....; |
@Before | @Before | ||
Line 124: | Line 119: | ||
QUESTION (15 mn): | QUESTION (15 mn): | ||
- | - Mettez à jour votre diagramme de classe si besoin. | + | - Mettez à jour votre diagramme de classe si besoin en identifiant bien les éléments de design pattern. |
- Définissez la classe ''CapteurOnOffLazy'' | - Définissez la classe ''CapteurOnOffLazy'' | ||
- Testez votre classe, voici des exemples si cela peut vous aider. | - Testez votre classe, voici des exemples si cela peut vous aider. | ||
Line 180: | Line 175: | ||
* On veut définir des capteurs à un seul bouton (appel de la méthode press). | * On veut définir des capteurs à un seul bouton (appel de la méthode press). | ||
* L'état de départ est off. | * L'état de départ est off. | ||
- | * Dans l'état //Off//, si on appuie une fois, on est //On//. | + | * Dans l'état //Off//, si on appuie une fois (2 appels à off), on est //On//. |
- | * Dans l'état //On// si on appuie 2 fois on est //Lazy//. | + | * Dans l'état //On// si on appuie 2 fois (2 appels à on) on est //Lazy//. |
- | * Dans l'état //Lazy// si on appuie 2 fois on est //Off//. | + | * Dans l'état //Lazy// si on appuie 2 fois (2 appels à lasy) on est //Off//. |
- Mettez à jour votre diagramme de classe si besoin. | - Mettez à jour votre diagramme de classe si besoin. | ||
- Définir la classe ''CapteurOneButton'' | - Définir la classe ''CapteurOneButton'' | ||
Line 195: | Line 190: | ||
QUESTION (10 mn): | QUESTION (10 mn): | ||
- | - Compléter ou corriger si besoin votre diagramme de classe **sur cette partie**. | + | - Complétez ou corrigez si besoin votre diagramme de classe. |
- | - Définir la classe ''Piece'' | + | - Implémentez la classe ''Piece'' |
- | - Créer un jeu de tests vous permettant de tester votre classe ''Piece''. | + | - Créez un jeu de tests vous permettant de tester votre classe ''Piece''. |
- | Exemple de trace : | + | Exemple de l'appel d'affichage suite à l'appel à ''toString'' sur une pièce: |
<code> | <code> | ||
Salon | Salon | ||
Line 207: | Line 202: | ||
===== Maison numérique ===== | ===== Maison numérique ===== | ||
- | Une maison numérique est une composition de lieux dont certaines parties sont des composions de lieux (l'étage est composé de la partie enfant et du bureau) et d'autres sont des pièces (bureaux, chambres, ..). | + | Une maison numérique est une composition de parties dont certains parties sont elles-même des compositions de parties (l'étage est composé de la partie enfant et du bureau) et d'autres sont des pièces (bureaux, chambres, ..). |
- | Il doit être possible d'interroger une partie de la maison pour connaitre tous les capteurs qu'elle contient : Pour une pièce, les capteurs qui lui sont associés, pour une partie, ses propres capteurs (par exemple, le thermostat de l'étage) + les capteurs des parties qui la compose. | + | Il doit être possible d'interroger une partie de la maison pour connaitre tous les capteurs qu'elle contient : Pour une pièce, les capteurs qui lui sont associés, pour une partie composite, ses propres capteurs (par exemple, le thermostat de l'étage) + les capteurs des parties qui la compose. |
+ | Voici la maison que vous devez modéliser : | ||
+ | - Un RDC, un étage et un extérieur. | ||
+ | - Un étage avec 2 chambres, chacune avec son thermometre et un thermostat global à l'étage | ||
+ | - etc. | ||
+ | {{ :2015_2016:s3:concprogobjet:td:maisonnumerique.png?direct&300 |}} | ||
QUESTION (25 mn): | QUESTION (25 mn): | ||
- | * Modéliser la classe ''MaisonNumerique'' et **tout** ce qui est nécessaire pour répondre aux exigences. | + | * Modélisez la classe ''MaisonNumerique'' et **tout** ce qui est nécessaire pour répondre aux exigences. |
* Avez-vous utilisé un ou des DP? Si oui, annotez vos classes avec des "stéréotypes" permettant d'identifier les différents rôles joués par vos classes. | * Avez-vous utilisé un ou des DP? Si oui, annotez vos classes avec des "stéréotypes" permettant d'identifier les différents rôles joués par vos classes. | ||
- | * Implémenter et tester la. | + | * Implémentez et testez la. |
+ | * Implémentez la maison donnée ci-après, et vérifiez que vous êtes bien capable de la représenter. | ||
<note tip>Oui oui, l'énoncé n'est pas mâché... Il est possible que vous deviez réécrire des codes, mais maintenant ce n'est plus un problème n'est-ce pas? | <note tip>Oui oui, l'énoncé n'est pas mâché... Il est possible que vous deviez réécrire des codes, mais maintenant ce n'est plus un problème n'est-ce pas? | ||
Line 225: | Line 226: | ||
- | Voici la maison que vous devez modéliser : | + | |
- | - Un RDC, Un étage et un extérieur. | + | Voici une nouvelle maison, décrite un peu différemment. |
- | - Un étage avec 2 chambres, chacune avec son thermometre et un thermostat global à l'étage | + | |
- | - etc. | + | <code> |
- | {{ :2015_2016:s3:concprogobjet:td:maisonnumerique.png?direct&300 |}} | + | maison = new Maison(); |
+ | rdc = new PartieMaison("RDC"); | ||
+ | cuisine = new Piece("Cusine"); | ||
+ | sam = new Piece("Salle e manger"); | ||
+ | |||
+ | parentalPart = new PartieMaison("Partie Parentale"); | ||
+ | chambreParents = new Piece("parents"); | ||
+ | sdbParent = new Piece("salle de bain des parents"); | ||
+ | parentalPart.addLieu(chambreParents); | ||
+ | parentalPart.addLieu(sdbParent); | ||
+ | parentalPart.addSensor(thermostatParental); | ||
+ | |||
+ | rdc.addLieu(cuisine); | ||
+ | rdc.addLieu(sam); | ||
+ | rdc.addLieu(parentalPart); | ||
+ | |||
+ | |||
+ | etage = new PartieMaison("Etage"); | ||
+ | chambre1 = new Piece("Chambre1"); | ||
+ | chambre2 = new Piece("Chambre2"); | ||
+ | etage.addLieu(chambre2); | ||
+ | etage.addLieu(chambre1); | ||
+ | |||
+ | exterieur = new PartieMaison("Exterieur"); | ||
+ | exterieur.addSensor(externeDetecteurLumiere); | ||
+ | maison.addLieu(rdc); | ||
+ | maison.addLieu(etage); | ||
+ | maison.addLieu(exterieur); | ||
+ | |||
+ | </code> | ||
===== Tableaux de Contrôle ===== | ===== Tableaux de Contrôle ===== | ||
Line 444: | Line 474: | ||
===== Rendu ===== | ===== Rendu ===== | ||
- | <box round rgb(150,290,190) rgb(198,226,150) 75%|Rendu en fonction du groupe de TD > | + | <box round rgb(150,290,190) rgb(198,226,150) 75%|Rendu en fonction du groupe de TD : 15 décembre 2017 > |
- | * Mettez un mail à votre encadreur pour Mme Lecat ou [[http://jalon.unice.fr/cours/blay/Cours-blay-20150930110548/BoiteDepot-blay-20151205174816497430?mode_etudiant=false|par dépôt sur Jalon]] pour Mme Blay-Fornarino avec une archive à vos Noms, qui contient : | + | * [[http://jalon.unice.fr/cours/blay/Cours-blay-20150930110548/BoiteDepot-blay-20161122213044309075?mode_etudiant=true&tab=deposit|Dépôt sur Jalon]] pour Mme Blay-Fornarino avec une archive à vos Noms, qui contient : |
* Un document contenant | * Un document contenant | ||
- | * votre modèle de classe final intégré dans un document pour que nous n'ayons pas à ouvrir différents modèles dans différentes versions de l'outil, | + | * votre **modèle de classe final** intégré dans un document pour que nous n'ayons pas à ouvrir différents modèles dans différentes versions de l'outil, |
- | * les évolutions du modèle | + | |
* des explications sur les raisons de ce modèle (dont vous êtes très fiers) et les leçons apprises. | * des explications sur les raisons de ce modèle (dont vous êtes très fiers) et les leçons apprises. | ||
* Les codes et les tests. | * Les codes et les tests. |