© Harry Broeders.
titel: | Programmeren en Software Engineering 3 - Object Georiënteerd Programmeren in C++ en Object Georiënteerd Ontwerpen met UML. |
code onderwijsdeel: | PROS3E1C1 en PROS3E1P1 |
studiebelasting: | 112 SBU |
semester / kwartaal: | EQ1.2 |
contacturen: | 3 uur/week college en 2 uur/week practicum |
toetsing: | tentamen (cijfer) en practicumbeoordeling (O/V) |
benodigde voorkennis: | Programmeren uit de P fase |
verantwoordelijke docenten: | Harry Broeders |
In steeds meer producten en systemen wordt programmatuur gebruikt. Het is zeker dat een aanstaande bachalor of engineering elektrotechniek 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.
Tevens wordt in deze onderwijseenheid een inleiding gegeven in het modelleren van object georiënteerde systemen met behulp van de UML (Unified Modelling Language) standaard.
In deze onderwijseenheid maak je kennis met object oriënted programming en generic programming en met object oriënted design. In semester ECN (derde jaar) wordt in een keuzemodule verder op deze onderwerpen ingegaan. In de C++ ISO/ANSI standaard is een verzameling generieke algoritmen en datastructuren opgenomen die in een van deze keuzemodules behandeld zal worden. In deze keuzemodule wordt ook verder op OOD met UML ingegaan.
In het EPRO6 keuzeproject kun je de bij deze module geleerde ontwerptechnieken en programmeertechnieken op een projectmatige manier toepassen. De aangeleerde ontwerpmethode en ontwerptechnieken kunnen ook (gedeeltelijk) voor projecten gebruikt worden die niets met software te maken hebben (b.v. use-case-diagrammen, interactiediagrammen en toestandsdiagrammen).
Je zult na afloop van PROS3E1C1/P1 in staat zijn om herbruikbare software componenten te gebruiken, ontwerpen, implementeren en testen. Tevens zul je in staat moeten zijn om samen met collega's (in een projectgroep) de software voor een elekrotechnische systeem te ontwerpen en realiseren. Je bent in staat om de eisen van de gebruikers in zogenaamde use-cases te beschrijven. Je maakt bij het ontwerpen gebruik van een moderne ontwerptool (TogetherSoft) die de UML diagrammen automatisch omzet naar C++ code.
Na afloop van PROS3E1C1/P1:
const
.
iostream
.
bool
, string
en
vector
.
new
en delete
.
this
pointer.
string
en van
de iostream
library.
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:
Tijdens het eerste deel van dit onderwijsdeel (Object
Georiënteerd Programmeren met C++) heb je geen boek nodig. Alle
leerstof kun je in het dictaat vinden. Als je de leerstof 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.
Tijdens het tweede deel van dit onderwijsdeel (Object Georiënteerd Ontwerpen
met UML) heb je wel een boek nodig.
Warmer &
Kleppe,
Praktisch
UML, 4de editie ISBN 978-90-430-1265-2
Broeders, Dictaat
Object Georiënteerd Programmeren in C++.
Er worden voor deze onderwijsdelen twee deelresultaten vastgesteld waarbij het eerste resultaat (tentamen PROS3E1C1) een cijfer (1..10) is en het tweede resultaat (practicum PROS3E1P1) 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 4 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.
De planning voor de theorie kan gedurende het kwartaal nog worden aangepast!
Omdat kwartaal 2 dit schooljaar (2009/2010) slechts uit 6 lesweken bestaat vervallen dit jaar les 19 t/m 21!
Les | Inhoud | Huiswerk (na de les zelf doen) | Dictaat/ Boek | Sheets |
---|---|---|---|---|
1 | Introductie, terugblik C, Voorbeeld in C++. string ,
cin , cout . |
Bestudeer hoofdstuk 1 van het dictaat en de inleiding bij practicum opdracht 1. Bestudeer indien nodig bepaalde onderweropen uit C. | Dictaat: hoofdstuk 1 | les1_les2.pps |
2 | Inleiding OOD en OOP (Bosje bloemen naar oma). Tekeningen in UML. | Bestudeer hoofdstuk 2 t/m 2.1 van het dictaat. | Dictaat: hoofdstuk 2 t/m 2.1. | |
3 | Objects en Classes: datamembers, memberfuncties, public
en private . Vergelijking struct versus
class . |
Bestudeer paragraaf 2.2 van het dictaat. | Dictaat: paragraaf 2.2. | les3.pps |
4 | Objects en Classes: constructor, type conversie, explicit ,
default copy constructor en operator= , const
memberfunctie. |
Bestudeer paragraaf 2.3 t/m 2.10 van het dictaat. Opgave met
Rechthoek (zie sheets). |
Dictaat: paragraaf 2.3 t/m 2.10. | les4_les5.pps |
5 | reference, Objects en Classes: operator+= ,
this . |
Bestudeer paragraaf 2.11 t/m 2.19 van het dictaat. Beantwoord vragen
over functie max . Implementeer operator+ voor class
Breuk . |
Dictaat: paragraaf 2.11 t/m 2.19. | |
6 | Objects en Classes:
operator+ , type conversie,
friend , operator== , operator!= |
Bestudeer paragraaf 2.20 t/m 2.26 van het dictaat. Paragraaf 2.23 en
2.24 mag je overslaan. Implementeer operator*= ,
operator* , operator!= ,
operator< , operator<= ,
operator> en operator>= . Denk aan: afschuiven! |
Dictaat: paragraaf 2.20 t/m 2.26. | les6.pps |
7 | operator<< , operator>> Bespreken opgaven: operator!= ,
operator*= , operator* , operator>
enz. |
Bestudeer paragraaf 2.27 van het dictaat. | Dictaat: paragraaf 2.27 | les7_les8.pps |
8 | Seperate compilation, template en std::vector |
Bestudeer paragraaf 2.28 van het dictaat. Bestudeer hoofdstuk 3 van het dictaat. |
Dictaat: paragraaf 2.28 en hoofdstuk 3 | |
9 | inheritance en polymorfisme (Honden) | Bestudeer hoofdstuk 4 van het dictaat t/m 4.2. Voeg zelf zelf de classes DuitseHerder en
MechelseHerder toe en beantwoord de vragen op de één
na laatste sheet uit de presentatie. |
Dictaat: hoofdstuk 4 t/m 4.2. | les9.pps |
10 | slicing problem, ABC, hidding rule, overriding versus overloading
protected |
Bestudeer paragraaf 4.3 t/m 4.9 van het dictaat. | Dictaat: paragraaf 4.3 t/m 4.9. | les10_les11.pps |
11 | hidding rule, protected 20 in werken aan Proeftentamen. |
Maak proeftentamen. | - | |
12 | Bespreken Proeftentamen. | Bestudeer H1, H2 en H4 t/m 4.3 van het boek. Maak de opgaven bij hoofdsuk 2 en 4 van het boek (zie hier). | Boek hoofdstukken 1, 2 en 4 t/m 4.3. | les12.pps |
13 | Intro software engineering en UML. | Bestudeer H1, H2 van het boek. | Boek hoofdstukken 1 en 2. | les13_les14.pps |
14 | UML klassediagram. | Bestudeer H4 t/m 4.3, 4.4.2 en 4.4.8 van het boek. Bedenk hoe je een aggregatie(geen compositie) kunt implementeren. Zie dictaat: paragraaf 4.10. |
Boek hoofdstuk 4 t/m 4.3, 4.4.2 en 4.4.8. | |
15 | Heeft een ... | Bestudeer paragraaf 4.4.8 en 4.4.9 van het boek en paragraaf 4.10 van het dictaat. | Boek paragraaf 4.4.8 en 4.4.9. Dictaat: paragraaf 4.10. | les15.pps |
16 | UML use-case-diagram, en sequentiediagrammen. | Bestudeer hoofdstuk 8 (behalve 8.5.3 en 8.7.6) en 10 (behalve 10.7). Maak de opgaven bij hoofstuk 8 en 10 van het boek (zie hier). | Boek hoofdstuk 8 (behalve 8.5.3 en 8.7.6) en 10. | les16_les17.pps |
17 | UML communicatiediagrammen, toestandsdiagrammen en activiteitsdiagrammen. | Bestudeer hoofdstuk 10 (behalve 10.7), 12 en 15 van het boek. Maak de opgaven bij hoofstuk 12 en 15 van het boek (zie hier). | Boek hoofdstuk 10 (behalve 10.7), 12 en 15. | |
18 | Dynamisch geheugen en destructor. | Bestudeer hoofdstuk 5 t/m 5.4 van het dictaat. Voeg in practicum
opgave 2b een destructor toe die meldt dat
een Breuk is overleden. Verklaar de uitvoer. Vervang nu elke const
Tijdsduur& door een Tijdsduur en verklaar opnieuw
de uitvoer. |
Dictaat: hoofdstuk 5 t/m 5.4. | les18.pps |
19 | copy constructor en
operator= . |
Bestudeer paragraaf 5.5 t/m 5.10 van het dictaat. | Dictaat: paragraaf 5.5 t/m 5.10. | les19_20.pps |
20 | static datamembers en
memberfuncties. |
Bestudeer paragraaf 6.1 van het dictaat. Bestudeer extra voorbeelden over inheritance en polymorphisme. | Dictaat: paragraaf 6.1. | |
21 | Uitloop | - | - | - |
Omdat kwartaal 2 dit schooljaar (2009/2010) slechts uit 6 lesweken bestaat zijn de opdrachten 4b en 4c dit jaar niet verplicht!
week | studiemateriaal | tijdens practicum op school doen | zelf doen thuis of op school, voor het begin volgende practicumles klaar |
---|---|---|---|
1 | Opdracht 1: Dictaat hoofdstuk 1 | Doorlezen Gebruik van string en
iostream en maken opdracht
1a. Maak een begin met opdracht 1b. |
Opdracht 1b afmaken. |
2 | Opdracht 2a: Dictaat paragraaf
2.2 t/m 2.10. Opdracht 2b: Dictaat paragraaf 2.11 t/m 2.27. |
Opdracht 2a maken. | Opdracht 2b maken. |
3 | Opdracht 2c: Geen nieuwe stof. Opdracht 2d: Dictaat paragraaf 2.28. |
Opdracht 2c maken. | Opdracht 2d maken. |
4 | Opdracht 3a en 3b: Dictaat hoofdstuk 4. | Begin maken met opdracht 3a. | Afronden opdracht 3a en maken opdracht 3b. |
5 | Opdracht 3c: Dictaat paragraaf 3.6. | Maken opdracht 3c. | Opdracht 3c afronden. |
6 | Opdracht 4: Boek. | Begin maken met opdracht 4. Dit schooljaar (2009/2010) is alleen opdracht 4a verplicht! | Verder werken aan opdracht 4. Inleveren kan per email: mailto:bd@hhs.nl |
7 | - | Afronden opdracht 4. | - |