facile
La domotique (I)
On souhaite créer une application domotique afin de pouvoir contrôler l'éclairage dans les différentes pièces d'une maison.
Cet exercice se concentre sur la création d'une classe permettant de contrôler une lampe.
Chaque lampe est caractérisée par un nom (une chaîne de caractères) et une adresse. Celle-ci est composée de deux nombres entiers : un numéro de zone et un numéro de point lumineux. Ces deux nombres sont compris entre 0 et 20 .
La variable booléenne etat_allume indique si la lampe est allumée (etat_allume = True ) ou éteinte ((etat_allume = False ). Par défaut, la lampe est éteinte.
La classes Lampe
La classe Lampe est définie ainsi :
classDiagram
class Lampe
Lampe : nom [str]
Lampe : zone [int]
Lampe : point_lumineux [int]
Lampe : etat_allume [bool]
Lampe : __init__(self, nom, zone, pl)
Lampe : adresse(self)
Lampe : allume(self)
Lampe : eteint(self)
Lampe : allume_si_zone(self, zone_souhaitee)
Lampe : actionne_telerupteur(self)
Définition des méthodes
Pour pouvoir fragmenter l'activité en plusieurs exercices, vous serez amenés à redéfinir une méthode en dehors de la définition de sa classe. Un mécanisme du site permet cette manipulation.
En dehors de cette activité, les méthodes doivent être définies en même temps que le reste de la classe.
1. Créer une Lampe
Compléter le constructeur de la classe Lampe.
>>> L1 = Lampe ( "L1" , 0 , 0 )
>>> L2 = Lampe ( "L2" , 0 , 1 )
>>> L3 = Lampe ( "L3" , 1 , 0 )
>>> L1 . nom
'L1'
>>> L2 . nom
'L2'
>>> L3 . zone
1
>>> L3 . etat_allume
False
.128013s3o_bcdufvg/ly napS.r1LFme,(P2=4:twzki5hx)6050h0A0I0r0M0n0b0p0g0n0r0b0b0F010I0M0s010406050b0i0z0z0r0v0o040t0d0n0i0,0d0q050m0?0^0`0|0;0s04151c051f0m1f1h1c0;0h0M0k0!0$0(0*0O0M0l0O0n1v0O0I0/050V0f0n0A1q0%0)011u1w1y1w0I1E1G1C0I0f0d0h0|1D0v1d0I0O0!0 0b0s0r0q0*0E011I1s010j0X0A0q0r0z0A1C1*1,1;1K1@1G1`1|0/0a0p0D0v0d0s0d0b0M120q0p0T1(0v0v0A0g2h151 0q1d0m1$2u0I1!1Z1#0h210*1y0q1_2e1C1n1p0#1J2E0M2G0q1W1o1C0s2n1d2s2u2Y0=1+2i2M1=2R0v0_0n0/0w2r2$0:2#202(1K2*2,0/0E2:1,2=2s2D012`0r2-040c2~2t0;312^0*34360G39302$323f0/0N3i3b3k3d330d2+350/0R3i1e2W152K2x0h2B320g1W1}1d3D1g3B2!162;053I0T2X3r1r1K0L0/2^3z3c3X0*0J0/0p3$3W2N330g0/0x1{0s0A3-2@3(010.040H3p0p423,3%3/3Z040T0j3`2%3|3*043,3Q2 2?4c3/0j0z0/0e0e2P2g4p4b323~0C4u3s0f3~0b0A0n4a4h2t4j4v0/0B3i443.2)0/2R0z4y3|3~4L4G4f4I3s0q0/0K133_4X4Z4U4K4M4+3/4#040s0n4T3/3~0Q404X06434 4N3{3/4A0/4C4E4^1=0d0/0u582_4Q0d4S4X514k590/0F4.454P044R4150424/1=5404564F2!5p1K5a045c4*5D3e4$4(5o4O5E5m5N525q4%2G5t5u5w1K5y5A5d0*5F5H5C5O5K4=0d2P0I0e100z2P0A0i0P5R5k5P045n5i5Y5,4?5W5061015!4D5B3R5J015(5$330/0U0r5:355=4)2Y5j325F5 6o660L3;040y354C3p153T0A2u2V6E3C1o3E2x2z2v1V1X2x0r1F6H0m3D0;6U6i0X0b04.
2. Récupérer l'adresse d'une Lampe
Compléter la méthode adresse de la classe Lampe qui renvoie l'adresse de la lampe sous la forme d'un couple d'entiers : le numéro de zone suivi du numéro de point lumineux.
>>> L2 = Lampe ( "L2" , 0 , 1 )
>>> L2 . adresse ()
(0, 1)
.128013so_bcdufvg/ly napS.r1me,(P2=:twzkihx)050g0x0E0q0I0m0b0o0f0m0q0b0b0C010E0I0r010406050b0h0w0w0q0u0n040s0c0m0h0$0c0p050l0-0/0;0?0+0r040 1605190l191b160+0g0I0j0U0W0Y0!0J0I0k0J0m1p0J0E0)050P0e0m0x1k0X0Z011o1q1s1q0E1y1A1w0E0e0c0g0?1x0u170E0J0U0_0b0r0q0p0!0B011C1m010i0R0x0p0q0w0x1w1!1$1+1E1.1A1;1?0)0a0o0A0u0c0r0c0b0I0|0p0o0N1Y0u0u0x0f2b0 1_0p170l1W2o0E1U1T1V0g1{0!1s0p1:281w1h1j0V1D2y0I2A0p1Q1i1w0r2h172m2o2S0,1#2c2G1,2L0u0:0m0)0v2l2W0*2V1`2Y1E2!2$0)0B2*1$2o2P0x2o2E2r0g2v2x010f1Q1@172~1a2Q2-2n2^3c340N2R2W320H0)0N0i3d3h2.1l1E0F0)0o3o3b320p0i0)0q0g2h0Y0x3w2m320(040z3H3i2/0!0e3K0b0x0m3n102+3x3P013K0L0D3o060o3+3v3I3!3k042h0E0h0u0~3X2_3-3O3r0!3K3M3`3c3.3~013R0)3T3V3N3q2H010c0)0t4b2X450p0)0G0}3G423p4j4d3K0y3o3|4c1,4704493W2U444d4f044h4q3Z4k0)272J0E0d0`0w2J0x0h0K4i3J0)0L3)0 3f2|183a0l382p300 2s2r1P1R2r0q1z4)4,1i2,4,0O0Q0S04.
3. Allumer et éteindre une Lampe
Compléter les méthodes allume et eteint qui permettent d'allumer et d'éteindre la lampe.
>>> L1 . allume ()
>>> L1 . etat_allume
True
>>> L1 . eteint ()
>>> L1 . etat_allume
False
.128013s3o_bcdufvg/Tly napS.r1Fme(P2=4:twki5h)050h0A0H0s0K0o0b0q0g0o0s0b0b0E010H0K0t010406050b0i0z0z0s0w0p040u0d0o0i0(0d0r050m0/0;0?0^0-0t041118051b0m1b1d180-0h0K0k0W0Y0!0$0M0K0l0M0o1r0M0H0+050R0f0o0A1m0Z0#011q1s1u1s0H1A1C1y0H0f0d0h0^1z0w190H0M0W0{0b0t0s0r0$0D011E1o010j0T0A0r0s0z0A1y1$1(1-1G1:1C1?1^0+0a0q0C0w0d0t0d0b0K0~0r0q0P1!0w0w0A0g2d111{0r190m1Y2q0H1W1V1X0h1}0$1u0r1=2a1y1j1l0X1F2A0K2C0r1S1k1y0t2j192o2q2U0.1%2e2I1.2N0w0=0o0+0x2n2Y0,2X1|2!1G2$2(0+0D2,1(2.2o2z012?0s2)040c2`2p0-2}2;0$30320F352|2Y2~3b0+0L3e1a2S112G2t0h2x2~0g1S1_193p1c3n2W122-053u0P2T3g39010J0+0P0j3l381n1G0I0+0q3P3I3R3a0j0+310|1^3W2:3Y010*040B3)2Z3+0f3-0b0A0o3O3C2{2/3;2J3,0+0N0G3e060q473V3Q403?0+3^3`3:2~0d0+0v4g3J0r0+0Q0s0H0e3$0:0A3e493X404i040E4w3~2~0J0g0+0n0w0i4v3|36374y1.3L043N4l3+3T043V4N3H3*400r3!040Q0A2L0H4V403-3/4!4E3J4c044e3{2W4a1.3-4345484x4$1.4_4{4/1.4A4k4?4~2=4o0R4r4t3(4!543 5a0+4C5l4@3+4G0+0y313^45113F0A2q2R5C3o1k3q2t2v2r1R1T2t0s1B5F0m3p0-5S4p0T0b04.
Votre figure
Votre tracé sera ici
4. Allumer les lampes d'une zone
On souhaite pouvoir allumer toutes les lampes situées dans une même zone.
Compléter la méthode allume_si_zone qui permet d'allumer une lampe si elle appartient à la zone dont le numéro est passé en paramètre de la méthode.
>>> L1 = Lampe ( "L1" , 0 , 0 )
>>> L3 = Lampe ( "L3" , 1 , 0 )
>>> L1 . allume_si_zone ( 0 )
>>> L1 . etat_allume
True
>>> L3 . allume_si_zone ( 0 )
>>> L3 . etat_allume
False
.128013s3o_bcdufvg/Tly napS.r1me,(P2=:twzkih)050h0z0G0s0K0o0b0q0g0o0s0b0b0E010G0K0t010406050b0i0y0y0s0w0p040u0d0o0i0%0d0r050m0.0:0=0@0,0t041017051a0m1a1c170,0h0K0k0V0X0Z0#0L0K0l0L0o1q0L0G0*050Q0f0o0z1l0Y0!011p1r1t1r0G1z1B1x0G0f0d0h0@1y0w180G0L0V0`0b0t0s0r0#0D011D1n010j0S0z0r0s0y0z1x1#1%1,1F1/1B1=1@0*0a0q0C0w0d0t0d0b0K0}0r0q0O1Z0w0w0z0g2c101`0r180m1X2p0G1V1U1W0h1|0#1t0r1;291x1i1k0W1E2z0K2B0r1R1j1x0t2i182n2p2T0-1$2d2H1-2M0w0;0o0*0x2m2X0+2W1{2Z1F2#2%0*0D2+1%2-2n2y012=0s2(040c2_2o192R102F2s0h2w2}0g1R1^18391b372V112,053e0O2S2X2}0J0*0O0j343r2/1m1F0H0*0q3y2.2Y3B0#0r0j0*300{1@0e2a0e0I0~0z3G2|2:0#0)040B3X3s3Z010f3#0b0z0o3x3m2`3H2}3#0A3y3F3Y3J2~0*3U2B3R0d0i0L0R0G0z3W3=353}2I013#0M0F3y060q4l3|3)3~3u040K3;2T4n3A4e0r403V434547493{3@3*0d0*0E0E4F4d1-3,0*3.3:3(4w1-4I040v4T3I4x4z2B4Z3^0*4i4b0+4m4.4v4!4O3-3/4t3n4N1F4W4Y4,4G3~4y040P0s0G0e3O0/4a4u4 4e4W4L4,4:3t0g0*0n0w0i592,0,0m3p0z2p2Q5s381j3a2s2u2q1Q1S2s0s1A5v0m395p0O0Q0S0b04.
Votre figure
Votre tracé sera ici
5. Utiliser un télérupteur
Le mode télérupteur donne la possibilité avec un même interrupteur bouton de pouvoir allumer et éteindre une lampe.
Compléter la méthode actionne_telerupteur qui permet de faire basculer l'état de la lampe, de allumée à éteinte ou d'éteinte à allumée.
>>> L1 = Lampe ( "L1" , 0 , 0 )
>>> L1 . actionne_telerupteur ()
>>> L1 . etat_allume
True
>>> L1 . actionne_telerupteur ()
>>> L1 . etat_allume
False
.128013so_bcdufvg/ly napS.r1me(P2=:twkih)050g0x0D0q0G0m0b0o0f0m0q0b0b0B010D0G0r010406050b0h0w0w0q0u0n040s0c0m0h0Z0c0p050l0*0,0.0:0(0r040|1305160l1618130(0g0G0j0R0T0V0X0H0G0k0H0m1m0H0D0$050M0e0m0x1h0U0W011l1n1p1n0D1v1x1t0D0e0c0g0:1u0u140D0H0R0?0b0r0q0p0X0A011z1j010i0O0x0p0q0w0x1t1X1Z1(1B1+1x1.1:0$0a0o0z0u0c0r0c0b0G0_0p0o0K1V0u0u0x0f280|1?0p140l1T2l0D1R1Q1S0g1^0X1p0p1-251t1e1g0S1A2v0G2x0p1N1f1t0r2e142j2l2P0)1Y292D1)2I0u0-0m0$0v2i2T0%2S1@2V1B2X2Z0$0A2%1Z2l2M0x2l2B2o0g2s2u010f1N1;142{172N2*2k2=39310K2O2T2 0F0$0K0i3a3e2+1i1B0E0$0o3l382 0p0i0$0q2g0G0`2x0d0D0x1x0u0h0r3F0h0u3t2j2 0#040y3O3f2,0X0e3R0b3G3k0}2(3u3W013R0I0C3l060o3;3s3P3*3Y0$3!0m3$2R3@3o0X0c0$0t3U3n2E010p0$0L0q0D0d0q0m0@1:3l3?3V400142040B4j3)4m0c3q042I0D4r3 473_043{3}3(4A1)4o443%2?4s4749044b4d4f4h0x3/0|3c2_15370l352m2}0|2p2o1M1O2o0q1w4Z4$1f2)4$4b0O0b04.
Votre figure
Votre tracé sera ici
# Tests(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)