Studiewijzer PROS3E1C1/P1.

© 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

Inleiding

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.

Globale leerdoelen

Na afloop van PROS3E1C1/P1:

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++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++. De voorgaande link verwijst naar een pdf bestand.

Toetsing en beoordeling.

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.

Weekplanning theorie.

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

5.5_5.10.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 - - -

Weekplanning practicum.

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. -