Studiewijzer E: SOPX2E1C1 en SOPX2E1P1.
Studiewijzer TI: SOH1ST1 en SOH1SP1.

© Harry Broeders.

titel: Object Georiënteerd Programmeren in C++
code onderwijsdeel: E: SOPX2E1C1 en SOPX2E1P1
TI: SOH1ST1 en SOH1SP1
studiebelasting: 84 SBU
semester / kwartaal: E: H2 / 1 TI: H1 / 1
contacturen: 2 uur/week college en 2 uur/week practicum
toetsing: tentamen (cijfer) en practicumbeoordeling (O/V)
benodigde voorkennis: Programmeren uit de P fase
verantwoordelijke docent: Harry Broeders

Inleiding

In steeds meer producten en systemen wordt programmatuur gebruikt. Het is zeker dat een aanstaande bachalor of engineering elektrotechniek of technische informatica hiermee te maken krijgt. In de propedeuse heb je leren programmeren in de programmeertaal C met behulp van de functionele decompositie ontwerpmethode (structured programming and structured design). Deze methode van werken is prima geschikt voor kleine programmeerprojecten maar levert bij grote projecten problemen op, vooral op het gebied van onderhoudbaarheid, uitbreidbaarheid en hergebruik. Op dit moment is de zogenaamde object georiënteerde ontwerpmethode (OOD = Object Oriënted Design) erg populair.

Tijdens deze onderwijseenheid zal je de basisaspecten van object georiënteerd programmeren (OOP) leren aan de hand van de, op C gebaseerde, programmeertaal C++. Je zult leren hoe het met behulp van templates mogelijk is om algoritmen en datastructuren generiek te definiëren. Een generiek algoritme is een algoritme dat onafhankelijk is van de gebruikte datatypen. De programmeertaal C++ ondersteunt dus 3 verschillende programmeer paradigma's: structured programming, object oriënted programming en generic programming.

In deze onderwijseenheid maak je kennis met object oriënted programming en generic programming. Voor E studenten die kiezen voor de variant Computers & Datacommunicatie (C&D) wordt in semester H3 in de onderwijseenheid SOPX3 verder op deze onderwerpen ingegaan. Voor TI studenten wordt in semesters H1 t/m H3 in verschillende onderwijsdelen verder op deze onderwerpen ingegaan. In de C++ ISO/ANSI standaard is een verzameling generieke algoritmen en datastructuren opgenomen die in volgende onderwijsdelen behandeld zal worden.

Je zult na afloop van SOPX2E1C1/P1 of SOH1ST1/P1 in staat zijn om herbruikbare software componenten te gebruiken, ontwerpen, implementeren en testen. In deze onderwijseenheid ligt de nadruk op OOP, in volgende onderwijsdelen zal dieper op OOD en OOA (object georiënteerde analyse) worden ingegaan.

Globale leerdoelen

Na ongeveer een week:

Na ongeveer vier weken:

Na ongeveer zeven weken:

Als je deze onderwijseenheid met een voldoende hebt afgesloten ben je in staat om de basisaspecten van OOD en OOP toe te passen. Deze aspecten omvatten:

Literatuur

Thinking in C++Bij dit onderwijsdeel heb je geen boek nodig. Alle leerstof kun je in het dictaat vinden. Als je het dictaat onduidelijk vindt of als je meer voorbeelden zoekt zul je zelf op zoek moeten gaan naar een goed C++ boek. Een bruikbaar Nederlands boek is: Leen Ammeraal, C++ / druk 6, ISBN 9039519358. Als je meer achtergrondinformatie of diepgang zoekt kun je het volgende boek gebruiken: Bruce Eckel, Thinking in C++ 2nd Edition, Volume 1, ISBN 0-13-979809-9. Dit boek is ook gratis te downloaden van: http://mindview.net/Books/TICPP/ThinkingInCPP2e.html.

Broeders, Sheets De voorgaande link verwijst naar een pdf bestand. en voorbeeldprogramma's. De link voor dit plaatje verwijst naar een file in ZIP formaat.
De file handouts.pdf bevat alle sheets in het PDF formaat, verkleind tot 9 per pagina. De voorbeedprogramma's zijn opgenomen in een Borland C++ Builder 6 project group SOPX2.BPG

