Alarme domestique

Transcription

Alarme domestique
SNIR1 2014-2015
Développement logiciel
Programmation Objet
Programmation sous QT
Projet Alarme Domestique
~ TD n°7 ~
Intégration
Date : mars 2015
Version : 3.2
Référence : TD7 – Intégration
Plan du document
1. Objectif....................................................................................................................................1
2. Conditions de réalisation.........................................................................................................1
3. Recommandations...................................................................................................................2
4. Etude de la classe CentraleDalarme.......................................................................................3
5. Réalisation...............................................................................................................................6
5.1. CODAGE DE LA CLASSE CODE...............................................................................................................................6
5.2. CODAGE DE LA CLASSE CENTRALEDALARME..........................................................................................................6
1. OBJECTIF
 Etude Algorithmique
 Fiche de test unitaire
 Relations entre classes
 Composition
 Association
 Principe de codage en C++
2. CONDITIONS DE RÉALISATION
 Ressources utilisées :
Matériel
Logiciels
Un PC sous Linux
La suite open office
Qt-creator, Modélio
3. RECOMMANDATIONS
L’ensemble des éléments obtenus, classes, opérations, attributs, doivent faire l’objet d’un
commentaire précis et non redondant. Le nom des variables est significatif.
Alarme domestique
4.
Séquence 4
Réalisation
4.1.
Mise en place des détecteurs
1. Dans votre projet AlarmeDomestiqueFinale, réalisez la boîte de dialogue
Detecteur comme dans le tutoriel.
Initialiser le titre de la boîte avec la chaîne « Détecteur » comme le montre la
figure. Créer le slot correspondant au bouton « Présence Intrus ».
2. Dans le fichier detecteur.h créez le signal IntrusDetecte( ). Modifiez la classe
CentraleDalarme pour quelle puisse gérez les signaux et les slots. Dans la
classe CentraleDalarme créez le slot on_IntrusDetect ( ). Dans le corps de cette
méthode dans un premier temps affichez sous la forme d'une boîte de message
« Un intrus a été détecté ». En respectant le diagramme de classe et en
considérant que vous avez un seul détecteur pour l'instant, codez la relation
entre les deux classes. Dans le constructeur de la classe CentraleDalarme,
réalisez l'initialisation du pointeur sur la classe et la connexion entre le signal et
le slot.
3. Dans le corps de la méthode on_pushButton_PresenceIntrus_clicked() envoyez
le signal IntrusDetecte.
4. Après avoir codez la méthode void CentraleDalarme ::ActiverSurveillance( )
et la méthode void CentraleDalarme::DesactiverSurveillance( ), vérifier le
fonctionnement du détecteur. L'affichage du détecteur ne peut se faire qu'avec
la méthode show( ) et le masquage par la méthode hide( ) pour garder la main
sur le clavier de la centrale.
Intégration
Page 2 sur 4
Alarme domestique
Séquence 4
5. L'application demande également la création de détecteurs temporisés. Pour ce
faire, créez une nouvelle classe DetecteurTemporise comme le montre la figure
suivante :
Surcharger la méthode on_pushButton_PrésenceIntrus_clicked() car elle ne
possède pas le même comportement lorsqu'il s'agit d'un détecteur temporisé.
Après avoir déplacer l'attribut ui de la section privé à une section protégé dans
la classe détecteur, réalisez, manuellement dans le constructeur de la classe
DetecteurTemporise, la connexion entre le signal clicked() du bouton et la
surchage du slot
6. Dans le constructeur modifiez le titre de la boîte par « Détecteur temporisé ».
7. Toujours dans ce même constructeur, initialiser le pointeur tempo et réalisez la
connexion entre son signal timeout() et le slot on_finTempo(). Dans le premier
slot, vous devez lancez le timer pour une durée de 20 secondes (pour le test
réduire à 5). Dans le second, vous devez stopper le timer et envoyer le signal
IntrusDetecte.
8. Après avoir déclaré le pointeur leDetecteurTemporise, l'avoir initialisé, avoir
ajouté les connexions nécessaires pour répondre au signal IntrusDetecte() et
réalisé le code pour l'affichage et le masquage d'un détecteur temporisé dans la
classe CentraleDalarme, vérifiez son fonctionnement. Que constatez-vous ?
Comment expliquez ce phénomène.
9. Pour résoudre ce dysfonctionnement, il est nécessaire que la méthode
on_pushButton_PresenceIntrus_clicked() soit virtuel dans les deux types de
détecteur. Ainsi à l'exécution, la connexion sera réalisée avec la méthode de la
bonne instance.
Intégration
Page 3 sur 4
Alarme domestique
4.2.
Séquence 4
Mise en place de la sirène (fonctionne sous Windows)
10. Copiez dans votre répertoire debug ou release suivant le type de projet le
fichier alarme.wav.
11. Modifiez votre fichier AlarmeDomestique.pro pour que l'aspect multimédia
soit pris en compte dans votre projet, voir http://doc.qt.io/qt-5/qsound.html
12. Déclarez une nouvelle classe Sirene comme le montre la figure suivante :
Dans le constructeur de la classe initialisez le pointeur leSon en lui indiquant
le fichier à charger en paramètre.
13. Dans la méthode Enclencher appelez la méthode play()
14. Dans le destructeur de la classe stopper la diffusion du son et libérer la
mémoire.
15. Complétez les interactions entre la classe CentraleDalarme et la classe Sirene.
Vérifiez le fonctionnement.
4.3.
Pour aller plus loin
Notre centrale d'alarme utilise plusieurs détecteurs de différents types comme
l'indiquait le diagramme de classe. Réalisez les modifications nécessaires pour
répondre à ce besoin.
Remplacer les cases à cocher sur l'interface du clavier par des boutons que
vous désactiverez (propriété enable) sans texte dessus.
L'appel de la méthode ui->pushButtonLedRouge->styleSheet() retourne un
Qstring qui donne le style du bouton, cela permet de récupérer par exemple la
texture standard d'un bouton.
L'appel de la méthode :
ui->pushButtonLedRouge->setStyleSheet(''QPushButton(background : red)'')
permet de changer la couleur d'un bouton en rouge
Modifiez votre code pour que la gestion des leds soit faite par ces nouveaux
boutons.
Intégration
Page 4 sur 4

Documents pareils