HOOfDsTuk 1 Objecten en klassen

Vergelijkbare documenten
Kennismaken Greenfoot

BEGINNER JAVA Inhoudsopgave

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

Objecten en klassen. 1.1 Objectgeoriënteerde taal

Blog-Het gebruik van variabelen in Excel VBA

[8] De ene 1 is de andere niet

INSTALLATIE IN PRINT INSTALLEREN. Aan de slag met Communicate In Print

6. Reeksen

Opdracht 1: Maak kennis met Dodo

CCV CARD ONLINE. Gebruikershandleiding v3.0. Computer Centrum C. van de Velden B.V.

Handicom. Symbol for Windows. Image Manager. (Versie 4) Handicom, 2011, Nederland

Numerieke benadering van vierkantwortels

Afdrukken in Calc Module 7

Central Station Versie 2.2,

Graphics. Small Basic graphics 1/6

Handleiding toevoegen objecten plexatutrecht.nl

eerste voorbeelden in Java

Vakgroep CW KAHO Sint-Lieven

Lijnen/randen en passe-partouts maken met Photoshop.

Tweede deeltentamen Mobiel programmeren - versie 1 Vrijdag 2 februari 2018, uur

Afdrukken van AutoCad-tekeningen

Verslag. Projectteam: 107 Datum: 16 oktober 2008 Project leden: Lennard Fonteijn Harish Marhe Nicoletta Saba Turgay Saruhan Robin Tummers

TELEPORTEREN MET VARIABELEN

Variabelen en statements in ActionScript

Gebruikershandleiding Oefenboek voor groepen. Bohn Stafleu van Loghum

Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 7 november 2014, uur

Hoofdstuk 12 : Het map menu

Hoe maak ik een printscreen op een Windows pc

Gebruikershandleiding Inleiding

Menu Door op de menuknop te klikken kunt u het hoofdmenu sluiten of openen. De menuknop is het icoon met drie streepjes vlak onder elkaar.

Inhoudsopgave Voorwoord 7 Nieuwsbrief 7 De website bij het boek 7 Introductie Visual Steps 8 Wat heeft u nodig? 8 Uw voorkennis 9 Bonushoofdstukken

Introductie Coach 6 videometen. 1 Eerste oefening

6.3 VBA Syntax Instructie. Wij gaan de Visual Basic Editor opnieuw openen, om de instructie die wij zojuist getypt hebben, nader te bekijken.

1. Cellen en formules

INLEIDING TOT GEOGEBRA

Workshop XIMPEL TV Winoe Bhikharie Vrije Universiteit Amsterdam / info@ximpel.net

HOOFDSTUK 3. Imperatief programmeren. 3.1 Stapsgewijs programmeren. 3.2 If Then Else. Module 4 Programmeren

Workshop Office365-basis: opdracht Word-bestanden plaatsen en delen

NEW. METRIC standard(mm).ipt. Dit staat bij PART

Minder bekende functies in Excel

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

Tentamen Imperatief en Object-georiënteerd programmeren in Java voor CKI

Labo 2 Programmeren II

13. Symbool-, Lijnstijlbibliotheek (Resource Editor)... 1

Microsoft Word 365. Weergave AAN DE SLAG MET DIGITALE VAARDIGHEDEN TRAINING: MICROSOFT WORD 365

Handleiding BCAD

The Nanny Personeel. Lokaal inloggen

GeoGebra Quickstart. Snelgids voor GeoGebra. Vertaald door Beatrijs Versichel en Ivan De Winne

Variabelen gebruiken in ons programma

Hoofdstuk 15 Fontwork gebruiken

Programmeren in C# Klassen schrijven

Handleiding toevoegen objecten plexatutrecht.nl

Asta Powerdraw voor de afdrukkaders gebruiken

Handleiding Workshop:Code It. Een workshop over coderen, door Code For Kids

Software Instructions for Real Kids - Felix Plesoianu (2009) en Kris Merckx (2013) - Creative Commons License

Werkblad Cabri Jr. Rotaties

Quick Guide VivianCMS

Handleiding bij de Booktest Generator

Inloggen: Opbouw site: Een handleiding/introductie voor de nieuwe site van Fotoclub VPR.

Pong. Intermediate. Een project in Scratch.

