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 staat een 7 gemiddeld voor de vakken in jouw opleiding en je hebt 60 of meer studiepunten gehaald op het moment van het inleveren van de leerovereenkomst. Een cijferlijst moet bij de leerovereenkomst toegevoegd worden.
De leerovereenkomst wordt op de ingangseisen gecontroleerd. Daarna krijg je bericht dat je kunt inschrijven.
Je dient kennis te hebben van objectgeörienteerd programmeren en objectgeörienteerd analyseren en ontwerpen. Je kunt:
- vanuit een gegeven specificatie zelfstandig een eenvoudig objectgeoriënteerd programma bestaande uit een beperkt aantal klassen ontwerpen, waarbij iedere klasse een duidelijke, beperkte verantwoordelijkheid heeft,
- de syntaxis en semantiek van (delen van) de programmeertaal Java gebruiken om het ontwerp te implementeren in een werkend programma,
- een programma voorzien van een eenvoudige grafische gebruikersinterface,
- geheugenmodellen gebruiken om de werking van een programma te verklaren,
- eenvoudige algoritmen ontwerpen en implementeren,
- heldere en begrijpelijke Java-programmacode schrijven,
- klassen documenteren met Javadoc,
- testprogramma’s schrijven om de correcte werking van een klasse te testen.
- uitleggen hoe het Unified Process verloopt, welke artefacten in dit proces geproduceerd kunnen worden en hoe iteraties in dat proces gepland worden,
- voor een klein informatiesysteem op grond van een casusbeschrijving en ongestructureerd materiaal uit specificaties het gewenste gedrag van dat systeem modelleren met behulp van use-casediagrammen, use cases, systeemsequencediagrammen, activiteitendiagrammen, toestandsdiagrammen, en een domeinmodel,
- aangeven wat de kenmerken zijn van een goed objectgeoriënteerd ontwerp en welke rol patronen daarin spelen,
- voor een gegeven use case uit een beperkt informatiesysteem een objectgeoriënteerd ontwerp opstellen in de vorm van interactiediagrammen en een daaruit afgeleid ontwerpklassendiagram, gebruikmakend van de basis-GRASP-richtlijnen.
Literatuur
Elke cursus heeft online en/of fysieke literatuur die na inschrijving voor de cursus beschikbaar wordt gesteld. Het fysieke materiaal wordt op jouw thuisadres geleverd. Literatuur hoeft dus niet afzonderlijk aangeschaft te worden.
Rooster
Deze cursus start in kwartiel 3 (februari). Begeleidingsduur is 10 weken met online bijeenkomsten waaraan je kunt deelnemen via de digitale leeromgeving.
Tijdens de bijeenkomsten of in de digitale leeromgeving kun je inhoudelijke vragen stellen aan de docenten. De online bijeenkomsten zijn in de avonduren en worden opgenomen; je kunt ze na afloop opnieuw bekijken.De bachelors Informatica en Informatiekunde organiseren in deze periode een studiedag op locatie, met plenaire en cursus-bijeenkomsten. Meer informatie vind je op ou.nl/inf-studiedag.
Toetsing
Digitaal tentamen met open vragen (3 data per jaar) en een opdracht .
Tentamens kunnen zowel thuis als op een studiecentrum afgelegd worden.
Aanvullende informatie
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.
Deze cursus is ook onderdeel van het focusprogramma Academisch programmeren.
De cursussen van de Open Universiteit volg je thuis wanneer jij tijd hebt (activerend online onderwijs met digitale begeleiding).
Meer informatie: www.ou.nl/studieaanbod/IB0902