Leren programmeren in C# Deel 4 - Objectoriëntatie

Vergelijkbare documenten
Inhoudsopgave. Deel 1: Introductie

Inhoudsopgave. Deel 1: Introductie

Linux hands-on. Een Linux-server opzetten in 35 lessen OpenSuse Leap, versie Erwin Boonk

Reader Bedrijfsadministratief medewerker, leerjaar 2 Werkboek

Leren programmeren in C# Deel 2 - Gegevens

Elementaire kennis Bedrijfsadministratie Deel 1 Werkboek

Elementaire kennis Bedrijfseconomie Werkboek

Administratie van de industriële onderneming

Elementaire kennis Bedrijfseconomie, Handel + Werkboek

Reader Bedrijfsadministratief medewerker, leerjaar 2 theorieboek

Datatypes Een datatype is de sort van van een waarde van een variabele, veel gebruikte datatypes zijn: String, int, Bool, char en double.

Rekenvaardigheid voor de financiële beroepen

Kennis Bedrijfsadministratie. Werkboek

Kennis Bedrijfseconomie. Werkboek

Object-oriented programmeren met BlueJ en Visual Studio

Elementaire kennis Bedrijfseconomie Werkboek

Visual Basic.NET. Visual Basic.NET. M. den Besten 0.3 VB. NET

Kennis Bedrijfseconomie. Werkboek

Bedrijfseconomische aspecten van de industriële onderneming

Java. Basissyllabus. Egon Pas

Elementaire kennis Bedrijfsadministratie

Reader Bedrijfseconomische berekeningen

Klassen & objecten, overerving, abstracte klassen, debuggen, interfaces, formulieren, polymorfie, statische methoden, event-handlers

Werken aan je zelfbeeld

SYNTRA-WEST. Initiatiecursus JAVA. Deel

Vakgroep CW KAHO Sint-Lieven

Modulewijzer tirprog02/infprg01, programmeren in Java 2

Werken aan je zelfbeeld

Van je nachtmerries af

Elementaire kennis Bedrijfsadministratie Deel 2 Werkboek

Omgaan met lichamelijke klachten

IMP Uitwerking week 13

Neem de regie over je depressie

Wie heeft de regie? Kwaliteit van bestaan in de praktijk. John Sijnke

Kennis Bedrijfseconomie

INLEIDING... 1 AFSPRAKEN... 2 INHOUDSOPGAVE...

Programmeren in C# Interfaces. Hoofdstuk 23

Abstracte klassen & Interfaces

NIEUWE SJABLONEN VOOR KLEOS GEBRUIKERSINSTRUCTIE

Verheven tijdverspilling. liturgie vieren HENK JONGERIUS. Verheven tijdverspilling wil een bijdrage HENK JONGERIUS

Stoppen met roken Cursus

Modulewijzer Tirdat01

De mooiste steden. De keuze van de Reisgids

Mijn kind een Kanjer!

Programmeren volgens het lagenmodel in C# met Visual Studio 2013 HA Informaticabeheer Bert Cauwenberg en Lieven Pauwels Werkgroep Handel 2015

Voortgezette regressie- en variantieanalyse

HTML5 & Webdesign. Ontwerp cover: Graficelly, Reeuwijk-Brug. N. van Aken M. den Besten A.C. Gijssen ISBN

Handleiding Gezinsvragenlijst (GVL)

Inleiding financiële administratie Ondersteunende administratieve beroepen Werkboek

Hoofdstuk 1: Inleiding. Hoofdstuk 2: Klassen en objecten Datahiding: afschermen van implementatiedetails. Naar de buitenwereld toe enkel interfaces.

Objectgeorïenteerd werken is gebaseerd op de objecten die door het systeem gemanipuleerd worden.

Helpen bij partnerrelatieproblemen

Windows applicaties met Visual Basic.NET. VB Express 2010 HA Werkgroep Handel Vlaams Verbond van het Katholiek Secundair Onderwijs

Leercoaching in het hbo. Student

Ontwerp van Informatiesystemen

Excelvaardigheid voor de financiële beroepen

Opdracht 7a. Applicatiebouw 2014/2015

Werkboek voor ouders met psychiatrische en/of verslavingsproblemen

Verwerken en versterken

Zorg voor mensen met een verstandelijke beperking

Georgie Dom. Hart & vaten gezond. Informatie en preventie

Supervisie in onderwijs en ontwikkeling

Zorgen voor getraumatiseerde kinderen: een training voor opvoeders

Informatica. Objectgeörienteerd leren programmeren. Van de theorie met BlueJ tot een spelletje met Greenfoot... Bert Van den Abbeele

Uw recht bij geldzaken

Wondverzorging. Let op: het is belangrijk om precies deze schrijfwijze aan te houden, dus met tussenstreepjes.

Nederlands. Burgerschap voor AG. M.C. Arnold-Klaarhamer

Arbeidsovereenkomst 2016/2017

Handboek voor de scheve grote teen

8FSLDBIJFS /[EPMJMGEXMIRMZIEY

Effectiviteit = Kwaliteit x Acceptatie Silvia Blankestijn

Werkboek voor kinderen en jongeren van ouders met psychiatrische en/of verslavingsproblemen

Bewaken vitale functies en verlenen van eerste hulp

Eerste hulp bij faalangst

Psychosociale problemen

Programmeren met databanken volgens het lagenmodel in C#

Praktische sectororiëntatie. De 4 sectoren

Een gelinkte lijst in C#

1 Een beetje theorie vooraf 1. Wat is een programma? 2 Hoe maakt u een programma? 3 IL-code en JIT-compiler 5

VI. Klassen en objecten

REKENEN Getallen en bewerkingen. voor 1F Deel 2 van 2

Windows applicaties met VB.NET VB Express 2010

Werkboek klinische schematherapie

Domeinmodellen en klassendiagrammen

Maartje Heymans & Ruud de Korte. Foto s bewerken. Stap voor stap

Niet meer depressief

Studiewijzer BACHELOR KUNSTMATIGE INTELLIGENTIE EXTRA KEUZENVAK VAK: C++ PROGRAMMEERMETHODEN

Denken + Doen = Durven

Groenengrijs. Jong en oud met elkaar in gesprek. Karen van Kordelaar. Astrid Vlak. Yolande Kuin. Gerben Westerhof

Dit boek, Stop met piekeren; Werkboek voor de cliënt, is onderdeel van de reeks Protocollen voor de GGZ.

Modeleren. Modelleren. Together UML. Waarvan maken we een model? overzicht les 14 t/m 18. ControlCenter 6.2

Objectgeoriënteerd Programmeren: WPO 2a

Voeding, uitscheiding en diagnostiek

Coach jezelf in drie stappen

Samenwonen of trouwen

Handleiding Een Outlook.com-account aanmaken

Transcriptie:

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