Broeders, Dictaat Object Georiënteerd Programmeren in C++. De voorgaande link verwijst naar een pdf bestand. Dit dictaat bevat:

Toetsing en beoordeling.

Er worden voor deze onderwijsdelen twee deelresultaten vastgesteld waarbij het eerste resultaat (tentamen SOPX2E1C1/SOH1ST1) een cijfer (1..10) is en het tweede resultaat (practicum SOPX2E1P1/SOH1SP1) een O(nvoldoende) of V(oldoende) is. Als het tweede resultaat een O is dan kan de onderwijseenheid waar deze onderwijsdelen deel van uitmaken niet worden behaald. Bij het tentamen mag je een boek en dit dictaat gebruiken. Het tentamen bestaat uit open vragen. Het practicum wordt beoordeeld met Onvoldoende of Voldoende. Het practicum bestaat uit 3 opdrachten. De opdrachtbeschrijving kun je hier vinden. Alle opdrachten worden afzonderlijk beoordeeld met een voldoende of onvoldoende aan de hand van:

Om het practicum met een voldoende af te sluiten moeten alle opdrachten voldoende zijn.

Weekplanning theorie.

De planning kan gedurende het kwartaal nog worden aangepast!

les inhoud sheets dictaat
1 inleiding 1 t/m 7 tot H1
2 better C: const, bool, std include, iostream, string en details 8 t/m 18 (laatste sheets evt. zelf)  H1
3 better C: dynamisch geheugen en reference 19 t/m 25 H2
4 Inleiding OOD en OOP 26 t/m 38 H3.1
5 Objects en Classes: datamembers, memberfuncties, public en private, constructor en destructor 39 t/m 45 H3.2 t/m 3.7
6 Objects en Classes: const memberfunctie, inline, default copy constructor en operator=, operator+= 46 t/m 50 H3.8 t/m 3.14 (eerste deel)
7 Objects en Classes: this, operator+, operator++ 51 t/m 59 (laatste sheets evt. zelf) H3.14 (tweede deel) t/m 3.20
8 Objects en Classes: type conversie, friend, operator<<, operator>> 60 t/m 70 (laatste 4 zijn overbodig) H3.21 t/m 3.24
9 Objects en Classes: copy constructor en operator= 71 t/m 78 H3.25 t/m 3.29
10 seperate compilation en template 79 t/m 83 H3.30 en 4
11 inheritance en polymorfisme 84 t/m 90 H5 t/m 5.3
12 slicing problem, ABC, hidding rule, overriding versus overloading 91 t/m 99 H5.4 t/m 5.5 en 5.7 t/m 5.9
13 virtual destructor, protected 100 t/m 104 H5.6 en 5.10 t/m 5.12
14 Herhaling en voorbeelden van overerving. - -

Weekplanning practicum.

week studiemateriaal tijdens practicum op school doen zelf doen thuis of op school, voor het begin volgende practicumles klaar
1 Opdracht 1b: dictaat 1.1 t/m 1.9. Doorlezen Gebruik van string en iostream en maken opdracht 1a. Maak een begin met opdracht 1b. Opdracht 1b afmaken.
2 Opdracht 1c: dictaat 1.10 en 1.11. Opdracht 1b afronden en opdracht 1c maken. Doorlezen Abstract Data Type en begin maken met opdracht 2a.
3 Opdracht 2a:  dictaat 2.2 t/m 2.5, 3.1 t/m 3.6 en 3.10. Opdracht 2a. Opdracht 2a afronden en begin maken met opdracht 2b.
4 Opdracht 2b: dictaat 2.6, 3.13 t/m 3.19 en 3.22 t/m 3.24.
Opdracht 2c: dictaat hoofdstuk 2 en 3.7.
Opdracht 2b afronden. Beginnen met opdracht 2c en opdracht 2d maken en afronden.
5 Opdracht 2e: dictaat 3.30. Opdracht 2c afronden en opdracht 2e maken. Opdracht 2e afronden.
6 Opdracht 3: dictaat hoofdstuk 5. Doorlezen Inheritance en Polymorphisme en begin maken met opdracht 3a. Afronden opdracht 3a en maken opdracht 3b.
7 - Maken opdracht 3c. Afronden opdracht 3c.