© Harry Broeders.
onderwijsdeel: | Software Ontwikkeling en Programmeren 3 |
studiebelasting: | 168 SBU (84 in kwartaal 1 en 84 in kwartaal 2) |
semester / kwartaal: | H3C&D / 1 en 2 |
contacturen: | Kwartaal 1: 3 uur/week college en 1 uur/week practicum |
Kwartaal 2: 1 uur/week projectbegeleiding per projectgroep | |
toetsing: | tentamen (cijfer), practicumbeoordeling (O/V) en projectbeoordeling (cijfer) |
benodigde voorkennis: | SOPX2 |
verantwoordelijke docent: | Harry Broeders |
In steeds meer elektrotechnische producten en systemen wordt programmatuur gebruikt. Het is zeker dat een aanstaand elektrotechnisch C&D ingenieur hiermee te maken krijgt. In de propedeuse en in H1 heb je leren programmeren in de programmeertaal C met behulp van de functionele decompositie ontwerpmethode (structured programming and structured design). In H2 heb je de basisaspecten van object georiënteerd programmeren (OOP) geleerd aan de hand van de programmeertaal C++. In deze onderwijseenheid wordt dieper op deze programmeertaal ingegaan. Het opvangen van fouten door middel van exceptions wordt uitgebreid besproken en ook namespaces en run-time type information komen aan de orde.
In de propedeuse en in het H1 project heb je datastructuren zoals array en struct leren gebruiken. Deze datastructuren worden statisch genoemd omdat hun grootte tijdens het compileren wordt bepaald en vast is. In de praktijk heb je al snel behoefte aan zogenaamde dynamische datastructuren waarvan de grootte tijdens het uitvoeren van het programma kan wijzigen. Tijdens deze onderwijseenheid zal je kennis maken met zowel de implementatie als het gebruik van de klassieke dynamische datastructuren. Je zult leren hoe het met behulp van templates mogelijk is om algoritmen zoals zoeken en sorteren generiek te definiëren. Een generiek algoritme is een algoritme dat onafhankelijk is van de gebruikte datastructuur. In de C++ ISO/ANSI standaard is een verzameling generieke algoritmen en datastructuren opgenomen die in deze onderwijseenheid worden behandeld.
De programmeertaal C++ ondersteund dus 3 verschillende programmeer paradigma's:
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. Je gaat deze theorie in het tweede kwartaal in projectvorm toepassen bij het SOPX3 project. De leerdoelen van dit project kun je (later) vinden in de bij het project behorende studiewijzer.
Tot slot van het eerste kwartaal van deze onderwijseenheid worden nog enkele applicaties waarin datastructuren worden toegepast besproken.
Je zult na afloop van het eerste kwartaal van SOPX3 in staat zijn om herbruikbare software componenten te gebruiken, ontwerpen, implementeren en testen. Na het tweede kwartaal van SOPX3 zul je in staat 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.
Als je dit onderwijsdeel met een voldoende hebt afgesloten:
De leerdoelen van het tweede kwartaal van deze onderwijseenheid kun je (later) vinden in de bij het SOPX3 project behorende studiewijzer.
Bruce Eckel, Thinking in C++ 2nd Edition, Volume 1, ISBN 0139798099.
Bruce Eckel and Chuck Allison, Thinking in C++ 2nd Edition, Volume 2, ISBN
0131225529.
Deze boeken zijn ook gratis te downloaden van:
http://mindview.net/Books/TICPP/ThinkingInCPP2e.html.
Warmer & Kleppe,
Praktisch
UML, 4de editie ISBN 978-90-430-1265-2
Broeders, Sheets
en
voorbeeldprogramma's.
De sheets zijn beschikbaar in het PDF formaat,
verkleind tot 9 per pagina. De voorbeedprogramma's zijn opgenomen in een
Borland C++ Builder 6 project group SOPX3.BPG
Broeders, Dictaat
SOPX3.
Dit dictaat
bevat:
Het studiemateriaal voor het SOPX3 project zal in het tweede kwartaal via blackboard worden verspreid.
Er worden voor deze onderwijseenheid drie deelresultaten vastgesteld waarbij het eerste resultaat (tentamen) een cijfer (1..10) is, het tweede resultaat (practicum) een O(nvoldoende) of V(oldoende) is en het derde resultaat (project) weer een cijfer (1..10) is. Het eindresultaat wordt dan het gemiddelde cijfer van het tentamen (kwartaal 1) en het project (kwartaal 2) als het tweede resultaat een V is en een 1 als het tweede resultaat een O is. Bij het tentamen mag je boeken en dit dictaat gebruiken. Het tentamen bestaat uit open vragen.
Het practicum wordt beoordeeld met Onvoldoende of Voldoende. 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.
Let op! Deze planning kan tijdens het geven van deze onderwijsmodule nog worden aangepast!
les | inhoud | sheets | dictaat | C++ boek | UML boek |
---|---|---|---|---|---|
1 | Inleiding (overzicht SOPX3) | les 1 | inleiding | ||
2 | Overzicht datastructuren | les2 | H1 + H2 | ||
3 | Overzicht datastructuren (bomen, hashing, heap) | les 3 | H2 | ||
4 | Toepassingen van een stack | les 4 | H3 | ||
5 | Implementaties van een stack | les 5 | H4 | ||
6 | Advanced C++ (namespace, exception) | les 6 en 7 | H5 | TICPPV1 H10 en TICPPV2 H1 | |
7 | Advanced C++ (vervolg exceptions, casting, RTTI) | les 6 en 7 | H5 | TICPPV2 H1 en H8 | |
8 | STL inleiding (string, overzicht, sequentiële containers) | les 8 en 9 | H6 | TICPPV2 H3 en H7 | |
9 | STL container adapters en associatieve containers | les 8 en 9 | H6 | TICPPV2 H7 | |
10 | STL iterators, inleiding algoritmen | les 10 t/m 12 | H6 | TICPPV2 H6 en H7 | |
11 | STL algoritmen en functie objecten | les 10 t/m 12 | H6 | TICPPV2 H6 | |
12 | vervolg STL algoritmen en functie objecten | les 10 t/m 12 | H6 | TICPPV2 H6 | |
13 | Behandelen vraagstuk (galgje) | les 13 | |||
14 | UML inleiding | UML:1 t/m 4 | H1 en H2 | ||
15 | UML Klasse- en objectdiagrammen (deel 1) | 5 t/m 11 | H4.1 t/m 4.3 | ||
16 | UML Klasse- en objectdiagrammen (deel 2) en Use-case-diagram | 12 t/m 24 | H4.4.1, 4.4.2, 4.4.5 t/m 4.4.9, 4.4.17 en H8.1 t/m 8.6 | ||
17 | UML Sequence- en collaboratiediagrammen | 25 t/m 34 | H10.1 t/m 10.4, H12.1 t/m 12.3, H15.1 t/m 15.3 | ||
18 | UML Toestands- en Activiteitsdiagrammen | 35 t/m 47 | TICPPV1 H10 en H14 TICPPV2 H9 |
H4.4.4, 4.4.10 en 4.4.12 | |
19 | Toepassingen van datastructuren1. | les 19 | H8 | ||
20 | Toepassingen van datastructuren1. | les 20 | H8 | ||
21 | Uitloop. |
1 Het in les 19 en 20 behandelde spelletjesprogramma Boter, Kaas en Eieren staat beschreven in hoofdstuk 8.7 en 11.2 van het boek Data Structures and Problem Solving Using C++, 2/E van Mark Allen Weiss, ISBN: 0-201-61250-X.
Bij dit practicum wordt op een iets andere manier gewerkt dan dat je tot nu toe gewend was. De practicumopgaven worden in groepjes van 2 studenten uitgevoerd. Het ingeroosterde uur is alleen bedoeld om de door jullie gemaakte opdrachten na te kijken. Het is de bedoeling dat je ongeveer 4 uur/week aan dit practicum besteedt. Als je bij het werken aan het practicum tegen problemen aanloopt waardoor je niet verder kunt wacht dan niet tot het ingeroosterde uur maar stuur een mailtje naar J.Z.M.Broeders@hhs.nl.
"week" | opdracht | studiemateriaal | onderwerp |
---|---|---|---|
1 | opdracht 1 | opdracht 1 | Gelinkte lijst |
2 | opdracht 2 | Dictaat H2 | Algoritme runtime analyse |
3 | opdracht 3 | TICPPV2 H1 en Dictaat H5 | Exceptions |
4 en 5 | opdracht 4 | TICPPV2 H6 en H7 en Dictaat H6 | STL |
6 en 7 | opdracht 5 | Praktisch UML | UML |
Extra (niet verplicht) opdracht 6: Een windows GUI applicatie maken met behulp van C++ Builder.
Zie aparte studiewijzer van het SOPX3 project.