4, nov 2011 Vakcode: 192110174



Vergelijkbare documenten
Voorbeeldtentamen Inleiding programmeren (IN1608WI), Oktober 2003, , Technische Universiteit Delft, Faculteit EWI, Afdeling 2.

Universiteit van Amsterdam FNWI. Voorbeeld van tussentoets Inleiding programmeren

DIAGNOSTISCHE TOETS Softwaresystemen UITWERKING

Tentamen Objectgeorienteerd Programmeren TI februari Afdeling ST Faculteit EWI TU Delft

Deeltentamen Grammatica s en ontleden 22 december 2005

Vakgroep CW KAHO Sint-Lieven

Tentamen Objectgeorienteerd Programmeren IN1205 Voorbeeld

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

Java. Basissyllabus. Egon Pas

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

Tentamen Object Georiënteerd Programmeren TI januari 2013, Afdeling SCT, Faculteit EWI, TU Delft

TENTAMEN Programmeren 1

Ingebouwde klassen & methodes

Tentamen Imperatief Programmeren

voegtoe: eerst methode bevat gebruiken, alleen toevoegen als bevat() false is

IMP Uitwerking week 13

Objectgericht programmeren 1.

Zelftest Programmeren in Java

Programmeren in Java les 3

Kleine cursus PHP5. Auteur: Raymond Moesker

Stacks and queues. Introductie 45. Leerkern 45. Terugkoppeling 49. Uitwerking van de opgaven 49

Overerving & Polymorfisme

Abstracte klassen & Interfaces

