Yaourt

Une entreprise fabrique des yaourts qui peuvent être soit nature (sans arôme), soit aromatisés (fraise, abricot ou vanille).

Une application permet de gérer l'étiquetage des pots. Pour pouvoir traiter informatiquement les spécificités de ce produit et changer l'étiquetage à chaque nouvelle production, on va donc créer une classe Yaourt qui possèdera les attributs suivants :

  • Son genre : "nature" ou "aromatise"
  • Son arôme : "fraise", "abricot", "vanille" ou "aucun"
  • Sa date de durabilité minimale (DDM) exprimée par un entier compris entre 1 et 365 (on ne gère pas les années bissextiles). Par exemple, si la DDM est égale à 15, la date de durabilité minimale est le 15 janvier.

Les attributs arome et genre sont liés entre eux : pour conserver la cohérence des valeurs, une modification automatique de genre a lieu lorsque l’on passe d’un arome "aucun" à "fraise" ou "abricot" ou "vanille" ou inversement. On va par conséquent les utiliser comme des attributs privés, c'est-à-dire qu'ils ne peuvent être directement manipulés qu'à l'intérieur de la définition de classe.

On va créer également des méthodes permettant d’interagir avec l’objet Yaourt pour attribuer un arôme ou récupérer un genre par exemple.

🐍 Console Python
>>> mon_yaourt1 = Yaourt('aucun', 18)
>>> mon_yaourt1.obtenir_arome()
"aucun"
>>> mon_yaourt1.obtenir_genre()
"nature"
>>> mon_yaourt1.modifier_arome("abricot")
>>> mon_yaourt1.obtenir_arome()
"abricot"
>>> mon_yaourt1.obtenir_genre()
"aromatise"

méthode modifier_genre

La méthode modifier_genre ne doit pas être appliquée à une instance. La modification de genre devra en effet se réaliser automatiquement si un changement d’arôme le nécessite. Elle sera utilisée à l’intérieur de la définition de la classe.

On peut représenter cette classe par le diagramme ci-dessous :

classDiagram
    class Yaourt {
    -str arome
    -str genre
    +int DDM
    obtenir_arome()
    obtenir_genre()
    modifier_arome()
    modifier_genre()
    }

Compléter la classe Yaourt :

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 10/10
.128013:,ag)1ikn9D/S=vmsuhb.84y7eY62odt c0(Mwr5_P3plf050F0A0G0d0h0T0r0H0I0T0d0r0r0o010G0h0S010406050r0s0q0q0d0N0y040n0E0T0s0/0E0j050m0_0{0}0 0@0S04181f051i0m1i1k1f0@0F0h0p0%0)0+0-0t0h0e0t0T1y0t0G0=050Y0u0T0A1t0*0,011x1z1B1z0G1H1J1F0G0u0E0F0 1G0N1g0G0t0%120r0S0d0j0-0D011L1v010U0!0A0j0d0q0A1F1-1/1@1N1`1J1}1 0=0a0H0Q0N0E0S0E0r0h150j0H0W1+0N0N0A0I2k18220j1g0m1)2x0G1%1$1(0F240-1B0j1|2h1F1q1s0(1M2H0h2J0j1Z1r1F0S2q1g2v2x2#0^1.2l2P1^2U0N0|0T0=0H0g2u2)0?2(232+1N2-2/2;0D2@1/2_2v2G012~0d2:040H0R322w0@352|0-383a0H0x3e342)363k2;0O3o3g3q3i370E2.392;0C3v2`2*1u2}3A2 3b0z3F3h3I3j3K3C3b0w3O3x3Q3z3B3l0k3W2{3Y3s040g0J3%3H2Q3Z3L0g2?192^3w3(3:3*0g313^333`3/2,3S3a0g3d403f3G3r450=0g3n493p3{443!4e3u4h424c4l3+3E4o4b3y3}3N4u3P3|4d3+3V4z3X4B4r0g3$4F4j3J4r0D3-4L434N3L0D3@2#4p4w4C0D3 4X4v3)4!484%4A4k4U4g4,4G4.3T0D4n2%1l2Z182N2A0F2E360I1Z201g4~1j4|4`2%530W2!4=1N0i0=2|3o4(3:0M2;5k4-2}0I0=0B0d0E0s0N0G5p5f0-0;040b3v0H5H0H5l1^5h040W0U5A4M0-5n3b5Q4S0-0U0q0=0P0P2S2j5#5V365D0K5*3y0u5D0r0A0T5P4h5K1N5D0c3o5J5q3j0=0}0E1 5.3Y5|5~5`615N5x0A0A663:5D0f5F4o5I6m5 5B015:0=5=5@6g1^0E0=0v6v2}622e654h6o5R016x040o6960376C646f6l6n5H6a6q5;5?5^2%6N6J6z5_6N0j0=0l0l0L6M6p6J6L6F6V6*6c2q6R4X6T6U6N5M0h6Z2^6G5W6O04636E2#74366;6=7a6V0r0g0=000d0s0I0s0j006A5C0=6k6|6}6m6V6r046t72336V6$7r760e1|2q6/6H6;7L757h7j1}0G6d7q6S6T6V5M5?5=7G5D7u3_7w7x6N7z7B7G7F6(6p6^7I0j7K6?6#0=7e737g7i047k6D0d0/5=7V4X067+6p5M5O7G5T5J7;6H0j0U0=0E0u0G1|0h0N0P7@7_6!6p5,7G7-6Y7$0=6j5G6}7Y0=2q7T0N177`6p8z6u8h757:8v8i0=8t6{3_895I8G5N0A7C2w6V8f7G8j8l8n8p8r788X7D6N8x8Q368O8(5e6H6i7(417w8#8I5x8L7f7,6X8P8T8R6y8,6P798Y8Z6~8b0=8d8`3y8+9o3)8k040q2V1`0A8r8W8B045-9r3:8|9B5}8M8U776D8?8)8^8C913f936 0=717O3r9g9N5U7{6K7}337b3y7Q817l7n7p9B9R0?7*8!996s8A9E6w9e9|6B049A9J9d6K9X9+80007S7U8E7X9U047!9!6V7%ac7*7y9a8}7E9~9c9Ya17J9!9*3Y7Na3369,8264840h863v9jaw3:8c8%8e5o9 3j9t9v1q9x8;9M9B9Dar5/an9Ha63)9Z9B8D7W6nam9`9b2^ap046%aZa(9L6Qa%3:ay987=a)a,8a6H9GaP6Iaqa;6)0=aS710h9y8sauaX9fa`9h8@8w8C3F0m5c0A2x2Ybs4}1r4 2A2C2y1Y1!2A0d1Ibv0m4~0@bI0X0Z0#04.