Ga naar de inhoud
Informatica · Klas 6 VWO · Software Engineering en Object-Oriented Design · Periode 2

Programma's Bouwen met Blokken

Leerlingen gebruiken visuele programmeeromgevingen (zoals Scratch) om hun eigen interactieve verhalen, animaties en games te maken.

SLO Kerndoelen en EindtermenSLO: Voortgezet onderwijs - ProgrammerenSLO: Voortgezet onderwijs - Creativiteit

Over dit onderwerp

Object-Oriented Programming (OOP) is de standaard in de professionele softwareontwikkeling. In de zesde klas gaan we verder dan alleen klassen en objecten; we duiken in de diepere principes van overerving, polymorfisme en inkapseling. Dit stelt leerlingen in staat om complexe systemen te ontwerpen die modulair, herbruikbaar en onderhoudbaar zijn. Het sluit aan bij de SLO-eindtermen voor programmeren en modelleren, waarbij de focus ligt op het vertalen van een probleem uit de werkelijkheid naar een technisch ontwerp.

Door polymorfisme leren studenten hoe verschillende objecten op hun eigen manier kunnen reageren op dezelfde instructie, wat essentieel is voor het bouwen van flexibele software. Inkapseling leert hen na te denken over informatiebeveiliging en interface-ontwerp binnen hun eigen code. Dit onderwerp is bij uitstek geschikt voor actieve werkvormen waarbij leerlingen elkaars ontwerpen beoordelen en samenwerken aan grotere codebases, net zoals in een echt ontwikkelteam.

Kernvragen

  1. Hoe kun je met programmeerblokken een verhaal vertellen of een spel maken?
  2. Welke soorten blokken zijn er en wat doen ze?
  3. Hoe kun je verschillende blokken combineren om complexe acties uit te voeren?

Leerdoelen

  • Ontwerpen van een interactief verhaal of animatie met behulp van programmeerblokken, waarbij de leerling specifieke gebeurtenissen en reacties programmeert.
  • Analyseren van de functionaliteit van verschillende programmeerblokken (gebeurtenis, beweging, uiterlijk, geluid, controle, waarnemen, operatoren, variabelen) en uitleggen hoe ze samenwerken.
  • Creëren van een eenvoudige game met programmeerblokken, waarbij de leerling spelregels, score bijhouden en interactie met spelers implementeert.
  • Evalueren van de logische volgorde en efficiëntie van een reeks programmeerblokken om een gewenst resultaat te bereiken.
  • Demonstreren hoe variabelen en operatoren gebruikt kunnen worden om dynamische elementen in een programma te realiseren.

Voordat je begint

Basisprincipes van Computergebruik

Waarom: Leerlingen moeten bekend zijn met het navigeren in een digitale omgeving en het uitvoeren van basale computerhandelingen om een programmeeromgeving te kunnen gebruiken.

Logisch Redeneren en Probleemoplossing

Waarom: Het vermogen om stappen te volgen en problemen op te delen in kleinere delen is essentieel voor het begrijpen van algoritmes en het bouwen van programma's.

Kernbegrippen

ProgrammeerblokEen visueel element in een programmeeromgeving dat een specifieke commando of instructie vertegenwoordigt. Blokken worden gecombineerd om een programma te bouwen.
ScriptEen reeks programmeerblokken die samen een specifieke taak uitvoeren of een reeks acties definiëren binnen een programma.
GebeurtenisblokEen speciaal type blok dat een programma start of een reeks acties activeert wanneer er iets specifieks gebeurt, zoals het klikken op een vlag of een toets indrukken.
VariabeleEen opslaglocatie in een programma die een waarde kan bevatten die kan veranderen tijdens de uitvoering, zoals een score of een teller.
Lus (Control Flow)Een programmeerconstructie die ervoor zorgt dat een reeks instructies herhaaldelijk wordt uitgevoerd, bijvoorbeeld 'herhaal 10 keer' of 'zolang een voorwaarde waar is'.
Voorwaarde (Control Flow)Een programmeerconstructie die bepaalt of een bepaald deel van de code wel of niet wordt uitgevoerd, gebaseerd op of een bepaalde uitspraak waar of onwaar is (bijvoorbeeld 'als... dan...').

