Opa vertelt: programmeren (3)

Meer Opa vertelt
Meer Opa vertelt

In de serie “Opa Vertelt” en zoals aangekondigd in programmeren (2), nu meer over de OO cursus zoals die een aantal jaren is gegeven bij PTS en als basis heeft gediend voor het huidige OO onderwijs in de informatica opleiding aan de RUG.

De cursus is oorspronkelijk ontwikkeld door Eelco Dijkstra in C++ , maar al vrij snel kwam hij er achter dat C++ niet de ideale taal was (en nog steeds is) voor onderwijs op OO gebied. De volgende versie (in 1996) gebruikte dan ook Smalltalk/V. In een light versie wel te verstaan, toen passend op één flop (en helaas niet helemaal foutvrij). Java bleek uiteindelijk een betere keuze en de meeste versies zijn dan ook met deze taal gegeven.

De cursus was steeds ingericht middels drie modules, OOA, OOD en OOP, gegeven in de volgorde: OO analyse, dan OO programming en tot slot OO design. Analyse als eerste start is voor de hand liggend. Zo kun je, zonder nog te hoeven programmeren, OO begrippen uitleggen en een eerste analyse maken van je op te lossen probleem. Daarna lijkt OO design voor de hand liggend, maar door eerst over te stappen naar programmeren (in Java) zie je ook het doel van het ontwerp en kan het deel tussen analyse en realisatie later makkelijker worden ingevuld. Deze volgorde is later in informatica-colleges zoals OOprogrammeren ook steeds gehanteerd (tot er besloten is programmeren enerzijds en analyse/ontwerp anderzijds uitelkaar te trekken).

De PTS cursus was gebaseerd op de drie boeken van Peter Coad en Edward Yourdon, OO analysis, OO design en OO programming (laatste geschreven door Coad en Nicola). De heren hadden een uitermate simpele benadering van het OO concept, heel handig bruikbaar voor een eerste uitgebreide introductie in dit begrip. Bij het OOD-gedeelte werd daarnaast het boek van Gamma et.al (Design patterns) gebruikt. In een latere stadium werden Coad en Yourdon ingeruild voor de fusion-methode, zoals de naam al zegt het beste uit een in die tijd nog veelheid aan OO analyse en ontwerpmethoden. Nog weer later werd overgestapt op het unified process en UML en werd het boek van Larman gebruikt. Larman is op dit moment nog steeds in gebruik bij het vak Software analyse en ontwerp (inmiddels wel in versie 3, inclusief een agile aanpak).

Uit een beschrijving van de cursus in 1996:

De cursus bestaat uit 3 onderdelen (modulen) van elk 6 dagdelen: 4 avonden theorie en 1 dag practicum. Elk onderdeel wordt afgesloten met een tentamen. De cursus is voornamelijk gebaseerd op de methode van Coad en Yourdon (OOA/OOD, zie [2]), en later ook op Fusion, (zie [4]), maar ook andere methoden komen aan bod, zoals OMT (Rumbaugh), OOSE (Jacobson), Design by contract (Meyer), de notatie van Booch, e.d. De nadruk bij deze cursus ligt meer op de concepten dan op de precieze notaties van de genoemde methoden. Programmeertalen Als programmeertaal wordt JAVA gebruikt, zie [1]. JAVA heeft een syntax die vergelijkbaar is met C++, maar is i.t.t. C++ zuiver object-georiënteerd. Andere talen zoals Smalltalk, Eiffel en C++ worden hier en daar genoemd. Cases
Bij de cursus worden (naast wat kleinere voorbeelden) twee uitgebreide cases behandeld, nl. de administratie van een videoshop en de besturing van een HomeVox huiscentrale.
References

