Leren Programmeren in C# Deel 4 - Objectoriëntatie

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 9

Leren programmeren in C

Deel 4 - Objectoriëntatie
Michiel Rotteveel

Leren programmeren in C
Deel 4 - Objectoriëntatie

Brinkman Uitgeverij · Amsterdam 2017


Leeswijzer
double gereserveerde woorden C
PictureBox de naam van een klasse
kleinGetal de naam van een object of variabele
"tekst" de waarde van een string variabele
Commentaar commentaar in de code

isbn 978 90 5752 353 3 / nur 989

Omslagontwerp: Proforma, Barcelona


Foto omslag: M. Rotteveel
Redactie: J.G. Neurink / M.H. van Haren
Opmaak: Henk Pel, Zeist

© 2017 Brinkman Uitgeverij, Amsterdam


Gehele of gedeeltelijke overneming of reproductie van de inhoud van deze uitgave, op welke
wijze dan ook, zonder voorafgaande schriftelijke toestemming van de auteursrechthebbende
is verboden, behoudens de beperkingen bij de wet gesteld. Het verbod betreft ook gehele of
gedeeltelijke bewerking. De uitgever is met uitsluiting van ieder ander gerechtigd de door
derden verschuldigde vergoedingen voor kopiëren, als bedoeld in artikel 17 Auteurswet 1912
en in het kb van 20 juni 1974 (Stb. 351, 1974) ex artikel 16b Auteurswet 1912, te innen en/of
daartoe in en buiten rechte op te treden.

Correspondentie inzake overneming of reproductie richten aan:


Brinkman Uitgeverij, Postbus 59686, 1040 ld Amsterdam
www.brinkman-uitgeverij.nl
tel. 020-4120970, fax 020-4120972
e-mail: info@brinkman-uitgeverij.nl
5

Inhoudsopgave

Inleiding 11
C OO & UML 11
Benodigde voorkennis 12
Hoe werk je met dit boek? 12

Hoofdstuk 1 Voorbereiding 13
Objectoriëntatie 13
Kenmerken 13
UML 13
Voorbereiding voorbeeldprogramma 14
Wat heb je geleerd? 20

Hoofdstuk 2 Klassen (Classes) 21


Beschrijving 21
Inhoud (instantie) 21
UML 21
Vuistregels 22
Soorten klassen 22
Naamgeving 23
Voorbeeld 2.1: Aanmaken klasse Konijn 23
Opdrachten Klassen 24
Opdracht 2.1: Aanmaken klasse Gras 24
Opdracht 2.2: Aanmaken klasse Venijnboom 24
Opdracht 2.3: Aanmaken klasse Vingerhoedskruid 24
Opdracht 2.4: Aanmaken klasse Koe 24
Opdracht 2.5: Aanmaken klasse Lynx 24
Opdracht 2.6: Aanmaken klasse Beer 24
Wat heb je geleerd? 24

Hoofdstuk 3 Encapsulation, variabelen en eigenschappen 25


Encapsulation 25
Naamgeving variabelen én eigenschappen 26
Variabelen 26
UML 27
Voorbeeld 3.1: Interne variabelen 28
6

Visual Studio klassendiagram 29


Voorbeeld 3.2: Visual Studio klassendiagram genereren 29
Eigenschappen (properties) 30
Voorbeeld 3.3: Eigenschappen 31
Voorbeeld 3.4: ReadOnly-eigenschappen 32
Voorbeeld 3.5: Eigenschappen met een complex type toevoegen 33
Opdrachten Encapsulation, variabelen en eigenschappen 34
Opdracht 3.1: Voorbereiding klasse Gras 34
Opdracht 3.2: De klasse Gras implementeren 35
Verkorte schrijfwijze eigenschappen 36
Voorbeeld 3.6: Verkorte schrijfwijze eigenschappen 36
Opdracht Verkorte schrijfwijze 39
Opdracht 3.2: Verkorte schrijfwijze: de klasse Venijnboom 39
Wat heb je geleerd? 40

Hoofdstuk 4 Methoden 41
Beschrijving 41
Eisen 41
Overloaden 41
UML 42
Voorbeeld 4.1: Methoden toevoegen aan de klasse Konijn 43
Opdrachten Methoden 48
Opdracht 4.1: Methoden toevoegen aan de klasse Koe 48
Opdracht 4.2: Methoden toevoegen aan de klassen Gras en Venijnboom 48
Reflectie 48
Wat heb je geleerd? 48

Hoofdstuk 5 Constructor 49
Beschrijving 49
Eisen constructor 49
UML 49
Voorbeeld 5.1: Constructors voor Konijn 50
Opdrachten Constructor 51
Opdracht 5.1: Constructors voor Koe 51
Opdracht 5.2: Constructors voor Gras en Venijnboom 51
Voorbeeld 5.2: Konijn tekenen 52
Opdrachten Tekenen 53
Opdracht 5.3: Tekenen van Koe 53
Opdracht 5.4: Tekenen van Gras en Venijnboom 53
Wat heb je geleerd? 54

