Geavanceerd objectgeoriënteerd programmeren
De cursus bestaat uit vier blokken.
Het grootste deel van het eerste blok is gewijd aan de vraag wat een goed programma is en het typesysteem van Java. De eisen waaraan een goed programma dient te voldoen, beschrijven we in de vorm van specificaties die de basis vormen voor de implementatie en het ontwikkelen van bijbehorende testcases. Als onderdeel van het typesysteem wordt overerving behandeld. Dynamische binding van methoden is daarbij een sleutelbegrip. Vervolgens komen abstracte klassen en interfaces aan de orde, begrippen die een belangrijke rol spelen bij het definiëren van zogeheten ontwerppatronen: schematische oplossingen voor veelvoorkomende problemen. Het blok eindigt met een korte behandeling van Generics: de uitbreiding van Java die het gebruik van typeparameters mogelijk maakt.
Het tweede blok gaat over soorten fouten die kunnen optreden en hoe deze afgehandeld kunnen worden, bijvoorbeeld met behulp van exceptions. Er wordt onder meer kort ingegaan op debuggen en testen.
Blok drie biedt een inleiding in het programmeren met threads, waardoor concurrency mogelijk wordt. We gaan in op wat concurrency precies is en geven aan hoe een concurrent programma met behulp van Java’s Executor Framework gemaakt kan worden. Concurrent programma’s zijn complex en kunnen subtiele fouten bevatten. Daarom beschrijven we hoe u een eenvoudig concurrent programma kunt analyseren.
Het laatste blok behandelt de constructie van gebruikersinterfaces. In twee leereenheden wordt ingegaan op het werken met Swing-componenten; ook het event-handling-mechanisme komt daarbij aan de orde. De laatste leereenheid gaat in op hoe de cohesie en koppeling van OO-programma’s verbeterd kan worden en behandelt als toepassing daarvan het Observer-patroon, een veelgebruikt en belangrijk ontwerppatroon dat het mogelijk maakt om de domeinlaag onafhankelijk te houden van de gebruikersinterface, en het Model-View-Controller-model, een veelgebruikte architectuur voor het scheiden van verantwoordelijkheden.
Leerdoelen
Na het volgen van deze cursus kun je:
- een contract voor een klasse en methode interpreteren,
- op basis van een contract een implementatie geven en bijbehorende tests opstellen,
- overerving (inclusief het gebruik van abstracte klassen en interfaces), exception handling en threads begrijpen en toepassen,
- eenvoudige generieke klassen definiëren,
- uitleggen hoe in objectgeoriënteerde programma’s gebruikgemaakt kan worden van programmeren tegen een interface,
- een eenvoudig concurrent programma programmeren,
- met behulp van de package javax.swing zelf een grafische gebruikersinterface programmeren,
- een programma op cohesie en koppeling beoordelen en dat programma verbeteren,
- het MVC-model en het Observerpatroon toepassen.
Ingangseisen
Je dient IB1102 en IB1002 helemaal bestudeerd te hebben.
Literatuur
Het cursusmateriaal bestaat uit drie schriftelijke delen. Ander materiaal, zoals programmeerbouwstenen en oefententamens, worden via de cursussite uitgeleverd.
Mediagebruik
In deze cursus gaan we ervan uit dat je beschikt over een recente versie van de ontwikkelomgeving Eclipse en Java versie 8 of hoger. Om Eclipse te kunnen draaien, heb je een pc nodig met Windows. Eclipse is ook beschikbaar voor Linux, Solaris en MacOS. De Open Universiteit geeft echter geen ondersteuning bij het gebruik van die besturingssystemen.
Rooster
Online-bijeenkomsten in kwartiel 3 (februari - april)
Zie de cursuswebsite www.ou.nl/studieaanbod/IB0902 voor de exacte data en tijdstippen.
Toetsing
Digitaal groepstentamen met open vragen en een opdracht.
Aanvullende informatie
Deze cursus is ook onderdeel van het focusprogramma Academisch programmeren, dat op 1 september 2024 start.