Het programma in dit hoofdstuk vertelt een paar moppen aan de gebruiker.

OEFENINGEN PYTHON REEKS 1

Module QGIS Overstromingsrisico

Klik op het menu inhoud om te starten met inhoud toe te voegen. Klik daarna op de knop Inhoud toevoegen.

HANDLEIDING BEHEER WEBSITE. Vrouwen van Nu

Open het programma Geogebra. Het beginscherm verschijnt. Klik voordat je verder gaat met je muis ergens in het

Frezen met Tensor. We zullen een aantal functies in het menu eens nader bekijken.

Handicom. Symbol for Windows. Image Manager. (Versie 3) Handicom, 2006, Nederland

Deze zelfstudie maakt gebruik van de module Profielen en Ontwerpen. Opmerking: Deze zelfstudie kan niet worden uitgevoerd met LISCAD Lite.

15. Tabellen. 1. wat rijen, kolommen en cellen zijn; 2. rijen en kolommen invoegen; 3. een tabel invoegen en weer verwijderen;

HANDLEIDING MIJN DE LEEUW

Omschrijf bij ieder onderdeel van de methode de betekenis ervan. Java kent twee groepen van klassen die een GUI kunnen maken: awt en swing.

6.2 VBA Syntax. Inleiding Visual Basic

LEEUWINGA Mechanica, Electronica CNC-Cadcam systemen

Microsoft Word Weergave

versie: HANDLEIDING MIJN DE LEEUW

Basisvaardigheden Microsoft Excel

Database Structuur via menus

Het maken, plaatsen en beheren van symbolen (blocks) In deze beschrijving zijn de afbeeldingen uit de windows versie van AutoCad 2013

Je gaat leren programmeren in Ruby. En daarna in Ruby een spelletje maken. Websites zoals Twitch en Twitter gemaakt zijn met behulp van Ruby?

Handleiding XML Leesprogramma versie 2.1, juli 2006

PARTIJOPGAVE NAKTUINBOUW

HANDLEIDING Q1600 Fashion

Automatisering voor Financiële Dienstverleners. Werken met Queries en Merge Documenten. For more information visit our website at

Etiketformaat aanpassen

OPDRACHTKAART. Thema: Prepress. Photoshop 2. Selecteren, verplaatsen en roteren PP Voorkennis: Introductie Photoshop (6.0) afgerond.

Relaties tussen twee tabellen definiëren

Uitwerking Tweede deeltentamen Imperatief programmeren - versie 1 Vrijdag 21 oktober 2016, uur

Bepaal grootte van de Tekst En type bv. Copyright 2006 en klik op V in optiebalk

Handleiding OVM 2.0. Beheerder. Versie oktober 2012

Kennismaking. Versies. Text. Graph: Word Logo voorbeelden verschillende versies. Werkomgeving

Met een mailing of massaverzending kunt u een groot aantal documenten verzenden naar gebruikelijke adressen, die in een gegevensbestand staan.

Les03 Een ster maken en inkleuren

Verwijderen van een persoon kan door de regel leeg te maken. Met de knop (linksonder) Verwijderen verwijdert u de hele pagina!

Een grafiek maken in Excel

Deutsche Bank Global Transaction Banking. Internet Bankieren. Rapporten.

tentoinfinity Apps 1.0 INLEIDING

Deel 1: PowerPoint Basis

Informatie primaire cursus AutoCAD LT 2010

Programmeren (1) Examen NAAM:

Transcriptie:

HOOfDsTuk 1 Belangrijkste concepten in dit hoofdstuk: objecten klassen methodes parameters We springen meteen in het diepe en maken een begin met onze behandeling van objectgeorienteerd programmeren. Om te leren programmeren heb je naast enige theoretische kennis vooral veel oefening nodig. In dit boek komen beide aan bod, zodat ze elkaar versterken. De kern van objectoriëntatie wordt gevormd door twee basisconcepten die we als eerste moeten begrijpen: objecten en klassen. Deze concepten vormen de basis van programmeren in objectgeoriënteerde talen. Laten we dus eens beginnen met een korte behandeling van deze twee basisbegrippen. 31

