← Back to CoursesStemExpert
StemExpert
Expert · Werkboek · 35. Objectgericht programmeren en softwareontwerp
StemExpert · Brecht Corbeel · schoolium.me
StemExpert
E35. Objectgericht programmeren en softwareontwerp — werkboek
EExpert · deel E7 · Informatica

Werkboek · hoofdstuk 35Objectgericht programmeren en softwareontwerp

Software groeit door duidelijke contracten, vervangbare onderdelen en aantoonbaar gedrag

Je leest objecttoestand, herstelt contractfouten en ontwerpt vervolgens software die zonder echte hardware te toetsen is.

3× oefenen3× toepassen3× uitdagen± 290 min0/9 gedaan
Een softwaregrens maakt een sensor verwisselbaar zonder de regelwet te herschrijven.
Een softwaregrens maakt een sensor verwisselbaar zonder de regelwet te herschrijven.
Hoe lees je een opdracht?
Drie tredenOefenen Toepassen Uitdagen

Elk hoofdstuk bouwt op: eerst oefenen (één stap, direct toepassen), dan toepassen (meerdere stappen, in een context), dan uitdagen (transfer, open problemen, andere leerlijnen erbij).

De StemExpert-schaal5

Eén moeilijkheidsschaal van 1 tot 9 over de drie niveaus heen: Fundamental loopt van 1 tot 4, Intermediate van 3 tot 7, Expert van 6 tot 9. Zo zie je dat de uitdaging van het ene niveau de oefening van het volgende is.

Oefenen

Oefenen

één stap, direct toepassen
35.1

Twee objecten, één foutlijst

Oefenen6Analyseren25 min
Een klasse definieert fouten=[] buiten __init__.
  1. a
    Leg uit wat er gebeurt als s1.fouten.append('oud') wordt uitgevoerd. Herstel het ontwerp.
35.2

Een eenheid in het contract

Oefenen6Rekenen25 min
De sensor levert 291,15 K; de regelaar verwacht graden Celsius en setpoint 20 °C, Kp 200 W/K.
  1. a
    Bereken de correcte vraag en toon de fout bij blind doorgeven.
35.3

Is of heeft

Oefenen6Begrijpen25 min
Een kamerregelaar gebruikt een SHT31 en een SSR.
  1. a
    Kies overerving of samenstelling en motiveer met het substitutiecontract.
Toepassen

Toepassen

meerdere stappen, in een context
35.4

Leeftijd exact op de grens

Toepassen7Programmeren25 min
Het contract staat leeftijden van 0 tot en met 5 s toe.
  1. a
    Schrijf tests op −0,1; 0; 5; 5,1 s en voor NaN. Geef het verwacht gedrag.
35.5

Een methode blokkeert

Toepassen7Analyseren25 min
Een wifi-sensor duurt soms 800 ms; lees() had maximaal 5 ms beloofd.
  1. a
    Beschrijf hoe de contractbreuk de regeling raakt en herstel de architectuur.
35.6

Wat zit in de commit?

Toepassen7Begrijpen25 min
Je voert git add model.py uit, wijzigt model.py opnieuw en doet git commit.
  1. a
    Welke versie wordt vastgelegd? Geef een veilige reviewvolgorde.
Uitdagen

Uitdagen

transfer, open problemen, leerlijnen combineren
35.7

Van lange functie naar ontwerp

Uitdagen9Ontwerpen55 min
Een functie leest I²C, rekent PID, stuurt MQTT, schrijft een SD-kaart en schakelt de pomp.
  1. a
    Verdeel verantwoordelijkheden en leg ten minste vier interfacecontracten vast. Toon welke integratietest een unit test aanvult.
Zo wordt dit beoordeeld
grenzenHardware, beslislogica en opslag onafhankelijk.
contractEenheid, tijd, fouten en eigenaar benoemd.
bewijsIntegratietest verbindt minstens twee onderdelen.
35.8

Stationssoftware vrijgeven

Uitdagen9Habitat60 min
De predictor wordt vervangen, terwijl de klimaatmodule moet blijven regelen.
  1. a
    Ontwerp een release- en terugrolprocedure met manifest, toetsing en actor-eigenaarschap.
Zo wordt dit beoordeeld
reproduceerbaarheidAlle code-, data-, model- en configuratieversies vast.
veiligheidLokale sturing blijft eigenaar en begrenst.
terugrolVorige versie en migratiepad aantoonbaar getest.
35.9

Een groene testset tegenspreken

Uitdagen9Onderzoeken25 min
Alle tests slagen, maar elke test berekent verwacht vermogen met precies dezelfde functie als productie.
  1. a
    Leg uit waarom dit zwak bewijs is en ontwerp onafhankelijke orakels en minstens één mutatietest.
ZelfevaluatieKleur per doel: lukt al / bijna / nog niet