Pas op voor deze misvattingen

Veelvoorkomende misvattingOvererving is altijd de beste manier om code te hergebruiken.

Wat je in plaats daarvan kunt onderwijzen

Leerlingen maken vaak te diepe hiërarchieën die star worden. Leer ze het principe 'compositie boven overerving' door ze een situatie te laten modelleren waarbij een object eigenschappen van meerdere bronnen nodig heeft.

Veelvoorkomende misvattingEen interface en een abstracte klasse zijn hetzelfde.

Wat je in plaats daarvan kunt onderwijzen

Leg uit dat een interface een contract is over gedrag, terwijl een abstracte klasse ook gedeelde implementatie kan bevatten. Gebruik een rollenspel waarbij de interface de 'functieomschrijving' is en de klasse de 'werknemer'.

Ideeën voor actief leren

Bekijk alle activiteiten

Verbinding met de Echte Wereld

  • Game-ontwikkelaars bij bedrijven zoals Nintendo en Sony gebruiken visuele programmeerconcepten, vergelijkbaar met blokken, in de vroege stadia van game-ontwerp om snel prototypes te maken en spelmechanismen te testen voordat ze overgaan op complexere code.
  • Educatieve platforms zoals Code.org en Scratch worden wereldwijd ingezet om kinderen en jongeren de basisprincipes van programmeren bij te brengen. Deze platforms gebruiken blokgebaseerd programmeren om de instapdrempel te verlagen, vergelijkbaar met de aanpak in deze les.
  • Animators en motion designers gebruiken visuele scriptingtalen in software zoals Adobe After Effects om complexe animaties te creëren. Ze verbinden 'nodes' die vergelijkbaar zijn met programmeerblokken om beweging, effecten en interacties te definiëren.

Toetsideeën

Uitgangskaart

Geef leerlingen een vel met 3-4 programmeerblokken. Vraag hen om de blokken in de juiste volgorde te zetten om een specifieke actie te laten uitvoeren (bijvoorbeeld: een kat laten zeggen 'Hallo!' en dan 2 stappen laten zetten). Laat ze hun keuze kort toelichten.

Peerbeoordeling

Laat leerlingen hun gemaakte animatie of game aan een klasgenoot laten zien. De beoordelaar stelt de volgende vragen: 1. Wat vind je het leukste aan dit programma? 2. Is het duidelijk wat er gebeurt? 3. Welk blok zou je toevoegen om het nog beter te maken en waarom?

Snelle Controle

Stel een vraag over de functie van een specifiek blok, bijvoorbeeld: 'Stel je voor dat je een spel maakt waarbij de speler moet springen. Welk type blok zou je gebruiken om de sprong te activeren en waarom?' Verzamel antwoorden via een poll of korte schriftelijke reactie.

Veelgestelde vragen

Waarom is OOP zo belangrijk voor het eindexamenproject?
Het eindexamenproject (meesterstuk) vereist vaak een grotere codebase. Zonder OOP-principes wordt de code onoverzichtelijk en moeilijk te debuggen. OOP helpt leerlingen om hun project logisch te structureren en taken te verdelen.
Hoe kan actieve werkvormen helpen bij het leren van abstracte OOP-concepten?
Door fysieke modellen of diagrammen te gebruiken in groepsverband, worden relaties tussen objecten zichtbaar. Het bespreken van ontwerpkeuzes in een 'Gallery Walk' dwingt leerlingen om hun logica te verwoorden, wat leidt tot een dieper begrip van architectuur.
Is polymorfisme niet te moeilijk voor VWO-leerlingen?
Nee, mits het goed gevisualiseerd wordt. Als leerlingen zien dat een lijst met 'Vormen' zowel 'Cirkels' als 'Vierkanten' kan bevatten die allemaal een 'teken()'-methode hebben, valt het kwartje meestal snel.
Welke programmeertaal is het meest geschikt voor OOP op het VWO?
Talen als Java, C# of Python zijn zeer geschikt. Java en C# dwingen OOP-structuren sterker af, wat educatief gezien voordelen heeft voor het aanleren van types en interfaces.