1.1 Java-objecten fungeren als model voor de elementen waarin een probleem kan worden opgesplitst. Als je een computerprogramma schrijft in een objectgeoriënteerde taal, creëer je op de computer een model van een klein stukje van de werkelijkheid. De onderdelen waarmee het model wordt opgebouwd, zijn de objecten waarin het probleem kan worden opgesplitst. Deze objecten moeten op de een of andere manier worden weergegeven in het te maken computermodel. De objecten van het probleemdomein hangen af van het te schrijven programma. Als je een tekstverwerker maakt kan dit om woorden en alinea s gaan, bij een sociaalnetwerksysteem om gebruikers en berichten, en bij een computergame om monsters. Objecten kunnen worden ingedeeld in categorieën en een klasse beschrijft op een abstracte manier alle objecten van een bepaalde soort. Objecten worden gemaakt uit klassen. De klasse beschrijft de aard van een object; de objecten zelf zijn opzichzelfstaande exemplaren van de klasse. We zullen deze abstracte begrippen verduidelijken aan de hand van een voorbeeld. Veronderstel dat je een simulatie van een verkeerssituatie wilt maken. Een van de entiteiten waar je dan rekening mee zult moeten houden, zijn bijvoorbeeld auto s. Wat is een auto in onze context; is het een klasse of een object? Door onszelf een paar vragen te stellen kunnen we hierover een beslissing nemen. Welke kleur heeft een auto? Hoe snel kan een auto rijden? Waar bevindt de auto zich op dit moment? Het zal duidelijk zijn dat deze vragen niet beantwoord kunnen worden als we het niet hebben over één bepaalde auto. Dat komt doordat het woord auto in onze context verwijst naar de klasse Auto; we spreken over auto s in het algemeen en niet over één bepaalde auto. Als ik zeg: Mijn oude auto, die bij mij thuis in de garage geparkeerd staat, kunnen we wel de hierboven gestelde vragen beantwoorden. Die auto is rood, is niet zo heel erg snel en hij staat op dit moment in mijn garage. Nu hebben we het over een object; een specifiek exemplaar van een auto. Als we het over een bepaald object hebben, spreken we vaak van een instantie. Vanaf nu zullen we de term instantie vaak gebruiken. Instantie is nagenoeg synoniem met object. We zullen objecten instanties noemen wanneer we willen benadrukken dat ze van een bepaalde klasse zijn (zoals: dit object is een instantie van de klasse Auto ). Voor we verdergaan met deze theoretische verhandeling zullen we eerst een voorbeeld bekijken. 32 hoofdstuk 1

1.2 Objecten creëren Start BlueJ en open het project figures. 1 Op het scherm zie je een dialoogvenster zoals in figuur 1.1. Figuur 1.1 Het project shapes in BlueJ In dit venster moet nu een schema weergegeven worden. Elk van de gekleurde rechthoeken in het schema stelt een klasse in dit project voor. In dit project hebben we de klassen Circle, Square, Triangle, Person en Canvas genoemd. Rechtsklik op de klasse Circle en selecteer de optie new Circle() in het contextmenu. Het systeem vraagt je om een Naam van instance. Klik op OK, aangezien de voorgestelde naam op dit moment goed genoeg is. Aan de onderzijde van het scherm zie je nu een rode rechthoek met het opschrift circle1 (figuur 1.2). Figuur 1.2 Een object in de objectenbank 1 In dit boek gaan we ervan uit dat je regelmatig bepaalde handelingen en oefeningen zult uitvoeren. Op dit moment veronderstellen we dat je al weet hoe je BlueJ start en de voorbeeldprojecten opent. Als dat niet het geval is, moet je eerst bijlage A doornemen. 1.2 Objecten creëren 33