[1] Gary Cornell, Cay S. Horstman, Core Java, Sunsoft Java Series, Prentice Hall, 1996, ISBN 0-13-565755-5 (met CD-ROM) [2] Peter Coad, Edward Yourdon, Object-Oriented Analysis (second edition), Yourdon press computing series, Englewood cliffs, 1991, ISBN 0-13-629981-4
[3] Erich Gamma et.al., Design patterns: elements of reusable object-oriented software, Reading, MA, Addison-Wesley, 1995, ISBN 0-201-63361-2
[4] Derek Coleman et.al., Object-Oriented development, the fusion method, Prentice Hall international editions, 1994, ISBN 0-13-101040-9
Indeling
:
OO Analyse
literatuur: [1], [2], afdrukken van de gebruikte transparanten.
inhoud:
1. inleiding OO concepten; inleiding JAVA; overzicht OO-cursus: OOA, OOD, OOP
2. OOA: classes en objecten; structuren: whole/part, gen/spec (inherentence); attributen; services
3. practicum JAVA
4. practicum JAVA
5. OOA: attributen; services: vervolg; relaties tussen objecten; ‘subjects’; clustering van classes.
6. OOA ‘patterns’; analyse van de videoshop; afsluiting.
OO Programming
literatuur: [3], afdrukken van de gebruikte transparanten.
inhoud:
1. overzicht OOD componenten; Smalltalk concepten (metaclasses); van OOA naar OOP; inleiding Model View Controller concept
2. MVC mechanisme; implementatie van persistentie
3. practicum videoshop
4. practicum videoshop
5. MVC: valueHolder en pluggable components; processen en synchronisatie
6. implementatie in niet OO-talen: implementatie van relaties; implementatie van inheritance; andere OO-talen: Eiffel, C++; afsluiting
OO Design
literatuur: [4], afdrukken van de gebruikte transparanten, dictaat over homevox.
inhoud:
1. OOD doestelling; overzicht; Use cases (scenario’s); inleiding in fusion
2. fusion OOA en OOD; introductie homevox
3. practicum homevox
4. practicum homevox
5. afronding homevox
6. design by contract; fusion en andere methoden; afronding

Vanaf 1999 werd de cursus iets verkort tot drie modules van vier lessen en één bijzondere les (nl. introductie in Java):

Opzet O O cursus vanaf 2000 De cursus bestaat uit 3 x 4 lessen en 1 bijzondere les. De eerste module (4 lessen) behandelt grotendeels de analyse volgens RPM (Recommended Process and Models, ongeveer het oudere Fusion, zie het boek van Larman) inclusief de hiervoor benodigde UML-notatie. De module wordt afgesloten met een schriftelijke toets van drie uur, af te nemen in de PTS-cursusruimte.Dan volgt een introductie in Java. Hiervoor zijn twee opties: zelfstandig via de CBT-methode of één les, waarin een introductie in Java wordt gegeven en een voorbeeld kan worden uitgewerkt.De tweede module behandelt specifieke punten uit de implementatie, zoals model view controller, persistence, threads en gaat dieper in op design by contract à la Eiffel. De module wordt afgesloten met een practicumtoets, waarbij de behandelde onderwerpen in een of meer programmeeropgaven worden getoetst.De programmeeropgaven kunnen worden gemaakt in de leszaal van PTS en dienen, evenals de schriftelijke toets, binnen drie uur gemaakt te worden.
De laatste module behandelt het ontwerpen volgens RPM en gebruikt hierbij het welbekende homevox-voorbeeld als rode draad. Er is een aparte les gewijd aan Design Patterns, waarbij het boek van Gamma et.al. wordt gebruikt. De module wordt afgesloten met een takehome-opgave, waarbij deels schriftelijk en deels middels een implementatie een verdere uitbreiding aan het homevox-voorbeeld moet worden gegeven.

De lessen zijn op verschillende locaties gegeven. Aan het eind in een eigen leslocaal van PTS op de locatie in Bussum, daarvoor een tijdje in Nieuwegein (Blokhoeve) en daarvoor zelfs in een leslocatie op het terrein van Hollandse Signaal Apparaten in Naarden (nu Thalis??). Het gebouw van HSA was alleen toegankelijk met een pasje en daarvan was een veelheid aan categoriën beschikbaar. Bij elke les op die locatie kreeg ik zo ongeveer een ander soort pasje mee. In die begintijd waren de practica ten kantore van PTS, gewoon achter de pc’s van de medewerkers. Later werden pc’s gehuurd en nog later zelf door PTS aangeschaft in combinatie met een eigen leslokaal.

De broodjes en de soep in de kelder van het PTS gebouw in Bussum zal ik niet vergeten evenmin als die ene les op 11 september 2001 (ja, inderdaad 911!!). In plaats van lesgeven hebben we bijna de hele avond rond de pc van Henk van Schilt gezeten die daarop live tv beelden kon laten zien.

Volgende keer ga ik dieper in op het zg. homevox voorbeeld, dat jarenlang als belangrijke opgave en voorbeeld in de cursus is gebruikt en vele facetten van OO bevat.