Hoofdstuk 6 Structs 55
Beschrijving 55
Stack 55
Heap 55
Inhoudsopgave 7

Eigenschappen struct 56
UML 57
Voorbeeld 6.1: NatSimII struct Snelheid 57
Wat heb je geleerd? 59

Hoofdstuk 7 Compositie 61
Beschrijving 61
Voorbeeld 7.1: Compositie klasse Rechthoek 62
Wat heb je geleerd? 65

Hoofdstuk 8 Overerving 67
Beschrijving 67
Voordelen 67
UML 67
NatSimII 69
Erven 70
Afspraken 71
Voorbeeld 8.1: Overerving 71
Opdracht Overerving 84
Opdracht 8.1: Klasse Vingerhoedskruid 84
Wat heb je geleerd? 84

Hoofdstuk 9 Abstracte klasse 85


Beschrijving 85
UML 85
Voorbeeld 9.1: Abstract maken van de klasse GrafischObject 85
Opdrachten Abstracte klassen 86
Opdracht 9.1: Abstract maken van de klasse Leven 86
Opdracht 9.2: Abstract maken van de klasse Plant 86
Wat heb je geleerd? 86

Hoofdstuk 10 Oefening, uitbouwen van het project 87


Voorbeeld 10.1: Klasse Dier 87
Opdracht Typering object 89
Opdracht 10.1: IsDier( ) 89
Voorbeeld 10.2: Abstracte methode implementeren 89
Opdrachten Uitbouwen van het project 91
Opdracht 10.2: Vleeseter 91
Opdracht 10.3: Methode Eet( ) bij Vleeseter 91
Opdracht 10.4: Alleseter 91
Opdracht 10.5: Methode Eet( ) bij Alleseter 91
Voorbeeld 10.3: Aanpassen van de klasse Konijn 92
Opdracht Vernieuwde klasse 93
Opdracht 10.6: Nieuwe klasse Koe 93
8

Hoofdstuk 11 Interfaces 95
Beschrijving 95
UML 96
Voorbeeld 11.1: Interface IBewegendObject 96
Opdracht Interfaces 100
Opdracht 11.1: Klok toevoegen 100
UML-klassendiagram Dier 100
Wat heb je geleerd? 100

Hoofdstuk 12 Delegates 101


Voorafje 101
Beschrijving 101
UML 101
Aanmaken delegate 102
Voorbeeld 12.1: Delegate definiëren, aanmaken en gebruiken 102
Waarom delegates? 106
Callback-functies 106
Voorbeeld 12.2: Callback delegate 107
Opdrachten Delegate 110
Opdracht 12.1: De ProgressBar 110
Opdracht 12.2: Spreektijd 110
Opdracht 12.3: Spreektijd met eindtijdwaarschuwing * 110
Multithreading 111
Wat heb je geleerd? 111

Hoofdstuk 13 Events 113


Beschrijving 113
UML 114
Voorbeeld 13.1: Timer event 115
Voorbeeld 13.2: Beweging 117
Opdrachten Completeren formulier 123
Opdracht 13.1: Toevoegen code 123
Opdracht 13.2: Test het programma 123
Voorbeeld 13.3: Het eerste zelfbouwevent 123
Voorbeeld 13.4: Event arguments 126
Voorbeeld 13.5: Keten van events 129
NatSimII tot nu toe 135
Opdrachten Events 136
Opdracht 13.3: Extra informatie tonen 136
Opdracht 13.4: Nog meer informatie tonen * 136
Collision detection 136
Voorbeeld 13.6: Collision detection 137
Inhoudsopgave 9

Opdrachten Collision detection 141


Opdracht 13.5: Red de Venijnboom 141
Opdracht 13.6: Vleeseter, Jaguar 141
Opdracht 13.7: Vleeseter, Lynx 141
Opdracht 13.8: Alleseter, Beer * 142
Opdracht 13.9: Red de Venijnboom opnieuw 143
Opdracht 13.10: Conversie van Leven naar Venijnboom 143
Opdracht 13.11: Conversie van Leven naar Vingerhoedskruid 143
Voorbeeld 13.7: Zaaien 143
Wat heb je geleerd? 144

Hoofdstuk 14 Oefening baart kunst 145


Opdrachten NatSimII 145
Opdracht 14.1: Venijnboom 145
Opdracht 14.2: Vingerhoedskruid 145
Opdracht 14.3: Zaaien 145
Opdracht 14.4: Over gras lopen 145
Opdracht 14.5: Voortplanting 145
Opdracht 14.6: Voortplanten Planten * 146
Opdracht 14.7: Shooting game * 146
Opdracht 14.8: Snelheid wijzigen * 146
Opdracht 14.9: Plaatjes * 146
Opdracht 14.10: Geluid * 146
Opdracht 14.11: Collision detection * 146
Opdracht 14.12: Evenwicht * 147

Nawoord 149

Bijlagen 151
Cookbook Events 151
UML-diagram NatSimII 154
Naming conventions C 156

Bronvermelding 157

You might also like