Afspraak We noteren de namen van klassen met een hoofdletter (zoals Circle) en de namen van objecten met een kleine letter (zoals circle). Op die manier is het altijd duidelijk waar we het over hebben. Oefening 1.1 Maak een andere cirkel. Maak daarna een vierkant. Je hebt zojuist je eerste object gemaakt! Circle, het rechthoekige pictogram in figuur 1.1, representeert de klasse Circle; circle1 is een object dat gemaakt is op basis van deze klasse. Het gebied waar het object is weergegeven, aan de onderzijde van het scherm, heet de objectenbank. 1.3 Methodes aanroepen Wanneer je rechtsklikt op een van de cirkelobjecten (niet op de klasse!), wordt een contextmenu met verschillende bewerkingen geopend (figuur 1.3). Selecteer de optie makevisible in het menu. Hierdoor wordt een nieuw venster met daarin een representatie van deze cirkel geopend (figuur 1.4). Figuur 1.3 Het contextmenu van een object met de bewerkingen In het menu bij de cirkel zie je nog andere bewerkingen. Bekijk wat er gebeurt als je een paar keer moveright en movedown selecteert om de cirkel dichter naar een van de hoeken van het scherm te verplaatsen. Met de opties makeinvisible en makevisible kun je de cirkel verbergen en weer zichtbaar maken. 34 hoofdstuk 1

Figuur 1.4 Een afbeelding van een cirkel We kunnen objecten manipuleren door er methodes op toe te passen. Als we een methode toepassen, zullen objecten meestal iets doen. Oefening 1.2 Wat gebeurt er als je de methode movedown twee keer aanroept? Of drie keer? Wat gebeurt er als je de methode makeinvisible twee keer aanroept? De opties in het menu van de cirkel representeren bewerkingen waarmee je de cirkel kunt manipuleren. In Java worden dit methodes genoemd. De gebruikelijke terminologie is dat methodes aangeroepen of toegepast worden. Vanaf nu zullen ook wij deze terminologie gebruiken. Zo zal het kunnen gebeuren dat we je vragen om de methode move- Right van circle1 toe te passen. 1.4 Parameters Pas nu de methode movehorizontal toe. Je zult zien dat je dan in het dialoogvenster iets moet invoeren (figuur 1.5). Voer de waarde 50 in en klik op OK. Je ziet nu dat de cirkel 50 pixels naar rechts verplaatst wordt. 2 Methodes kunnen parameters hebben die aanvullende informatie voor een bepaalde taak bevatten. De methode movehorizontal, die je zojuist hebt aangeroepen, is zodanig geschreven dat deze alleen maar kan worden toegepast met aanvullende informatie. In dit geval is de benodigde informatie de afstand waarover de cirkel moet worden verplaatst. De methode movehorizontal is dus flexibeler dan de methodes moveright en moveleft. 2 Een pixel is een enkel stipje op je scherm. Het scherm is opgebouwd uit een raster van afzonderlijke pixels. 1.4 Parameters 35

De laatste twee verplaatsen de cirkel altijd over een vaste afstand, terwijl je bij move- Horizontal exact kunt aangeven hoe ver je de cirkel wilt verplaatsen. Figuur 1.5 Een dialoogvenster bij een methodeaanroep Oefening 1.3 Voordat je verdergaat met lezen, pas je eerst de methodes movevertical, slowmovevertical en changesize toe. Zoek uit hoe je movehorizontal kunt gebruiken om de cirkel 70 pixels naar links te verplaatsen. De naam van een methode samen met de parametertypes wordt de signatuur genoemd. Deze bevat informatie die nodig is om die methode aan te roepen. De extra waarden die je bij sommige methodes moet invoeren, worden parameters genoemd. Een methode geeft aan wat voor parameters deze nodig heeft. Wanneer je bijvoorbeeld de methode movehorizontal aanroept (zie figuur 1.5), wordt in het dialoogvenster de volgende regel weergegeven. void movehorizontal(int distance) Dit wordt de header (soms ook wel signatuur) van de methode genoemd. De header bevat aanvullende informatie over de betreffende methode. Het deel tussen haakjes (int distance) is de informatie over de benodigde parameter. Voor elke parameter definieert de header een type en een naam. De header hierboven geeft aan dat de methode werkt met een parameter van type int en met naam distance. De naam is een aanwijzing voor welke gegevens van de variabele worden verwacht. De naam van de methode en de parametertypes in de header worden samen de signatuur van de methode genoemd. 1.5 Datatypes Een type geeft aan welke soort gegevens geschikt zijn als parameter. Het type int betekent gehele getallen (in het Engels ook integers genoemd, vandaar de afkorting int ). Parameters hebben een type. Het type geeft aan welke soorten waarden een parameter kan hebben. 36 hoofdstuk 1