Kwis (3) class X { public void a() { System.out.println("x"); public static void main(string[] args) { X x = new X();

Objectgeoriënteerd programmeren in Java 1

Tentamen Object Georiënteerd Programmeren TI oktober 2014, Afdeling SCT, Faculteit EWI, TU Delft

Uitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, uur

NAAM: Programmeren 1 Examen 29/08/2012

Lessen Java: Reeks pag. 1

public boolean equaldates() post: returns true iff there if the list contains at least two BirthDay objects with the same daynumber

Tentamen Inleiding Programmeren in Java

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

Java spiekbrief. Commentaar. Definitie van een methode. Types. Variabelendeclaratie. Definitie van een klasse. Namen. Definitie van een veld

Tentamen in2705 Software Engineering

NAAM: Programmeren 1 Examen 21/01/2011

Tentamen Inleiding Programmeren (IN1608WI), duur van de toets 2 uur Technische Universiteit Delft, Faculteit EWI, Afdeling 2.

Modelleren en Programmeren

Java spiekbrief. Commentaar. Definitie van een methode. Types. Variabelendeclaratie. Definitie van een klasse. Namen. Definitie van een veld

public Paneel() { knop = new JButton( Klik ); knop.addactionlistener( new KnopHandler() ); tekstvak = new JTextField(10); add(knop); add(tekstvak);

Inhoud. Eindtoets. Introductie 2. Opgaven 3. Terugkoppeling 12

Inhoud. Eindtoets. Introductie 2. Opgaven 3. Bijlage bij opgaven 9. Terugkoppeling 12

Programmeren (1) Examen NAAM:

TENTAMEN Programmeren 1 VOORBEELDUITWERKING

Aanvullende toets Gameprogrammeren (INFOB1GP) Woensdag 24 december 2014, uur

Stacks and queues. Hoofdstuk 6

Modelleren en Programmeren

Programmeren 1 20 januari 2012 Prof. T. Schrijvers

Modelleren en Programmeren


Beginselen van programmeren Practicum 1 (Doolhof) : Oplossing

Tentamen Programmeren in C (EE1400)

Uitwerkingen derde deeltentamen Gameprogrammeren Vrijdag 6 november 2015, uur

HOGESCHOOL VAN AMSTERDAM Informatica Opleiding. CPP 1 van 10

Modelleren en Programmeren

Modelleren en Programmeren

Tentamen Inleiding Programmeren (IN1608WI), 2 februari 2012, , Technische Universiteit Delft, Faculteit EWI, Afdeling 2.

Een topprogrammeur in het OO programmeren is Graig Larman. Hij bedacht de volgende zin:

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

Tentamen Programmeren in C (EE1400)

Programmeren in Java 3

Als een PSD selecties bevat, deelt de lijn van het programma zich op met de verschillende antwoorden op het vraagstuk.

Modelleren en Programmeren

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

APPLICATIEBOUW 3E COLLEGE: OBJECT GEORIËNTEERD PROGRAMMEREN, METHODEN, PARAMETERS, SCOPE VAN VARIABELEN. Onderdeel van SmartProducts

Datastructuren: stapels, rijen en binaire bomen

Derde deeltentamen Gameprogrammeren Vrijdag 7 november 2014, uur

Modulewijzer Tirdat01

Uitwerkingen Tweede deeltentamen Imperatief programmeren Vrijdag 15 oktober 2010, uur

SPOJ oplossingen Gilles Callebaut 7 augustus 2015

Tentamen Formele Methoden voor Software Engineering (213520)

Programmeren 1 23 januari 2013 Prof. T. Schrijvers

Uitwerkingen aanvullende toets Gameprogrammeren (INFOB1GP) Vrijdag 4 januari 2013, uur

Voorbeeld: Simulatie van bewegende deeltjes

6,1. Samenvatting door een scholier 1809 woorden 28 oktober keer beoordeeld. Informatica

Uitwerking Tentamen Modelleren en Programmeren - versie 1 Woensdag 1 februari 2017, uur

Javascript oefenblad 1

Objectgericht programmeren 1.

Veel succes! 1. Deze opgave bestaat uit een aantal vragen. Houd het antwoord kort: één of twee zinnen per onderdeel kan al genoeg zijn.

Deel 1: Arduino kennismaking. Wat is een microcontroller, structuur van een programma, syntax,

Veel succes! 1. Deze opgave bestaat uit een aantal deelvragen. Houd het antwoord kort: één of twee zinnen per onderdeel kan al genoeg zijn.

Tentamen Programmeren in C (EE1400)

Programmeren I. 26 augustus Algemene Richtlijnen. Richtlijnen Programmeren 1

De Leidsche Flesch Studievereniging voor Natuurkunde, Sterrenkunde, Wiskunde en Informatica sinds DLF Pointerworkshop

Syntax- (compile), runtime- en logische fouten Binaire operatoren

Aanvullende toets Gameprogrammeren Woensdag 5 januari 2011, uur

Versie 2: B C D D A C D A C C. Versie 3: C D A A B D A B D D. Versie 4: A D C C B D C B D D. Versie 5: B A D D C A D C A A

Voortgezet Prog. voor KI

is eigenlijk overbodig!

Design patterns Startbijeenkomst

TENTAMEN Programmeren 1 VOORBEELDUITWERKING

Scala. Korte introductie. Sylvia Stuurman

Veel succes! 1. Gegeven is de volgende klasse:

Informatica: C# WPO 11

Verder zijn er de nodige websites waarbij voorbeelden van objectgeoriënteerd PHP (of Objec Oriented PHP, OO PHP) te vinden zijn.

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

1 Ontwerppatronen. 1.1 Het Command patroon

Uitwerking Tentamen Modelleren en Programmeren - versie 1 Woensdag 1 februari 2017, uur

Java Les 3 Theorie Herhaal structuren

Practicumopgave 3: SAT-solver

Transcriptie:

l J Tentamen lnleiding Object-Georienteerd Programmeren 4, nov 2011 Vakcode: 192110174 Dit tentamen bestaat uit 5 opgaven waarvoor in totaal 90 punten zijn te halen. Het eindcijfer wordt bepaald met de static methode berekencijfer(int punten): public static int berekencijfer(int punten){ return (int)((punten+l0)/10.0 + 0.5); } Bij dit tentamen is het spiekbriefje gevoegd dat ook op BlackBoard staat. Gebruik van het boek of ander materiaal is niet toegestaan. n de klassendiagrammen geldt de volgende notatie: - Aile attributenfmethoden met een + ervoor zijn public, met een # ervoor protected en een - ervoor private. - Attributen in hoofdletters zijn final. - Klassennamen en -methoden die schuin gedrukt zijn, representeren abstracte klassenjmethoden. - Onderstreepte attributenfmethoden zijn static. - nterfaces worden aangegeven met «interface» en zijn schuin gedrukt. Er hoeft geen Javadoc gegeven te worden bij de antwoorden, tenzij daar expliciet om gevraagd wordt. Veel succes.

Vraag 1 19 punten n deze vraag gaan we bezig met de implementatie van een een simpel supermarkt productadministratiesysteem. Het klassendiagram van dit systeem staat op de volgende pagina. n het systeem worden voor een supermarkt de producten en de voorraad bijgehouden. Verder worden de mandjes bijgehouden, de mandjes die klanten gebruiken om boodschappen te doen. Van elk mandje wordt bijgehouden welke producten erin zitten zodat de prijs van de artikelen in het mandje uitgerekend kan worden en deze producten afgerekend kunnen worden. Een supermarkt heeft een naam, een kas, een lijst met producten en een lijst met mandjes. De kas ontvangt betalingen (inkoop wordt achterwege gelaten). n de array producten worden de producten bijgehouden, aantalproducten is het aantal producten dat in de array zitten en MAXPRODUCTEN is het maximum aantal producten {dus de lengte van de array). Voor ieder product wordt in de array voorraad bijgehouden wat de voorraad van het product is. Voor het product op de eerste locatie in de producten array staat de voorraad op de eerste positie in de voorraad array, etc. n de array mandjes worden de mandjes bijgehouden, aantalmandjes is het aantal mandjes dat in gebruik is en MAXMANDJES is het maximum aantal mandjes {dus de lengte van de array). De constructor van de supermarkt krijgt de naam van de supermarkt mee en zet deze in de naam object variabele, daarnaast initieert de constructor aile andere object viariabelen. De kas wordt bij het maken van een nieuwe supermarkt op 0.0 gezet. Met de PasVoorraadAan methode wordt de voorraad van een product aangepast en met de afrekenen methode wordt een mandje afgerekend (en dus ook de voorraad aangepast!). Voor producten is er een basisklasse Product met de standaard vereiste objectvariabelen en methoden gedefinieerd en ge"implementeerd. n deze klasse worden de naam, prijs en korting van het product bijgehouden. De prijs die wordt bijgehouden is de bruto prijs, dus de prijs zonder dat er kortingen vanaf getrokken zijn. Voor ieder product(klasse) wordt een klasse gemaakt die de standaard Productklasse uitbreidt. n dit voorbeeldje zijn de klassen Frisdrank en Fruit gegeven. We gaan ervan uit dat ieder product een unieke naam heeft. n een mandje worden de producten bijgehouden die in het mandje liggen met de array producten en de integer aantalproducten. Met de methoden voegtoe en verwijder kunnen producten respectievelijk toegevoegd en verwijderd worden uit het mandje. Met de methode bepaalbrutoprijs wordt de bruto prijs van de producten in het mandje bepaald, de prijs zonder dat de korting ervan af getrokken wordt. De methode bepaalkorting bepaalt de totale korting van aile producten in het mandje, de methode bepaalnettoprijs geeft de netto prijs (bruto prijs minus de korting). Met de methode sorteer kan een array met producten worden gesorteerd, ze worden dan gesorteerd op alfabetische volgorde op naam. Voor aile lijsten geldt dat er geen gaten in mogen zitten. Bijvoorbeeld, als er 5 producten in de supermarkt zijn staan ze op de eerste 5 posities van de array. (a) {2 punten) Geef de implementatie van de constructor van de klasse Product. (b) {5 punten) Geef de implementatie van de constructor van de klasse Supermarkt. (c) ( 4 punten) Geef de implementatie van de constructor van de klasse Frisdrank. Geef ook de Java doc. Let op: deze klasse breidt de klasse Product uit. {d) {3 punten) Geef de implementatie van de methode voegtoe van de klasse Mand. Wanneer de array vol is wordt het product simpelweg niet toegevoegd. (e) {5 punten) Geef de implementatie van de methode verwijder van de klasse Mand. Wanneer het Product meerdere keren in de mand zit, wordt aileen de eerste instantie van het product uit de array verwijderd. Zorg ervoor dat er geen gaten in de array ontstaan. Pagina 2 van 9

Supermarkt -naam: String -kas: double -producten: ProductO -voorraad: into -aantaiproducten: int +MAXPRODUCTEN: int -mandjes: Mand0 -aantaimandjes: int +MAXMANDJES: int +Supermarkt(naam: String) +getnaam(): String +getproducten(): ProductO +getvoorraad(): into +getaantaiproducten(): int +getmandjes(): Mand0 +getaantaimandjes(): int +pasvoorraadaan(p: Product, d: int) throws VoorraadKioptNietExceptie +afrekenen(mandje: Mand) Mand -producten: ProductO -aantaiproducten: int +MAXPRODUCTEN: int +Mand() +getproducten(): ProductO +getaantaiproducten(): int +voegtoe(product: Product) +verwijder(product: Product) +bepaainettoprijs(): double +bepaaibrutoprijs(): double +bepaaikorting(): double +sorteer() -naam: String -prijs: double -korting: double Product +Product(naam: String, prijs: double, korting: double) +getnaam(): String +getprijs(): double +getkorting(): double +equals( o: Object): boolean / \ Frisdrank Fruit - koolzuur: boolean -houdbaarheid: Date +Frisdrank(naam: String, prijs: double, +Fruit(naam: String, prijs: double, korkorting: double, koolzuur: boolean) ting: double, houdbaarheids: Date) +getkoolzuur(): boolean +gethoudbaarheid() : Date Figuur 1: Klassendiagram vraag 1 en 2 Pagina 3 van 9

~~2 ~~~ n deze vraag worden de klassen uit opgave 1 gebruikt. (a) (4 punten) lmplementeer de methode equals(object o) van de klasse Product. Producten zijn gelijk wanneer het naamattribuut gelijk is. Hint: let op, de methode krijgt een object van het type Object mee! Controleer dus de types! (b) (3 punten) lmplementeer de methode bepaalnettoprijso van de klasse Mand. (c) (9 punten) De waarde van het productattribuut korting geeft het percentage weer waarmee de (bruto) prijs wordt verminderd. Een korting van 0.10 betekent dus 10% korting. Een negatieve waarde van korting is een aanduiding voor het motto: 'Twee voor de prijs van een'. Elk tweede product hoeft dus niet te worden afgerekend. lmplementeer de methode bepaalkortingo van de klasse Mand, die de totale korting (in euro's) oplevert. Beschrijf eerst in woorden je algoritme om het geval Twee voor de prijs van een' op te lossen. Hint: zorg ervoor m.b.v. de methode sorteer() dat producten met deze/fde naam ononderbroken in de /ijst voorkomen, zodatje het geva/ 'Twee voor de prijs van een' per productnaam kan afhande/en. (d) (7 punten) Geef de implementatie van de methode pasvoorraad.aan(product p, int d) van de klasse Supermarkt, waar d de verandering in de voorraad weergeeft. De methode gooit een VoorraadKloptNietExceptie als de voorraad negatief dreigt te worden. Er is al een implementatie van VoorraadKloptNietExceptie gemaakt, met een constructor die geen argumenten nodig heeft. (e) (6 punten) Geef de implementatie van de methode afrekenen(mand m). Hierbij wordt eerst de voorraad bijgewerkt. lndien er een exceptie gegooid wordt tijdens het bijwerken van de voorraad, meet het betreffende product uit de mand verwijderd worden. Als laatste wordt de netto prijs bepaald van de mand die overblijft en deze prijs wordt aan de kas betaald. Pagina 4 van 9

Vraag 3 Beschouw het klassendiagram in Figuur 2. n dit diagram zijn twee klassen gegeven. 10 punten -jaar: int -titel: Stri.ng -waardering: into -acteurs: ActeurO -aantaiacteurs: int Film +FilmU:int, n:string) +getjaar(): int +gettitel(): String +gemwaardering(): int +waardeer(w:int) +voegacteurtoe(a:acteur) +verwijderacteur(a:acteur) +equals(o:object): boolean -naam: String -geslacht: char Acteur +Acteur( n:string, g:char) +getnaam():string +getgeslacht():char +equals(o:object): boolean Figuur 2: Klassendiagram vraag 3 Met behulp van de klassen gegeven in Figuur 2, willen we een kleine filmdatabase maken. Van films wordt het jaartal waarin de film uitgegeven, de titel en de acteurs bijgehouden. Van een acteur wordt bijgehouden wat het geslacht en de naam is. Men kan acteurs aan een film toevoegen en verwijderen met de voegacteurtoe respectievelijk verwijderacteur methoden. De Film klasse houdt de acteurs bij m.b.v. de acteurs array. Deze array biedt ruimte voor 100 acteurs. Het attribuut aantalacteurs geeft aan hoe ver de array gevuld is. n onze database kunnen mensen hun waardering voor hun film geven. Hiervoor wordt de array waardering gebruikt. Hierin wordt voor elk rapportcijfer (0 t/m 10) bijgehouden hoe vaak een rapportcijfer gegeven is. De array is dus 11 elementen groot. Men kan een film een waardering geven via de waardeer methode. De gemiddelde waardering kan met behulp van de gemwaardering() methode aangevraagd worden. Teken het geheugenmodel (objectmodel) van de situatie na uitvoeren van de volgende code-fragmenten. Bedenk goed voordat je gaat tekenen of een element een primitieve of een object is. (a) (3 punten) Acteur de =new Acteur(" Leonardo di Caprio", 'm' ); Acteur ep = new Acteur ("Ellen Page", 'v'); (b) (7 punten) Let op! Je hoeft aileen maar het geheugenmodel (objectmodel) te tekenen na het uitvoeren van de laatste regel code. Hierbij kan, indien nodig, gerefereerd worden naar eerder getekende entiteiten in vraag (a). Film i = new Film (2010, "nception"); i.voegacteurtoe(ldc); i. voegacteu rtoe ( ep); i.waardeer(o); Pagina 5 van 9

Vraag 4 20 punten Beschouw het klassendiagram in Figuur 3. n dit diagram vind je een interface Telefoon, een abstracte klasse!device en de klassen!phone,!pad en!pod. <interface> Telefoon +bel(n:string) +sms(n:string,b:string) Phone +Phone(n:String) +getgeheugengrootte():int +bel(n:string) +sms( n :String, b:string) /Device -naam:string +Device(n:String) +getnaam():string +getgeheugengrootte():int ~ Pad Pod +Pad(n:String) -grootte:int +getnaam():string +Pod(n:String, g:int) +getgeheugengrootte():int +getgeheugeng rootte(): int Figuur 3: Klassendiagram vraag 4 De volgende regels worden voor iedere vraag uitgevoerd, gevolgd door de code bij de vraag. Na elke vraag beginnen we dus met een schone lei.!phone iphone =new Phone("iPhone 4");!Pad ipad =new Pad("iPad 3G");!Pod ipod =new Pod("Classic", 1024); (a) (2 punten) Kan dit?!device d = iphone; A. Nee,!Device is een abstracte klasse, daar kun je geen instanties van maken. B. Nee, een Phone implementeert oak de interface Telefoon, en dat past niet in een!device. C. Ja, want de Phone klasse bevat de benodigde methode getgeheugengrootte (). D. Ja, want een Phone is een uitbreiding van een!device. (b) (2 punten) Kan dit? Telefoon t = iphone; A. Nee, Telefoon is een interface, daar kan je geen instanties van maken. B. Nee, want Phone is een uitbreiding van!device en past dus niet in een Telefoon. C. Ja, want de Phone klasse implementeert de interface Telefoon. D. Ja, want de Phone klasse bevat aile benodigde methoden (bel en sms). Pagina 6 van 9 ---- - ---------------- ---------------

(c) (2 punten) Gegeven!Device z =new!pod("classic", 1024);!Pod y = z; 1. Regel 1 geeft een fout. 2. Regel 2 geeft een fout. Welk van de bovenstaande stellingen zijn waar? A. Aileen stelling 1 is waar. B. Aileen stelling 2 is waar. C. Stelling 1 en 2 zijn waar. D. Geen van bovenstaande antwoorden. (d) (2 punten) Gegeven Telefoon x =new Phone("3GS");!Phone v = (!Phone) x; 1. Regel 1 geeft een compile-fout. 2. Regel 2 geeft een runtime-fout. Welk van de bovenstaande stellingen zijn waar? A. Aileen stelling 1 is waar. B. Aileen stelling 2 is waar. C. Stelling 1 en 2 zijn waar. D. Geen van bovenstaande antwoorden. (e) (2 punten) Hieronder staan meerdere implementaties van Pod(n:String, g:int) gegeven. Welke is correct? A. public Pod(String naam, int grootte) { //super constructor wordt automatisch uitgevoerd. this.grootte = grootte; } B. public Pod(String naam, int grootte) { super(naam); this.grootte = grootte; } C. public Pod(String naam, int grootte) { this.grootte = grootte; super(naam); } D. public pod(string naam, int grootte) { this= new Device(naam); this.grootte = grootte; } (f) (2 punten) Bestudeer de volgende code Telefoon z = iphone; z.bel("+31534893770"); Mag dit en zo ja, welke bel(string s) wordt uitgevoerd? A. Nee, Telefoon is een interface, daar kun je geen instanties van maken. B. Nee, z is een Telefoon, wat een interface is. nterfaces bevatten geen implementaties. C. Ja, z wijst uiteindelijk naar een!phone-object, dus de bel methode van!phone. D. Ja, z is een Telefoon, dus de belmethode van Telefoon. Pagina 7 van 9

(g) (2 punten) Bestudeer de volgende code!device z = ipod; z.getnaam(); Mag dit, en zo ja, welke getnaamo wordt uitgevoerd. A. Ja, de getnaam() ge"implementeerd in!device. B. Ja, de getnaam() ge"implementeerd in!pod. C. Nee, want!device heeft geen implementatie van getnaam(). D. Nee, want Pod heeft geen implementatie van getnaamo. (h) (2 punten) Bestudeer de volgende code!device z = ipad; //let op, ipad ipv ipod z.getnaam(); Mag dit, en zo ja, welke getnaamo wordt uitgevoerd. A. Ja, de getnaam() ge"implementeerd in!device. B. Ja, de getnaam() ge"implementeerd in!pad. C. Nee, want!device heeft geen implementatie van getnaamo. D. Nee, want Pad heeft geen implementatie van getnaamo. (i) (2 punten) Wat is het resultaat van de volgende regel code: iphone instanceof Telefoon; A. true B. false U) (2 punten) Wat is het resultaat van de laatste regel code:!device z = iphone; z instanceof Telefoon; A. true B. false Pagina 8 van 9

Vraag 5 12 punten n deze vraag moet een programma ontwerp gemaakt worden. n drie stappen worden de onderdelen van het klassendiagram gemaakt: de klassen, de attributen per klasse en dan de methoden per klasse. Geef bij elke stap een korte beschrijving van je keuze: waarom heb je gekozen voor de klassen/attributenjmethoden die je gekozen hebt? Maak er geen proza van! Een paar zinnen is voldoende! Voor een studentenhuis moet bijgehouden worden hoeveel iedere student gebeld heeft gedurende de maand. De studenten in het studentenhuis hebben allemaal een naam en een kamer met een kamernummer. Wanneer een student gaat bellen, toetst hij z'n kamernummer in zodat de kosten op zijn naam gezet kunnen worden. De kosten worden bijgehouden met het aantal telefoontikken: een telefoongesprek duurt een bepaald aantal tikken. Er zijn twee verschillende soorten tikken, binnenlands en buitenlands. Aan het einde van de maand vraagt de huiseigenaar aan het systeem hoeveel iedere student moet betalen en wordt het aantal tikken weer op 0 gezet. (a) (3 punten) Welke klassen zijn er nodig om dit systeem te modelleren en waarom? (b) (3 punten) Welke attributen bezit iedere klasse die je in vraag (a) gegeven hebt? (c) (6 punten) Welke methoden hebben de klassen? Wat doen deze methoden? Je mag get- en set-methoden achterwege aten. Pagina 9 van 9

lnledng OBJECT GEORENTEERD PROGRAMMEREN DECLARATE NSTANTATE public class <<Klasse>> (extends <<ouder>>jl (implements <<interface>>]{} new <<Kiassenaam>>([<<par. lijst >>)); Variabelt}f Object <<type>> <<variabeienaam>>; speier1 =new Speier("Speier-1" ); ------------------------------------------------------------- Arrays "-. int aantai; new <<type>>[<<iengte >>]; Speier speier1; ~----~:_--~----=-----~----------------------------------------------- etho.ded.j <<zichtbaarheid>> (static] <<returntype>> <<naam>>([<<par. iijst >>]) (throws <<Excepties lij s t >>] {.... } public int getaantai () {.... } publlc void setaantal(int aantai) {.... } public static int dagenlnmaand(int maand, int jaar){.... public int read (String t) throws OException {.... } ipa.aitieters <<type>> <<naam>> Er kunnen meerdere parameters meegegeven worden, welke gescheiden worden door een komma. speierl.ontvangkaart(kaart a, int positie) {.... } Met behulp van het keyword return kan een methode een resultaat opleveren. Array <<type>>test [] <<naam>>; speiers =new Speier (4]; matrix = new int ( 4] ( 4]; TOEWJZNG Variabelen <<var>> = <<waarde>>; this. aantaispeiers = 5; // object attribuut Speier. aantaispelers += 1; // klasse attribuut (var = var + 1} AANROEPEN Mebliollen nstantie methoden <<variabeie>>.<<methode>>(<<par. lijst >>); Klasse methoden (static) <<Kiassenaam>>.<<methodenaam>>(<<par. ij s t > > ); Speier[] speiers; int [] [] matrix; speier1.getnaam(); //object this.getnaam (); //object Datum.dagenlnMaand(l2,2007) //klasse; 1 Tekst tussen 0 is optioneel. Let opl Bij arrays worden wei de 0 karakters bedoeid. 1

lnledng OBJECT GEORENTEERD PROGRAMMEREN 1Excepties a.fhanile1en Wanneer methoden excepties kunnen gooien moet je deze afvangen. try { <<code>> } catch <<Excepties>> [finally {<<code>>}] Je kunt verschillende excepties afhandelen door er meerdere te catchen. Java zoekt van hoven naar beneden naar de best matchende exceptie. Het keyword finally wordt altijd uitgevoerd na het uitvoeren van de code. : try { int a. = System. in. read (); } catch (OException iox) { System.out. println("een-leesfout" ); } catch (Exception e) { System.out.println("Er-ging-iets-mis");} finally { System.out.println("Kiaar-met-het-ezen"); } BESTURNG iii f (conditie) {... } [ else {.... } ] loll for (<<initia.lisa.tie >>; <<controle >>; <<a.a.npa.ssing>> ) { } for ( lnt 0; < aa.ntal; i++) {... }.wbile while (conditie) { } d~hile do { } while (conditie) Verschil while en do-while: code bij do-while wordt eerst uitgevoerd voordat conditie wordt getest. Bij while wordt eerst de conditie getest, dan pas de code uitgevoerd uitvoeren. COMMENTAAR Commentaar op 1 regel: Commentaar Commentaar over meerdere regels: tot Javadoc: ** tot int aanta.j; lleen aantal nuttig commentaar ** "' Deze klasse doet.. PACKAGES package <<pakketna.a.m>> import <<pa.kketna.a.m>>.<<kla.sse >> PRMTEVEN Type Klasse Bereik (min) Bereik {max) byte Byte -128 127 short Short -32768 32767 int nteger -2147483648 2147483647 long Long -9223372036854775808 9223372036854775807 float Float 1.4 x 10-45 3.4028235 x 10 38 double Double 4.9 x 10-324 1.7976931348623157 x 10 308 char Character karakters in Unicode Bij kommagetallen wordt het kleinst mogelijke getal en het grootst mogelijke get weergegeven. Negatieve waarden hiervan kunnen oak. VERGELJKNG <,<=,>=,>,1=,== a< 10; myva.r = 12; Let op == test of twee waarden gelijk zijn. ndien je in je variabele een verwijzing na een object hebt, wordt dus getest of beide variabelen dezelfde waarden hebben. n ande woorden: verwijzen ze naar hetzelfde object. BOOLEAANSE OPERATOREN! && Met behulp van een! kan een booleaanse waarheid gelnverteerd worden. boolean found = false; if (!found && i < Jijst.length) { found= lijst [i] = x} 2