Sprint 6 Β· De blauwdruk  Β·  US1: Het losse-variabelen-probleem

Als developer, wil ik gegevens die bij elkaar horen in één blauwdruk vastleggen in plaats van in steeds meer losse variabelen, zodat ik een derde of vierde ding kan toevoegen zonder dat mijn code dichtslibt met losse namen die ik zelf uit elkaar moet houden.

Taak 3: Elk object heeft zijn eigen data

Twee objecten uit dezelfde blauwdruk zijn tóch twee losse dingen. Verander een attribuut van het ene object en het andere blijft precies zoals het was. Dat is het hele punt van een class: één vorm, veel exemplaren, elk met eigen state.

EΓ©n object aanpassen raakt de rest niet

Je kunt de attributen van een object apart instellen met de punt-notatie aan de linkerkant van een =. Zo geef je elk object zijn eigen naam en waarden:

rex = Dog()
bella = Dog()

rex.name = "Rex"
bella.name = "Bella"

rex.energy = 60      # only Rex gets tired

Nu is rex.energy gelijk aan 60, maar bella.energy is nog steeds 100. Twee objecten uit dezelfde blauwdruk, maar met eigen, gescheiden data.

Dit is precies wat losse variabelen niet konden.
Vroeger moest je dog1_energy en dog2_energy met de hand uit elkaar houden. Nu regelt het object dat: rex.energy hoort onlosmakelijk bij Rex.

Zie de onafhankelijkheid

Sleep de schuif om rex.energy te wijzigen. Let op de rechterkant: bella.energy beweegt niet mee. Ze delen een blauwdruk, geen data.

rex = Dog()
rex.energy = 100
bella = Dog()
bella.energy = 100
rex.energy = 100 Β· bella.energy = 100
>>> Oefenomgeving: Python REPL Simulator

De class Dog (met energy = 100) is al gedefinieerd. Maak twee honden, pas er één aan en bewijs dat de andere ongemoeid blijft.

  1. rex = Dog() en bella = Dog()
  2. rex.energy = 60 β€” pas alleen Rex aan.
  3. rex.energy β€” controleer Rex.
  4. bella.energy β€” is Bella nog 100?
  5. rex is bella β€” zijn het echt twee objecten?
Python 3.11 REPL Simulator Β· class Dog is gedefinieerd Β· typ een commando en druk op Enter.
>>> 
🧩

Jouw opdracht: drie onafhankelijke spelers

Gebruik je Player-blauwdruk uit taak 2 (attributen lives en score). Nu geef je elke speler zijn eigen naam en zijn eigen voortgang.

  1. Maak drie Player-objecten aan.
  2. Geef elke speler een eigen name via de punt-notatie.
  3. Laat speler 1 scoren (verhoog alleen zijn score).
  4. Laat speler 2 een leven verliezen (verlaag alleen zijn lives).
  5. Print alle drie de spelers en bewijs dat speler 3 nog op de startwaarden staat.

Acceptatiecriteria

  • Er zijn drie losse Player-objecten, elk met een eigen naam.
  • Je past de score van precies één speler aan zonder de andere te raken.
  • Je past de levens van een andere speler aan zonder de rest te raken.
  • De uitvoer bewijst dat speler 3 nog exact op de startwaarden staat.