In het bovenstaande voorbeeld geeft de signatuur van de methode movehorizontal aan dat deze, voordat de methode kan worden uitgevoerd, eerst een geheel getal als invoer nodig heeft, dat aangeeft over welke afstand het object moet worden verplaatst. In het invoerveld in figuur 1.5 kun je vervolgens die waarde invoeren. In de voorbeelden tot nu toe hebben we alleen nog maar het datatype int gezien. De parameters van de verplaatsingsmethodes en de methode changesize zijn allemaal van dit type. Als we beter kijken naar het contextmenu van het object zien we dat de methodeopties in het menu ook het parametertype bevatten. Als een methode geen parameter heeft, wordt de naam van de methode gevolgd door haakjes met niets daartussen. Als een methode wel een parameter heeft, worden het type en de naam van die parameter weergegeven. In de lijst met methodes voor een cirkel zul je zien dat er ook een methode is met een ander parametertype: de methode changecolor heeft een parameter van het type String. Het type String geeft aan dat de methode een stukje tekst (bijvoorbeeld een woord of een zin) verwacht. Strings worden altijd tussen dubbele aanhalingstekens geplaatst. Om bijvoorbeeld het woord rood als string in te voeren, typ je rood in. Het methodeaanroepdialoogvenster bevat ook een stukje tekst, het commentaar, dat boven de header van de methode wordt weergegeven. Met behulp van commentaren krijgt de (menselijke) lezer aanvullende informatie. We komen daar in hoofdstuk 2 op terug. Het commentaar van de methode changecolor beschrijft welke kleuren het systeem kent. Oefening 1.4 Pas de methode changecolor toe op een van je cirkelobjecten en voer de string red in. Hierdoor moet de kleur van de cirkel veranderen. Probeer ook andere kleuren. Oefening 1.5 Dit is een erg eenvoudig voorbeeld en je kunt maar weinig kleuren gebruiken. Bekijk wat er gebeurt als je een nog onbekende kleur invoert. Oefening 1.6 Pas de methode changecolor toe en voer de kleur in het parameterveld in zonder de aanhalingstekens. Wat gebeurt er? Valkuil Vaak vergeten beginners om de dubbele aanhalingstekens te plaatsen wanneer ze gegevens van het type String invoeren. Als je green in plaats van green invoert, zal het systeem een foutmelding genereren zoals error: cannot find symbol variable green (Fout: onbekend symbool). Java ondersteunt verschillende andere gegevenstypes, zoals decimale getallen en tekens. We zullen daar nu niet dieper op ingaan. We komen daar echter verderop in dit boek op terug. Als je er nu al meer over wilt weten, kun je bijlage B bekijken. 1.5 Datatypes 37

1.6 Verschillende instanties Oefening 1.7 Maak een aantal cirkelobjecten in de objectenbank. Je kunt dat doen door de optie new Circle() te selecteren in het contextmenu van de klasse Circle. Maak ze zichtbaar en verspreid ze vervolgens over het scherm met de methode move. Maak een van de cirkels groot en geel en een andere klein en groen. Probeer ook de andere vormen: maak een paar driehoeken, vierkanten en personen. Verander hun posities, afmetingen en kleuren. Verschillende instanties. Uit één klasse kunnen veel gelijkaardige objecten worden gemaakt. Zodra je de beschikking hebt over een klasse kun je net zo veel objecten (of instanties) van die klasse maken als je maar wilt. Uit de klasse Circle kun je een groot aantal cirkels maken. Uit de klasse Square kun je een groot aantal vierkanten maken.1.7 Elk van deze objecten heeft een eigen positie, kleur en afmeting. Je kunt een kenmerk van een object (zoals de afmetingen ervan) veranderen door een methode op dat object toe te passen. Die wordt dan alleen toegepast op dat specifieke object, dus niet op de andere objecten. Misschien valt je nog iets anders op met betrekking tot parameters. Kijk bijvoorbeeld eens naar de methode changesize van de driehoek. De header ervan is void changesize(int newheight, int newwidth) Dit is een voorbeeld van een methode met meer dan één parameter. Deze methode heeft er twee, die door een komma in de header van elkaar worden gescheiden. Methodes kunnen een willekeurig aantal parameters hebben. 1.7 Toestand Objecten hebben een toestand. De toestand wordt aangeduid door waarden in velden op te slaan. Velden zijn kleine geheugenplaatsen binnen in een object die gebruikt kunnen worden om waarden op te slaan. De set waarden van alle velden of attributen waarmee een object wordt gedefinieerd (zoals de x-coördinaat, de y-coördinaat, de kleur, de diameter en de (on)zichtbaarheid van een cirkel) wordt ook wel de toestand van het object genoemd. Dit is een ander voorbeeld van gebruikelijke terminologie die we in dit boek over zullen nemen. In BlueJ kun je de toestand van een object controleren door de optie Inspecteer te selecteren in het contextmenu van dat object. Wanneer je een object nader bekijkt, verschijnt er een objectinspector. De objectinspector is een vergrote weergave van het object dat de erin opgeslagen attributen weergeeft (figuur 1.6). 38 hoofdstuk 1

