Cours:TPheritageIO : Différence entre versions

De troyesGEII
Aller à : navigation, rechercher
(classe abstraite Lampe)
(classe abstraite Lampe)
Ligne 39 : Ligne 39 :
 
*setValue est la seule méthode qui sera redéfinie dans les classes {{Rouge|filles}}
 
*setValue est la seule méthode qui sera redéfinie dans les classes {{Rouge|filles}}
 
*du coup il est nécessaire de la déclarer comme {{Rouge|virtual}}
 
*du coup il est nécessaire de la déclarer comme {{Rouge|virtual}}
*les méthodes(slots plutôt) allumer/eteindre/changer doivent utiliser la méthode setValue
+
*les méthodes(slots plutôt) {{Rouge|allumer/eteindre/changer}} doivent {{Rouge|utiliser}} la méthode {{Rouge|setValue}}
  
 
==classe LampeGPIO==
 
==classe LampeGPIO==

Version du 28 septembre 2022 à 15:19

Nous allons utiliser un gpio expander en i2c qui permet d'ajouter facilement un grand nombre d'entrées/sorties sur un système.

Le composant utilisé, un mcp23017, possède 16 gpio. Son @i2c est réglable à l'aide de 3 broches ce qui permet au maximum d'en utiliser 8 sur le même bus i2c.

On peut donc ajouter jusqu'à 128 entrées/sorties en utilisant ce composant.



Nous souhaitons écrire un programme qui permet de piloter des lampes/leds, certaines connectées directement sur les gpio de la carte programmable, d'autres branchées sur le gpio expander.


Dans tous les cas, il s'agit de Lampe, qu'elle soit une LampeI2c ou une LampeGPIO.

Chaque Lampe présente :

  • la propriété ou attribut suivant :
    • isAllumee
  • les fonctionnalités ou méthodes suivantes :
    • allumer
    • eteindre
    • changer

"Diagramme" de classe

classe abstraite Lampe

Question.jpg Faire une classe Lampe qui:

  • hérite de QObject
  • a un attribut protected :
    • isAllumee : bool
  • a des slots public :
    • allumer
    • eteindre
    • changer
  • a une méthode protected
    • virtual void setValue(bool etat)


Remarque :

  • setValue est la seule méthode qui sera redéfinie dans les classes filles
  • du coup il est nécessaire de la déclarer comme virtual
  • les méthodes(slots plutôt) allumer/eteindre/changer doivent utiliser la méthode setValue

classe LampeGPIO

classe LampeI2C

Utilisation : polymorphisme

Instanciation des classes