Oefening 1.8 Zorg ervoor dat er verschillende objecten in de objectenbank aanwezig zijn en bekijk ze stuk voor stuk. Probeer de toestand van een object te veranderen (bijvoorbeeld door de methode moveleft toe te passen) terwijl de objectinspector geopend is. Als het goed is, zie je dat de waarden in de objectinspector dan veranderen. Figuur 1.6 Een objectinspector met informatie over een object Sommige methodes veranderen, wanneer ze worden aangeroepen, de toestand van een object. De methode moveleft bijvoorbeeld verandert het attribuut xposition. In Java worden deze objectattributen velden genoemd. 1.8 Wat zit er in een object? Wanneer je verschillende objecten bekijkt, zul je zien dat objecten van dezelfde klasse allemaal dezelfde velden hebben. Het aantal, het type en de namen van de velden zijn gelijk, maar de waarde van een bepaald veld kan in elk object verschillen. Objecten van een andere klasse kunnen echter andere velden hebben. Een cirkel heeft bijvoorbeeld een veld diameter, maar een driehoek heeft de velden width (voor de breedte) en height (voor de hoogte). Dat komt doordat het aantal, de types en de namen van velden gedefinieerd zijn in een klasse en niet in een object. De klasse Circle definieert dat elk cirkelobject vijf velden zal hebben met de namen diameter, xposition, yposition, color en isvisible. De klasse definieert ook de types voor deze velden. Ook definieert de klasse dat de eerste drie van het type int zijn, dat de kleur van het type String is en de vlag isvisible van het type boolean is. (Het type boolean kan slechts twee waarden, true waar en false onwaar, hebben. Daarom wordt een attribuut van dit type ook wel een vlag genoemd. We komen later op dit type terug.) Wanneer een object van de klasse Circle gemaakt wordt, zal het automatisch deze velden hebben. De waarden van deze velden worden opgeslagen in het object. Daarmee wordt bereikt dat elke cirkel een kleur heeft, maar ook dat elke cirkel een andere kleur kan hebben (figuur 1.7). 1.8 Wat zit er in een object? 39

Circle int diameter int xposition int yposition String color boolean isvisible is instantie van... is instantie van... circle 1: Circle diameter 50 xposition 80 yposition 30 circle 2: Circle diameter 30 xposition 230 yposition 75 color blue color red isvisible true isvisible true Figuur 1.7 Een klasse en de bijbehorende objecten met velden en waarden Voor methodes kunnen we hetzelfde verhaal vertellen. Methodes worden gedefinieerd in de klasse van het object. Dat betekent dat alle objecten van een bepaalde klasse dezelfde methodes hebben. De methodes worden echter toegepast op objecten. Hierdoor is het altijd duidelijk welk object op welk moment gewijzigd moet worden als bijvoorbeeld de methode moveright wordt toegepast. Oefening 1.9 In figuur 1.8 zijn twee verschillende afbeeldingen weergegeven. Kies een van deze afbeeldingen en maak deze opnieuw met behulp van de vormen van het project figures. Noteer welke handelingen je hebt uitgevoerd om het resultaat te bereiken. Zou je hetzelfde resultaat ook op andere manieren hebben kunnen bereiken? Figuur 1.8 Twee afbeeldingen die zijn opgebouwd uit een aantal vormen 40 hoofdstuk 1