VI. Klassen en objecten

Maat: px
Weergave met pagina beginnen:

Download "VI. Klassen en objecten"

Transcriptie

1 VI. Klassen en objecten Klassen en objecten vormen het fundament van OOP. We zullen dus uitgebreid aandacht besteden aan klassen en objecten. U kunt Java niet begrijpen zonder goed met klassen en objecten overweg te kunnen. Het vergt een heel eigen denkwijze bij het ontwerpen van programmacode, zoals u zelf snel zult ontdekken! A. Wat is een klasse? Een klasse (Engels: class) is de beschrijving van een object met betrekking tot de code. Stel dat we een programma willen schrijven over voertuigen. In ons programma moeten we gegevens opnemen over allerlei soorten: karren, driewielers, fietsen, auto s, vliegtuigen. Laten we daarom eerst trachten van deze voertuigen te beschrijven. We maken er een klasse van, de klasse Voertuigen. Eigenschappen Een klasse heeft eigenschappen. In klasse Voertuigen zoude we bijvoorbeeld aan volgende eigenschappen kunnen denken: het aantal wielen, lengte, gewicht, en of het een motor heeft. Deze eigenschappen kunnen we opslaan in variabelen, we noemen dit klassevariabelen. Eigenschap Aantal wielen Lengte Gewicht Heeft een motor? In beweging? Variabel declaratie: int AantalWielen; double Lengte; double Gewicht; boolean HeeftMotor; boolean InBeweging; Methoden Daarnaast kunnen we ook een aantal mogelijke acties bedenken, zoals het voertuig in beweging zetten of het voertuig stoppen. Deze acties kunnen we programmeren in een methode : Actie: Het voertuig in beweging zetten Het voertuig stoppen Methode declaratie: void StartVoertuig() Void StopVoertuig() Oefening : Laten we dit idee eens in programmacode gieten. Maak een nieuw project aan met de naam Voertuigen. Plaats onderstaande code in een bestand Voertuig.java. Test uit en compileer! // Declareer een klasse Voertuig class Voertuig public int AantalWielen; public double Lengte,Gewicht; Inleiding tot Java door ir. C. Daniels 28

2 public boolean HeeftMotor, InBeweging; public void StartVoertuig() InBeweging=true; public void StopVoertuig() InBeweging=false; // en dit is de klasse met de main-methode class VoertuigOefening //Instantieer een object Auto Voertuig Auto = new Voertuig(); //Druk de eigenschappen van het nieuwe voertuig af System.out.println("Auto:"); System.out.println("Aantal wielen: "+Auto.AantalWielen); System.out.println("Lengte en gewicht: "+Auto.Lengte+" " + Auto.Gewicht); System.out.println("Heeft een motor: "+Auto.HeeftMotor); System.out.println("In beweging: "+Auto.InBeweging); Uitleg : Met de code Voertuig Auto = new Voertuig(); maken we een nieuw object aan van de klasse Voertuig. Het object Auto krijgt dus alle eigenschappen en methoden toegewezen uit de klasse Voertuigen. Er wordt door deze opdracht geheugenruimte gereserveerd voor het object Auto. Men zou ook kunnen zeggen dat : - een klasse de plannen voor een nieuw huis voorstelt, - het object is dan een afgewerkt huis. Met één stel plannen, kunt u verschillende, weliswaar gelijkende huizen gaan bouwen, van één klasse kunt u dus ook verschillende objecten instantiëren. Als u code compileert en uitvoert krijgt u het volgende resultaat te zien: Auto: Aantal wielen: 0 Lengte en gewicht: Heeft een motor : false In beweging: false Inleiding tot Java door ir. C. Daniels 29

3 Er is niets geïnitialiseerd, alle waarden staan op nul Als we de volgende code bijvoegen : //Instantieer een object Auto Voertuig Auto = new Voertuig(); Auto.AantalWielen=4; //Druk de eigenschappen van het.. en terug compileren en uitvoeren wordt het aantal wielen wel op 4 gezet (Test uit!) B. Constructor Nochtans heeft Java een veel betere manier om objecten te initialiseren, namelijk een speciale methode de constructor genaamd. Kenmerken van de constructor: Heeft dezelfde naam als de klasse Geeft geen waarde terug Wordt automatisch uitgevoerd bij de instantiëring van een object van die klasse. Als u zelf geen constructor programmeert, wordt de zogenaamde default constructor uitgevoerd, en deze zet alle klassenvariabelen op nul. Oefening : voeg de volgende code voor een constructor toe aan de oefening Voertuigen : class Voertuig public int AantalWielen; public double Lengte,Gewicht; public boolean HeeftMotor, InBeweging; //constructor Voertuig() System.out.println("De constructor wordt uitgevoerd.."); AantalWielen=4; Lengte=4.0; Gewicht=800; HeeftMotor=true; InBeweging=false; public void StartVoertuig().. De uitvoer van het programma wordt nu : De constructor wordt uitgevoerd.. Auto: Aantal wielen: 4 Inleiding tot Java door ir. C. Daniels 30

4 Lengte en gewicht: Heeft een motor: true In beweging: false Alle klassenvariabelen werden nu automatisch geïnitialiseerd met de waarden uit de constructor. Probleem : als u nu een nieuw object Fiets aanmaakt, heeft deze ook 4 wielen, enz Java laat toe om meerdere constructoren te definiëren. Laten we daarom een nieuwe constructor ontwerpen, die als parameters de juiste waarden voor de klassenvariabelen aanneemt. Oefening : Voeg volgende (vetgedrukte) code toe : // Declareer een klasse Voertuig class Voertuig public int AantalWielen; public double Lengte,Gewicht; public boolean HeeftMotor, InBeweging; //constructor Voertuig() System.out.println("De default constructor wordt uitgevoerd.."); AantalWielen=4; Lengte=4.0; Gewicht=800; HeeftMotor=true; InBeweging=false; //constructor #2 Voertuig(int aw,double l,double g,boolean hm, boolean ib) System.out.println("De constructor #2 wordt uitgevoerd.."); AantalWielen=aw; Lengte=l; Gewicht=g; HeeftMotor=hm; InBeweging=ib; public void StartVoertuig() InBeweging=true; public void StopVoertuig() InBeweging=false; Inleiding tot Java door ir. C. Daniels 31

5 // en dit is de klasse met de main-methode class VoertuigOefening //Instantieer een object Auto met de default constructor Voertuig Auto = new Voertuig(); //Instantieer een object Fiets met de tweede constructor Voertuig Fiets = new Voertuig(2,1.8,8.5,false,false); //Druk de eigenschappen van het nieuwe voertuig af System.out.println("Auto:"); System.out.println("Aantal wielen: "+Auto.AantalWielen); System.out.println("Lengte en gewicht: "+Auto.Lengte+" "+Auto.Gewicht); System.out.println("Heeft een motor: "+Auto.HeeftMotor); System.out.println("In beweging: "+Auto.InBeweging); //Druk de eigenschappen van het nieuwe voertuig Fiets af System.out.println("Fiets:"); System.out.println("Aantal wielen: "+Fiets.AantalWielen); System.out.println("Lengte en gewicht: "+Fiets.Lengte+" "+Fiets.Gewicht); System.out.println("Heeft een motor: "+Fiets.HeeftMotor); System.out.println("In beweging: "+Fiets.InBeweging); De uitvoer van het programma is nu : De default constructor wordt uitgevoerd.. De constructor #2 wordt uitgevoerd.. Auto: Aantal wielen: 4 Lengte en gewicht: Heeft een motor: true In beweging: false Fiets: Aantal wielen: 2 Lengte en gewicht: Heeft een motor: false In beweging: false Merk op dat beide constructoren worden uitgevoerd: de default constructor voor de Auto en de tweede constructor voor de Fiets! Java herkent aan het type van de methode en aan het aantal parameters welke van de beide constructoren gebruikt moet worden. Men noemt dit polymorfisme. C. Afscherming In Java (en ook in C++) is het de gewoonte om de klassenvariabelen ontoegankelijk te maken voor andere klassen. Men schermt de variabelen af tegen onoordeelkundig gebruik. Dit doet men door de klassenvariabelen als private te declareren. Oefening: Verander de declaratie in de klasse Voertuig als volgt: Inleiding tot Java door ir. C. Daniels 32

6 // Declareer een klasse Voertuig class Voertuig private int AantalWielen; private double Lengte,Gewicht; private boolean HeeftMotor, InBeweging; Laat compileren. U krijgt echter nu een serie foutmeldingen zoals deze: Voertuigen.java:53: Variable AantalWielen in class Voertuig not accessible from class VoertuigOefening. System.out.println("Aantal wielen: "+Auto.AantalWielen); Dit was te verwachten want de klassenvariabele AantalWielen is nu immer niet meer toegankelijk vanuit de klasse VoertuigOefening. Hoe oplossen? Door de eigenschappen van het object op te vragen via een nieuw te ontwerpen klassenmethode ToonEigenschappen(). Deze declareren we natuurlijk public. Oefening : Verander daarom de code van het programma als volgt : // Declareer een klasse Voertuig class Voertuig private int AantalWielen; private double Lengte,Gewicht; private boolean HeeftMotor, InBeweging; //constructor Voertuig().. public void StopVoertuig() InBeweging=false; public void ToonEigenschappen() System.out.println("Aantal wielen: "+AantalWielen); System.out.println("Lengte en gewicht: "+Lengte+" "+Gewicht); System.out.println("Heeft een motor: "+HeeftMotor); System.out.println("In beweging: "+InBeweging); // en dit is de klasse met de main-methode class VoertuigOefening //Instantieer een object Auto met de default constructor Voertuig Auto = new Voertuig(); //Instantieer een object Fiets met de tweede constructor Inleiding tot Java door ir. C. Daniels 33

7 Voertuig Fiets = new Voertuig(2,1.8,8.5,false,false); //Druk de eigenschappen van het nieuwe voertuig af System.out.println("\nAuto:"); Auto.ToonEigenschappen(); //Druk de eigenschappen van het nieuwe voertuig Fiets af System.out.println("\nFiets:"); Fiets.ToonEigenschappen(); Compileer en test het nieuwe programma uit. Het werkt perfect. Maakt dit niet alles onnodig ingewikkeld? Door de afscherming van de klassenvariabelen en het gebruik van methoden, kunnen we het programma beschermen tegen ongeoorloofd gebruik. Stel dat we bijvoorbeeld een klasse ontwerpen die rechthoeken beschrijft, met de speciale eigenschap dat de lengte steeds het dubbel van de breedte is. Als we de variabelen Lengte en Breedte van deze klasse public toegankelijk maken, zouden er objecten kunnen voorkomen die niet voldoen aan de eisen. Oefening : Schrijf een programma met een klasse Rechthoek. De klasse moet een default constructor bevatten die een object met lengte=2 en breedte = 1 genereert, en een tweede constructor die de breedte als parameter aanvaard, en dan een objcet creëert volgens de eisen. Maak een nieuw project Rechthoek aan. De broncode moet bewaard in een bestand OefeningRechthoek.java. Hieronder een mogelijke oplossing, maar probeer eerst zelf! //klasse Rechthoek class Rechthoek //klasse variabelen private double Lengte,Breedte; //Default constructor Rechthoek() Lengte=2; Breedte=1; //Constructor #2 Rechthoek(double b) Lengte = 2 * b; Breedte = b; public void ToonRechthoek() System.out.println("Lengte = "+Lengte); System.out.println("Breedte = "+Breedte); public class OefeningRechthoek Inleiding tot Java door ir. C. Daniels 34

8 Rechthoek r1 = new Rechthoek(); Rechthoek r2 = new Rechthoek(7.5); System.out.println("\nr1 :"); r1.toonrechthoek(); System.out.println("\nr2 :"); r2.toonrechthoek(); Deze oefening werd gemaakt in KAWA. Hieronder ziet u de informatie in het projectvenster. Merk op dat alle door ons gemaakte klassen eigenlijk afgeleid worden van de standaardklasse van Java : Object D. Static declaratie De variabelen in een klasse kunt u static declareren. Als u dit doet, wordt de waarde van een variabele opgeslagen in de klasse zelf, en niet in elk object. Elk object van die klasse heeft dus dezelfde waarde van deze variabele. Een voorbeeld Inleiding tot Java door ir. C. Daniels 35

9 Oefening: Plaats de volgende code in een project StaticOefening. //static class A private static int a; private int b; A(int aa, int bb) //constructor a=aa;b=bb; public void Toon() System.out.println("a = "+a + " b = "+b); class OefeningStatic A x = new A(1,2); //maak twe objecten van de klasse A A y = new A(10,20); System.out.print("x -> "); x.toon(); System.out.print("y -> "); y.toon(); De uitvoer ziet eruit als volgt: x -> a = 10 b = 2 y -> a = 10 b = 20 De beide objecten x en y hebben dezelfde variabele a, maar een aparte variabele b. Conclusie: In static-variabelen kunt u dus waarden bewaren, die gemeenschappelijk zijn aan alle objecten van een klasse. E. Overerving Dit is misschien wel de belangrijkste eigenschap van OOP! Overerving (Engels: inheritance) laat toe dat objecten eigenschappen erven van een bovenliggende klasse.. Hierdoor is het mogelijk een hele boomstructuur van klassen op te zetten, die telkens alle variabelen en methodes van alle bovenliggende klassen erven. Een bovenliggende klasse noemt men de superklasse. Deze geeft haar eigenschapen verder aan een onderliggende klasse, een subklasse genoemd. In de engelse literatuur wordt ook wel over de parent class, en de children class. De kracht van Java ligt in het feit dat deze taal een ganse boomstructuur van klassen ter beschikking stelt van de programmeur. Inleiding tot Java door ir. C. Daniels 36

10 Oefening : Laten we als start eens een heel eenvoudig voorbeeld nemen. Plaats het geheel in een java-programma met naam OefOvererving.java. We definiëren een superklasse met naam SuperA (met een variabele x), en een daarvan afgeleide klasse SubA (met een variabele y). In elke klasse voorzien we een constructor. //OefOvererving.java class SuperA // de superklasse private int x; //constructor van de superklasse SuperA() System.out.println("Constructor SuperA"); x=10; //Subklasse SubA erft van de superklasse SuperA class SubA extends SuperA private int y; //constructor van de subklasse SubA() System.out.println("Constructor SubA"); y=7; class OefOvererving //maak een object van de superklasse SuperA Obj1 = new SuperA(); Laat compileren en test uit! De uitvoer is : Constructor SuperA Logisch want bij de creatie van Obj1 wordt de constructor aangeroepen! Laten we nu ook een object van de subklasse aanmaken. Voeg de volgende code toe in de main-methode : class OefOvererving Inleiding tot Java door ir. C. Daniels 37

11 //maak een object van de superklasse SuperA Obj1 = new SuperA(); //maak een object van de subklasse SubA Obj2 = new SubA(); Laat weer compileren en uitvoeren. De uitvoer is nu : Constructor SuperA Constructor SuperA Constructor SubA Belangrijk : Voor de instantiëring van het object uit de subklasse SubA, worden de beide constructoren aangeroepen! Eigenlijk is dit logisch. Obj2 bezit beide variabelen x (geërfd van de superklasse) en y. Beide variabelen moeten dus ook geïnitialiseerd worden. Dus moet ook de constructor van de superklasse worden uitgevoerd om de variabele x van Obj2 te initialiseren. F. protected Laten we nu in elke klasse een methode Toon() bijvoegen die de waarde van de variabelen afdrukt. Voeg daarom de volgende (vetgedrukte) toe aan uw programma: class SuperA private int x; SuperA() System.out.println("Constructor SuperA"); x=10; public void Toon() System.out.println("Toon uit SuperA"); System.out.println("x = "+ x); //SubA erft van de superklasse SuperA class SubA extends SuperA private int y; SubA() System.out.println("Constructor SubA"); y=7; public void Toon() System.out.println("Toon uit SubA"); System.out.println("x= " + x + " y= "+ y); class OefOvererving Inleiding tot Java door ir. C. Daniels 38

12 SuperA Obj1 = new SuperA(); SubA Obj2 = new SubA(); Obj1.Toon(); Obj2.Toon(); Laat compileren. U krijgt echter nu de volgendefoutmelding : Compiler Output OefOvererving.java:29: Undefined variable: x System.out.println("x= " + x + " y= "+ y); 1 error Blijkbaar kent de afgeleide klasse de variabele x niet. Nochtans wordt deze overgeërfd.. Waarom dan deze fout? De oorzaak ligt in de declaratie van de variabele x als private. Dit betekent dat de variabele x alleen toegankelijk is in de klasse zelf, en niet in andere klassen, ook niet in afgeleide klassen. Om te zorgen dat de variabele x ook toegankelijk is, alleen in afgeleide klassen, maar niet in vreemde klassen, moet u deze declareren als protected. Verander de declaratie van x als volgt : protected int x; Compileer opnieuw en bekijk het resultaat. De uitvoer ziet er nu als volgt uit : Constructor SuperA Constructor SuperA Constructor SubA Toon uit SuperA x = 10 Toon uit SubA x= 10 y= 7 We hebben nu twee methoden Toon(), maar toch wordt voor elk object de juiste functie uitgevoerd. Men noemt dit polymorfie. Oefening : laat de methode Toon() uit de subklasse SubA weg (maak er commentaar van door /*.*/ te gebruiken). Laat compileren en test uit. De uitvoer wordt nu : Constructor SuperA Constructor SuperA Constructor SubA Toon uit SuperA x = 10 Toon uit SuperA x = 10 Inleiding tot Java door ir. C. Daniels 39

13 Blijkbaar wordt nu ook voor object 2 de functie Toon() uit de superklasse uitgevoerd! Oefening : Laat nu alleen de functie toon uit de superklasse weg en plaats ze terug in de subklasse. Compileer. We krijgen nu volgende foutmelding in KAWA: Compiler Output OefOvererving.java:40: Method Toon() not found in class SuperA. Obj1.Toon(); ^ 1 error Inderdaad : Obj1 vraagt natuurlijk de methode Toon() uit de superklasse, maar deze bestaat niet meer dus.. G. super Indien we wensen de functie Toon() uit de superklasse aan te roepen vanuit de subklasse, kunnen we het woordje super gebruiken. Oefening: Plaats de methode Toon() terug in de superklasse en verander de code van de subklasse als volgt: //SubA erft van de superklasse SuperA class SubA extends SuperA private int y; public SubA() System.out.println("Constructor SubA"); y=7; public void Toon() System.out.println("Toon uit SubA"); super.toon(); System.out.println("y = "+ y); De uitvoer ziet er nu zoals hieronder uit: Leg uit! Constructor SuperA Constructor SuperA Constructor SubA Toon uit SuperA x = 10 Toon uit SubA Toon uit SuperA x = 10 y = 7 Inleiding tot Java door ir. C. Daniels 40

14 H. Overerving samenvatting Een klasse die waarvan een andere klasse wordt afgeleid, noemen we een superklasse. Een klasse die afgeleid is van een andere klasse, noemen we een subklasse. De superklasse wordt aangeduid aangegeven achter het woordje extends bij de declaratie van de subklasse. De objecten van een subklassen erven alle variabelen en methodes uit de superklasse. Om variabelen (of methoden) uit de superklasse toegankelijk te maken in de subklasse moeten deze als protected worden gedeclareerd in de superklasse. Om in een subklasse een methode uit te voeren van de superklasse, kan dit worden aangegeven met super. I. Abstracte klassen Soms is het wenselijk een klasse te ontwerpen, waarvan men geen objecten wil. Wel is het de bedoeling deze klasse te gebruiken als blauwdruk voor afgeleide klassen. Men kan de programmeur hiermee dwingen bepaalde methodes te implementeren in de afgeleide klasse. Een kort voorbeeldje zal dit duidelijk maken. Oefening: Maak een nieuw project aan met de naam AbstracteKlasse. Sla de volgende bestanden op in een bestand met dezelfde naam.java. Dus slechts één klasse per bestand. Dit is trouwens algemeen aangeraden, bij grotere projecten. Opslaan in Abstract.java : //Een abstracte Klasse public abstract class Abstract public abstract void MethodeA(); Opslaan in AbstracteKlasse.java : // hoofdprogramma public class AbstracteKlasse Abstract A = new Abstract(); // Niet OK Merk op dat: De klasse Abstract gedeclareerd wordt als abstract. Er minstens één methode is, hier MethodeA die gedeclareerd is als abstract. Deze methode heeft geen body (het gedeelte tussen ). In het hoofdprogramma wordt een object A geïnstantieerd van de abstracte klasse. Dit is niet toegelaten. Compileer. De compiler geeft inderdaad volgende foutmelding: Compiler Output AbstracteKlasse.java:6: class Abstract is an abstract class. It can't be instantiated. Inleiding tot Java door ir. C. Daniels 41

15 Abstract A = new Abstract(); // Niet OK ^ 1 error Van een abstracte klasse kunnen we geen object scheppen. Dus moeten we zeker een afgeleide klasse maken, waarin de methode MethodeA opnieuw gedefinieerd wordt. Voeg daarom volgende code bij, en plaats deze in een apart bestand subabstract.java, die u bijvoegt aan het project. //Klasse subabstract afgeleid van Abstract class subabstract extends Abstract //Herdefinieer de methode MethodeA public void MethodeA() System.out.println("Dit mag wel..."); Wijzig het hoofdprogramma als volgt : //Klasse AbstracteKlasse public class AbstracteKlasse // Een onbect afleiden van subabstract subabstract A = new subabstract(); //OK A.MethodeA(); Compileer en test uit. Het programma zou nu zonder fouten moeten compileren en runnen. Besluit: Abstracte klassen dwingen de programmeur bepaalde methoden eerst uit te werken, vooraleer deze klasse kan gebruikt worden. TIP: plaats elke klasse in een apart bestand met dezelfde naam en extensie.java. J. Interfaces In C++ kan een klasse afgeleid worden van meerdere superklassen. Dit kan nuttig zijn. Denk maar aan een klasse Amfibievoertuig, die zowel eigenschappen van een klasse Schip zou kunnen erven als van een klasse Auto. Het heeft immers kenmerken van beide. Dit blijkt echter tot verwarring en complicaties te leiden. Daarom voorziet Java deze mogelijkheid van meervoudige overerving niet. Om toch hieraan een oplossing te geven heeft Java de interface ontwikkeld, die extra eigenschappen aan een klasse kan meegegeven. Een klasse kan de eigenschappen van meerdere eigenschappen overnemen. Inleiding tot Java door ir. C. Daniels 42

16 Laten we dit illustreren met een voorbeeld. We gaan een klasse Schoenen aanmaken met de eigenschappen Maat en Kleur. Oefening : Maak een nieuw project met als naam bijvoorbeeld OefeningInterface en plaats de volgende code in een bestand OefInterface.java. public class OefInterface Schoenen Paar1= new Schoenen(38,"Blauw"); Schoenen Paar2= new Schoenen(44,"Zwart"); Paar1.Toon(); Paar2.Toon(); Plaats de volgende code in een bestand Schoenen.java public class Schoenen private int Maat; private String Kleur; //Constructor Schoenen(int m, String k) Maat=m; Kleur=k; public void Toon() System.out.println("\nKleur: "+ Kleur + " Maat: "+Maat); Compileer en test uit! Stel dat we nog wat info willen toepassen over de leverancier van de schoenen. We kunnen dit in een interface plaatsen, zodat de schoenen eveneens deze methodes overerven. Oefening : Plaats de volgende code in een bestand Leverancier.java, en voeg het toe aan het project : //Interface Leverancier.java public interface Leverancier public void ToonLeverancier(int l); Inleiding tot Java door ir. C. Daniels 43

17 Een methode in een interface is steeds abstract. We moeten dus in de klasse die deze interface gebruikt, de methode ToonLeverancier(int l) definiëren. Pas daarom de methode Schoenen aan als volgt : public class Schoenen implements Leverancier private int Maat; private String Kleur; //Constructor Schoenen(int m, String k) Maat=m; Kleur=k; // Definieer de abstracte methode public void ToonLeverancier(int l) switch(l) case 1: System.out.println("Fabrikant: Schoenen Vanhakkesloot nv."); System.out.println("Hielengracht 23, 3500 Hasselt"); break; case 2: System.out.println("Fabrikant: Vanata nv."); System.out.println("Paalstaat 25, 3520 Diest"); break; default:system.out.println("fabrikant: Onbekend"); public void Toon() System.out.println("\nKleur: "+ Kleur + " Maat: "+Maat); En gebruik deze methode in het hoofdprogramma : public class OefInterface Schoenen Paar1= new Schoenen(38,"Blauw"); Schoenen Paar2= new Schoenen(44,"Zwart"); Paar1.Toon(); Paar1.ToonLeverancier(1); Paar2.Toon(); Paar2.ToonLeverancier(2); Inleiding tot Java door ir. C. Daniels 44

18 Compileer en test uit! Oefening : voeg aan de interface Leverancier een variabele toe : public interface Leverancier public int Categorie; public void ToonLeverancier(int l); Compileer. U krijgt een foutmelding: Compiler Output Leverancier.java:3: This final variable must be initialized: int a public int Categorie; ^ 1 error U kunt in een interface geen variabelen declareren. Alleen maar constante waarden. In Java bestaat echter geen constante, zoals in andere talen. Een constante moet gedeklareerd worden als final. K. Final Het woordje Final wordt in Java gebruikt om een constante waarde te deklareren. Deze moet dus ook in de declaratie geïntialiseerd worden. Verander de code in de interface daarom als volgt: public interface Leverancier public final int Categorie = 1000; public void ToonLeverancier(int l); Tip : Het woordje final is niet verplicht vermits alle waarden in een interface altijd final zijn, maar het expliciet vermelden geeft wel duidelijke code. Gebruik deze waarde in de methode Toon() van de klasse Schoenen: public void Toon() System.out.println("\nKleur: "+ Kleur + " Maat: "+Maat); System.out.println("Categorie:" + Categorie); Compileer en test uit! Inleiding tot Java door ir. C. Daniels 45

19 De uitvoer van het programma kan er als volgt uitzien : Kleur: Blauw Maat: 38 Categorie:1000 Fabrikant: Schoenen Vanhakkesloot nv. Hielengracht 23, 3500 Hasselt Kleur: Zwart Maat: 44 Categorie:1000 Fabrikant: Vanata nv. Paalstaat 25, 3520 Diest TIP: constante waarden moeten in java gedeclareerd worden als final, en onmiddellijk worden geïnitialiseerd. Deze waarde kan in de loop van het programma niet meer veranderen. Oefening : Maak een nieuw project aan met de naam OefVierhoekenen. Definieer een abstracte klasse Vierhoek met als variabelen, een array met de lengten van de vier zijden, en als abstracte methoden void Toon(), double Omtrek(), en double Oppervlakte. Leid hiervan de klassen Vierkanten en Rechthoeken af. De methode Toon() drukt de lengte van de zijden: lengte en breedte voor de rechthoeken, en de lengte van de zijde voor het vierkant. Voorzie in de klasse Rechthoek een constructor van de vorm Rechthoek (double Lengte, double Breedte), en in de klasse Vierkant een constructor van de vorm Vierkant(double Zijde). Instantieer in de hoofdklasse OefVierhoeken een rechthoek met lengte=5 en breedte=2, en een vierkant met zijde=4, en druk de omtrek en de oppervlakte af, en de lengte en breedte voor een rechthoek, of de lengte van de zijde voor het vierkant. De uivoer kan er dan als volgt uitzien: Dit is een rechthoek Lengte: 5.0 breedte: 2.0 Omtrek: 14.0 Oppervlakte: 10.0 Dit is een vierkant Lengte van de zijde: 4.0 Omtrek: 16.0 Oppervlakte: 16.0 Voeg een interface met de naam ToonKlasse en de abstracte methode Toonklasse. Definieer deze methode in de afgeleide klassen Vierkant en Rechthoek. Zodat deze methode de naam (Vierkant of Rechthoek) afdrukt naargelang het soort object. Plaats elke klasse en interface in een bestand met dezelfde naam als de klasse met de extensie.java. Probeer zelf de code te vinden! Als het niet lukt kunt u hieronder even spieken. //OefVierhoeken.java - hoofdprogramma Inleiding tot Java door ir. C. Daniels 46

20 public class OefVierhoeken Rechthoeken R1 = new Rechthoeken(5.0,2.0); System.out.println("\nDit is een "+R1.ToonKlasse()); R1.Toon(); System.out.println("Omtrek: "+R1.Omtrek()); System.out.println("Oppervlakte: "+R1.Oppervlakte()); Vierkanten V1 = new Vierkanten(4.0); System.out.println("\nDit is een "+V1.ToonKlasse()); V1.Toon(); System.out.println("Omtrek: "+V1.Omtrek()); System.out.println("Oppervlakte: "+V1.Oppervlakte()); //Vierhoeken.java - de abstracte superklasse public abstract class Vierhoeken protected double Zijde[]=new double[4]; public abstract void Toon(); public abstract double Omtrek(); public abstract double Oppervlakte(); //Rechthoeken.java public class Rechthoeken extends Vierhoeken implements ToonKlasse Rechthoeken(double l,double b) Zijde[0]=l; Zijde[1]=b; Zijde[2]=l; Zijde[3]=b; public void Toon() System.out.println("Lengte: "+Zijde[0]+" breedte: "+Zijde[1]); public double Omtrek() return Zijde[0]+Zijde[1]+Zijde[2]+Zijde[3]; public double Oppervlakte() return Zijde[0]*Zijde[1]; Inleiding tot Java door ir. C. Daniels 47

21 public String ToonKlasse() return "rechthoek"; //Vierkanten.java public class Vierkanten extends Vierhoeken implements ToonKlasse Vierkanten(double z) Zijde[0]=z; Zijde[1]=z; Zijde[2]=z; Zijde[3]=z; public void Toon() System.out.println("Lengte van de zijde: "+Zijde[0]); public double Omtrek() return 4*Zijde[0]; public double Oppervlakte() return Zijde[0]*Zijde[0]; public String ToonKlasse() return "vierkant"; //ToonKlasse.java - een interface public interface ToonKlasse public abstract String ToonKlasse(); Abstract Vierhoeken Interface ToonKlasse Rechthoeken Vierkanten De boomstructuur van de klassen en de interface uit deze oefening. Inleiding tot Java door ir. C. Daniels 48

22 Hieronder de boomstructuur van de klassen uit deze oefening, zoals deze verschijnen in het project-venster van KAWA. Merk op dat de klassen Vierhoeken, en OefVierhoeken, impliciet zijn afgeleid van de javaklasse Object. Als u dit tot een goed einde brengt, dan verdient u een dikke proficiat! Want dan heeft OOP niet veel geheimen meer voor u! Vergeet niet : «Oefening baart kunst»! en dat geldt zeker voor programmeren. Door vallen en opstaan leert u uw eigen fouten corrigeren. En de computer is de beste leraar : als er fouten in uw code zitten, zal de computer u onverbiddellijk op uw fouten wijzen Inleiding tot Java door ir. C. Daniels 49

Overerving & Polymorfisme

Overerving & Polymorfisme Overerving & Polymorfisme Overerving Sommige klassen zijn speciaal geval van andere klasse Docent is een speciaal geval van werknemer, dwz. elke docent is ook werknemer Functionaliteit van docent = functionaliteit

Nadere informatie

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

Datatypes Een datatype is de sort van van een waarde van een variabele, veel gebruikte datatypes zijn: String, int, Bool, char en double. Algemeen C# Variabele Een variabele is een willekeurige waarde die word opgeslagen. Een variabele heeft altijd een datetype ( De soort waarde die een variabele bevat). Datatypes Een datatype is de sort

Nadere informatie

Abstracte klassen & Interfaces

Abstracte klassen & Interfaces Abstracte klassen & Interfaces Overerving public class Vierhoek {... Vierhoek public class Rechthoek extends Vierhoek {... public class Ruit extends Vierhoek {... Rechthoek Ruit Elke rechthoek is een vierhoek.

Nadere informatie

IMP Uitwerking week 13

IMP Uitwerking week 13 IMP Uitwerking week 13 Opgave 1 Nee. Anders moet bijvoorbeeld een venster applicatie een subklasse zijn van zowel Frame en WindowListener. Als de applicatie ook een button of een menu heeft, dan moet het

Nadere informatie

Zelftest Programmeren in Java

Zelftest Programmeren in Java Zelftest Programmeren in Java Document: n0883test.fm 22/01/2013 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INLEIDING BIJ DE ZELFTEST PROGRAMMEREN IN JAVA Deze test

Nadere informatie

Kleine cursus PHP5. Auteur: Raymond Moesker

Kleine cursus PHP5. Auteur: Raymond Moesker Kleine cursus PHP5 Auteur: Raymond Moesker Kleine cursus PHP PHP is platform en CPU onafhankelijk, open source, snel, heeft een grote userbase, het is object georiënteerd, het wordt omarmd door grote bedrijven

Nadere informatie

Programmeren (1) Examen NAAM:

Programmeren (1) Examen NAAM: Schrijf al je antwoorden op deze vragenbladen (op de plaats die daarvoor is voorzien) en geef zowel klad als net af. Bij heel wat vragen moet je zelf Java-code schrijven. Hou dit kort en bondig. Je hoeft

Nadere informatie

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

Objectgeorïenteerd werken is gebaseerd op de objecten die door het systeem gemanipuleerd worden. Herhaling Objectgeorïenteerd werken is gebaseerd op de objecten die door het systeem gemanipuleerd worden. De basisbouwsteen is het object; een geïntegreerde eenheid van data en operaties werkend op deze

Nadere informatie

Noties Informatica. In java fungeren objecten als een model voor de elementen waarin een probleem kan worden opgesplitst

Noties Informatica. In java fungeren objecten als een model voor de elementen waarin een probleem kan worden opgesplitst s Informatica Hoofdstuk 1 Object Klasse Methode Parameters Type Velden Toestand Compiler Resultaten (returnwaarde) In java fungeren objecten als een model voor de elementen waarin een probleem kan worden

Nadere informatie

Universiteit van Amsterdam FNWI. Voorbeeld van tussentoets Inleiding programmeren

Universiteit van Amsterdam FNWI. Voorbeeld van tussentoets Inleiding programmeren Universiteit van Amsterdam FNWI Voorbeeld van tussentoets Inleiding programmeren Opgave 1: Wat is de uitvoer van dit programma? public class Opgave { static int i = 0 ; static int j = 1 ; int i = 1 ; int

Nadere informatie

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

Informatica. Objectgeörienteerd leren programmeren. Van de theorie met BlueJ tot een spelletje met Greenfoot... Bert Van den Abbeele Informatica Objectgeörienteerd leren programmeren Van de theorie met BlueJ tot een spelletje met Greenfoot... Bert Van den Abbeele http://creativecommons.org/licenses/by-nc-nd/3.0/legalcode Objectgeörienteerd

Nadere informatie

Programmeren in C# Interfaces. Hoofdstuk 23

Programmeren in C# Interfaces. Hoofdstuk 23 Programmeren in C# Interfaces Hoofdstuk 23 Programmeren in C# 2 Gradaties overerving Klassieke overerving Iets functioneels uitbreiden Code duplicatie Niet teveel aanpassingen aan bestaande code Objecten

Nadere informatie

Tentamen Object Georiënteerd Programmeren TI1206 29 oktober 2014, 9.00-11.00 Afdeling SCT, Faculteit EWI, TU Delft

Tentamen Object Georiënteerd Programmeren TI1206 29 oktober 2014, 9.00-11.00 Afdeling SCT, Faculteit EWI, TU Delft Tentamen Object Georiënteerd Programmeren TI1206 29 oktober 2014, 9.00-11.00 Afdeling SCT, Faculteit EWI, TU Delft Bij dit tentamen mag je geen gebruik maken van hulpmiddelen zoals boek of slides. Digitale

Nadere informatie

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

Voorbeeldtentamen Inleiding programmeren (IN1608WI), Oktober 2003, , Technische Universiteit Delft, Faculteit EWI, Afdeling 2. Voorbeeldtentamen Inleiding programmeren (IN1608WI), Oktober 2003, 14.00-15.30, Technische Universiteit Delft, Faculteit EWI, Afdeling 2. Dit tentamen bestaat uit twee delen. Deel 1 (14.00-14.45, gesloten

Nadere informatie

Tentamen Object Georiënteerd Programmeren TI1200 30 januari 2013, 9.00-12.00 Afdeling SCT, Faculteit EWI, TU Delft

Tentamen Object Georiënteerd Programmeren TI1200 30 januari 2013, 9.00-12.00 Afdeling SCT, Faculteit EWI, TU Delft Tentamen Object Georiënteerd Programmeren TI1200 30 januari 2013, 9.00-12.00 Afdeling SCT, Faculteit EWI, TU Delft Bij dit tentamen mag je geen gebruik maken van hulpmiddelen zoals boek of slides. Dit

Nadere informatie

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

Hoofdstuk 1: Inleiding. Hoofdstuk 2: Klassen en objecten Datahiding: afschermen van implementatiedetails. Naar de buitenwereld toe enkel interfaces. Hoofdstuk 1: Inleiding Objectoriëntatie: 1. Objecten & klassen: samenwerking van componenten om bepaald doel te bereiken; herbruikbaarheid. 2. Encapsulation: afschermen gedragingen en kenmerken van de

Nadere informatie

Vakgroep CW KAHO Sint-Lieven

Vakgroep CW KAHO Sint-Lieven Vakgroep CW KAHO Sint-Lieven Objecten Programmeren voor de Sport: Een inleiding tot JAVA objecten Wetenschapsweek 20 November 2012 Tony Wauters en Tim Vermeulen [email protected] en [email protected]

Nadere informatie

Modelleren en Programmeren

Modelleren en Programmeren Modelleren en Programmeren Jeroen Bransen 6 december 2013 Terugblik Programma en geheugen Opdrachten Variabelen Methoden Objecten Klasse Programma en geheugen Opdrachten Variabelen zijn gegroepeerd in

Nadere informatie

Programmeren in Java 3

Programmeren in Java 3 26 september 2007 Deze les korte herhaling vorige les Unified Modelling Language notatie van een class afleiding pointers abstracte classes polymorphisme dubieuze(?) constructies interfaces Meer over class

Nadere informatie

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

Tentamen Imperatief en Object-georiënteerd programmeren in Java voor CKI Tentamen Imperatief en Object-georiënteerd programmeren in Java voor CKI Vrijdag 22 januari 2010 Toelichting Dit is een open boek tentamen. Communicatie en het gebruik van hulpmiddelen zijn niet toegestaan.

Nadere informatie

Programmeren in C# Overerving

Programmeren in C# Overerving Programmeren in C# Overerving Programmeren in C# 2 public class Balloon private int x = 50; private int y = 50; private int diameter = 20; public int Diameter getreturn diameter; setif (value

Nadere informatie

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

Uitwerking Tweede deeltentamen Imperatief programmeren - versie 1 Vrijdag 21 oktober 2016, uur Uitwerking Tweede deeltentamen Imperatief programmeren - versie 1 Vrijdag 21 oktober 2016, 13.00-15.00 uur 1. De situatie die ontstaat door class A : B C D; kan beschreven worden door (a) B is een A (b)

Nadere informatie

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

Visual Basic.NET. Visual Basic.NET. M. den Besten 0.3 VB. NET Visual Basic.NET M. den Besten 0.3 VB. NET Inhoud Voorwoord Deel 1 Visual Basic.NET 1.1 Inleiding...13 1.2 De programmeertaal Visual Basic.NET...14 1.3 Microsoft Visual Basic 2010 Express Edition...15

Nadere informatie

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

Verder zijn er de nodige websites waarbij voorbeelden van objectgeoriënteerd PHP (of Objec Oriented PHP, OO PHP) te vinden zijn. Objectgeoriënteerd PHP (versie 5) Kennisvereisten: Ervaring met programmeren in PHP met MySQL Je weet wat een class of klasse is Je weet wat een instantie van een klasse (een object) is Je weet wat een

Nadere informatie

Vereiste kennis. 1 Java-editor. 2 Het compileren van een programma

Vereiste kennis. 1 Java-editor. 2 Het compileren van een programma 3 Vereiste kennis Dit boek richt zich op het leren programmeren door het oefenen met programmeercodes. Veel theorie komt in het begin niet aan de orde. Dat is een grote uitdaging want het is niet makkelijk

Nadere informatie

ALGORITME objectgeoriënteerd programmeren

ALGORITME objectgeoriënteerd programmeren ALGORITME objectgeoriënteerd programmeren Gunter Schillebeeckx 1 objectgeoriënteerd programmeren Object Klasse Instantie Eigenschap Methode Inkapseling Polymorfisme Overerving 2 Inleiding Kern Samenvatting

Nadere informatie

HOGESCHOOL VAN AMSTERDAM Informatica Opleiding. CPP 1 van 10

HOGESCHOOL VAN AMSTERDAM Informatica Opleiding. CPP 1 van 10 CPP 1 van 10 ADSdt 1-2009 TENTAMENVOORBLAD Voor aanvang van het tentamen s.v.p. de tentamengegevens goed doorlezen om eventuele misverstanden te voorkomen!! Naam student : Studentnummer : Groep : Studieonderdeel

Nadere informatie

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

Omschrijf bij ieder onderdeel van de methode de betekenis ervan. Java kent twee groepen van klassen die een GUI kunnen maken: awt en swing. irkel (met Jpanel) ij de onderstaande opdracht behoort het bestand Panels: JPanels_1.java (map Panel) in de map irkel. pplicaties in Java hebben altijd een publieke klasse waarin een methode main voorkomt.

Nadere informatie

INFORMATICA 1STE BACHELOR IN DE INGENIEURSWETENSCAPPEN

INFORMATICA 1STE BACHELOR IN DE INGENIEURSWETENSCAPPEN INFORMATICA 1STE BACHELOR IN DE INGENIEURSWETENSCAPPEN voorbeeldexamen NAAM :... OPMERKINGEN VOORAF Je krijgt 3 uur de tijd om de opdrachten voor dit examen uit te voeren. Verder werken aan je oplossing

Nadere informatie

NAAM: Programmeren 1 Examen 21/01/2011

NAAM: Programmeren 1 Examen 21/01/2011 Programmeren 1 21 januari 2011 Prof. T. Schrijvers Instructies Schrijf al je antwoorden op deze vragenbladen (op de plaats die daarvoor is voorzien). Geef ook je kladbladen af. Bij heel wat vragen moet

Nadere informatie

Modelleren en Programmeren

Modelleren en Programmeren Modelleren en Programmeren Jeroen Bransen 18 december 2015 Overerving (inheritance) Constructors Overriding Inheritance demo Exceptions Zelf exceptions veroorzaken Overerving (inheritance) 2-dimensionaal

Nadere informatie

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

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

Nadere informatie

Objectgericht programmeren 1.

Objectgericht programmeren 1. Objectgericht programmeren 1 [email protected] http://www.cs.kuleuven.be/~joost/dn Objectgericht ontwerpen 35% Objectgericht ontwerpen 65% OP1 Informatiesystemen 50% Databanken 50% OP1 Evaluatie

Nadere informatie

Door ir. Christine Daniels

Door ir. Christine Daniels Door ir. Christine Daniels http://users.pandora.be/christine.daniels http://iwt.khlim.be/~cdaniels email: [email protected] I. Inleiding A. Historiek Java werd ontwikkeld door medewerkers van

Nadere informatie

Java. Basissyllabus. Egon Pas

Java. Basissyllabus. Egon Pas Java Basissyllabus Egon Pas 2011 BeanPole bvba Gasmeterlaan 92-9000 Gent BTW BE 472.902.516 Tel: + 32 9 224 42 17 Fax: + 32 9 223 62 88 www.beanpole.be [email protected] 1 Programmeren 1.1 Hoe werkt een

Nadere informatie

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

public Paneel() { knop = new JButton( Klik ); knop.addactionlistener( new KnopHandler() ); tekstvak = new JTextField(10); add(knop); add(tekstvak); Vaknaam: Programmeren I (Java) - Tentamen Module: 2 Datum/Tijd: 17 mrt 2015 / 18.30 20:30 Richting: ICT Code: IC011 Docent: E. Lieuw Boeken en aantekeningen NIET toegestaan. Kladpapier is wel toegestaan.

Nadere informatie

Scala. Korte introductie. Sylvia Stuurman

Scala. Korte introductie. Sylvia Stuurman Korte introductie Sylvia Stuurman Wat is er zo bijzonder aan? Schaalbaar Objectgeoriënteerd (handiger dan Java!) Functioneel Scripts schrijven Gecompileerd: Java bytecode Pagina 2 voor scripts Pagina 3

Nadere informatie

Uitwerkingen Tweede deeltentamen Imperatief programmeren Vrijdag 15 oktober 2010, 11.00-13.00 uur

Uitwerkingen Tweede deeltentamen Imperatief programmeren Vrijdag 15 oktober 2010, 11.00-13.00 uur Uitwerkingen Tweede deeltentamen Imperatief programmeren Vrijdag 15 oktober 2010, 11.00-13.00 uur 1. (2 punten per deelvraag) Deze opgave bestaat uit een aantal tekstvragen. Houd het antwoord kort: een

Nadere informatie

TENTAMEN Programmeren 1

TENTAMEN Programmeren 1 TENTAMEN Programmeren 1 vakcode: 213500 datum: 15 augustus 2002 tijd: 13:30 17:00 uur Algemeen Bij dit tentamen mag gebruik worden gemaakt van het boek van Niño/Hosch, en van de handleiding van Programmeren

Nadere informatie

Aan het eind van deze lesbrief wordt uitgelegd wat het nut van OOP is en vind je een aantal oefenopdrachten.

Aan het eind van deze lesbrief wordt uitgelegd wat het nut van OOP is en vind je een aantal oefenopdrachten. Doel van deze lesbrief Deze lesbrief is bedoeld om je op de hoogte te brengen van de basisbegrippen die gangbaar zijn bij object georiënteerd programmeren (OOP). In deze lesbrief kom je korte codefragmenten

Nadere informatie

Programmeren in Java les 3

Programmeren in Java les 3 4 september 2015 Deze les korte herhaling vorige week loops methodes Variabelen Soorten variabelen in Java: integer: een geheel getal, bijv. 1,2,3,4 float: een gebroken getal, bijv. 3.1415 double: een

Nadere informatie

Object-oriented programmeren met BlueJ en Visual Studio

Object-oriented programmeren met BlueJ en Visual Studio Object-oriented programmeren met BlueJ en Visual Studio HA-2265-03 Nascholing Katholiek Onderwijs Vlaanderen Bert Cauwenberg & Lieven Pauwels Werkgroep Handel 2017 Guimardstraat 1, 1040 Brussel Guimardstraat

Nadere informatie

Beginselen van programmeren Practicum 1 (Doolhof) : Oplossing

Beginselen van programmeren Practicum 1 (Doolhof) : Oplossing Beginselen van programmeren Practicum 1 (Doolhof) : Oplossing Introductie In dit document geven we een mogelijke oplossing voor het eerste practicum. Deze oplossing gebruikt verschillende klassen en overerving,

Nadere informatie

et Zend Framework bestaat volledig uit objectgeoriënteerde

et Zend Framework bestaat volledig uit objectgeoriënteerde et Zend Framework bestaat volledig uit objectgeoriënteerde PHP-code. Om het Zend Framework goed te kunnen begrijpen en te kunnen gebruiken, moet u minimaal de basis van objectgeoriënteerd programmeren

Nadere informatie

Uitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, 13.30 15.30 uur

Uitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, 13.30 15.30 uur Uitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, 13.30 15.30 uur 1. deze opgave telt voor 30% van het totaal. Schrijf een compleet programma, dat door de gebruiker vanaf

Nadere informatie

http://www.liacs.nl/home/kosters/java/

http://www.liacs.nl/home/kosters/java/ sheets Programmeren 1 Java college 2, Walter Kosters De sheets zijn gebaseerd op de hoofdstukken 2 tot en met 6 van: D. Bell en M. Parr, Java voor studenten, Prentice Hall, 2002 http://www.liacs.nl/home/kosters/java/

Nadere informatie

Modelleren en Programmeren

Modelleren en Programmeren Modelleren en Programmeren Jeroen Bransen 27 november 2015 Recursie Objecten Constructors Aanpassen variabelen this keyword Recursie Recursie Recursieve functie roept zichzelf (direct of indirect) aan

Nadere informatie

Modelleren en Programmeren

Modelleren en Programmeren Modelleren en Programmeren Jeroen Bransen 11 december 2015 Ingebouwde datastructuren Meer boomstructuren Access specifiers Gebruikersinvoer Codestijl Packages SAT-solver Ingebouwde datastructuren Ingebouwde

Nadere informatie

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

Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 7 november 2014, uur Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 7 november 2014, 8.30-10.30 uur Schrijf op elk ingeleverd blad je naam. Schrijf op het eerste blad ook je studentnummer en het aantal ingeleverde

Nadere informatie

Programmeren in C ++ les 4

Programmeren in C ++ les 4 Elektrotechniek/Embedded Systems engineering inf2d Programmeren in C ++ les 4 cursus 2010-2011 ir drs E.J Boks Les 4 Voortzetting van C ++ verschillen met C Statische klassevariabelen Constante klassevariabelen

Nadere informatie

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

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 Uitwerking Tweede deeltentamen Mobiel programmeren - versie 1 Vrijdag 1 februari 2019, 11.00 13.00 uur Voor de meerkeuzevragen hebben we verschillende versies. Dit zijn de juiste antwoorden per versie.

Nadere informatie

Datastructuren Werkcollege Intro

Datastructuren Werkcollege Intro Bart Hijmans, Universiteit Leiden. Universiteit Leiden The Netherlands Focus 1 19 ˆ Ervaring in gebruik en implementatie van datastructuren ˆ Kennis van mogelijkheden ˆ Programmeren voor andere programmeurs

Nadere informatie

Inhoud leereenheid 2. Overerving (1) Introductie 59. Leerkern 60. Samenvatting 88. Zelftoets 90. Terugkoppeling 94

Inhoud leereenheid 2. Overerving (1) Introductie 59. Leerkern 60. Samenvatting 88. Zelftoets 90. Terugkoppeling 94 Inhoud leereenheid 2 Overerving (1) Introductie 59 Leerkern 60 1 Specialisatie en generalisatie 60 2 Functionaliteit aan een klasse toevoegen 62 2.1 Toegangsspecificaties 63 2.2 Definitie van subklassen

Nadere informatie

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

Modeleren. Modelleren. Together UML. Waarvan maken we een model? overzicht les 14 t/m 18. ControlCenter 6.2 Modelleren Werkelijkheid Modelleren Modeleren Waarvan maken we een model?!analyse " Maak een model van de te automatiseren werkelijkheid of van het op te lossen probleem! Domeinkennis = structuur! Functionele

Nadere informatie

Tentamen Objectgeorienteerd Programmeren TI februari Afdeling ST Faculteit EWI TU Delft

Tentamen Objectgeorienteerd Programmeren TI februari Afdeling ST Faculteit EWI TU Delft I ' Tentamen Objectgeorienteerd Programmeren TI 1200 1 februari 2012 9.00-12.00 Afdeling ST Faculteit EWI TU Delft Bij dit tentamen mag je geen gebruik maken van hulpmiddelen zoals boek of slides. Dit

Nadere informatie

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

Java spiekbrief. Commentaar. Definitie van een methode. Types. Variabelendeclaratie. Definitie van een klasse. Namen. Definitie van een veld Java spiekbrief Commentaar Dient enkel voor de menselijke lezer. // tot het einde van de lijn /* Dit type commentaar kan gerust meerdere lijnen beslaan. */ /** En deze speciale vorm wordt gebruikt voor

Nadere informatie

NAAM: Programmeren 1 Examen 29/08/2012

NAAM: Programmeren 1 Examen 29/08/2012 Programmeren 29 augustus 202 Prof. T. Schrijvers Instructies Schrijf al je antwoorden op deze vragenbladen (op de plaats die daarvoor is voorzien). Geef ook je kladbladen af. Bij heel wat vragen moet je

Nadere informatie

Lessen Java: Reeks pag. 1

Lessen Java: Reeks pag. 1 Lessen Java: Reeks 2 1-3-2016 pag. 1 Primitieve types type grootte waardes byte 8 bits 128, 127 short 16 bits 32768, 32767 int 32 bits 2 31, 2 31 1 long 64 bits 2 63, 2 63 1 type grootte waardes float

Nadere informatie

Inhoud leereenheid 7c. JavaScript: Objecten en functies. Introductie 59. Leerkern 60. Samenvatting 82. Opdrachten 83. Zelftoets 89.

Inhoud leereenheid 7c. JavaScript: Objecten en functies. Introductie 59. Leerkern 60. Samenvatting 82. Opdrachten 83. Zelftoets 89. Inhoud leereenheid 7c JavaScript: Objecten en functies Introductie 59 Leerkern 60 1 Functies 60 1.1 Syntax - samenvatting 60 1.2 Functies definiëren 61 1.3 Functie als parameter (facultatief) 64 1.4 Functie

Nadere informatie

Modelleren en Programmeren

Modelleren en Programmeren Modelleren en Programmeren Jeroen Bransen 25 november 2015 Herhaling Meer herhaling Recursie Mutuele recursie Objecten Herhaling Fibonacci class Fibonacci { public static void fibonaccitot(int bovengrens)

Nadere informatie

Opdracht 7a. Applicatiebouw 2014/2015

Opdracht 7a. Applicatiebouw 2014/2015 Applicatiebouw 2014/2015 Opdracht 7a Inhoud Applicatiebouw op dag 7 College In het college wordt oa. overerving behandeld, waarmee je uit een bestaande klasse een nieuwe andere klasse kan maken. Ook zijn

Nadere informatie

Stacks and queues. Hoofdstuk 6

Stacks and queues. Hoofdstuk 6 Hoofdstuk 6 Stacks and queues I N T R O D U C T I E In dit hoofdstuk worden drie datastructuren stack, queue en deque behandeld. Om deze datastructuren te implementeren, worden onder andere arrays en linked

Nadere informatie

Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 6 november 2015, uur

Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 6 november 2015, uur Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 6 november 2015, 11.00-13.00 uur Schrijf op elk ingeleverd blad je naam. Schrijf op het eerste blad ook je studentnummer en het aantal ingeleverde

Nadere informatie

Objectgeoriënteerd programmeren in Java 1

Objectgeoriënteerd programmeren in Java 1 Objectgeoriënteerd programmeren in Java 1 CPP Javaprogrammeur Bijeenkomst 3 Leereenheden 7, 8, 9 De Java API Java bevat een grote bibliotheek standaardklassen: de Java API Voorbeelden java.lang basisklassen

Nadere informatie

Introductie in C++ Jan van Rijn. September 2013

Introductie in C++ Jan van Rijn. September 2013 Introductie in C++ Jan van Rijn September 2013 Inhoud Classes Overerving Const correctness Standard C++ library Templates Classes Voordelen van classes: Modelleren Modulariteit Informatie afschermen Makkelijk(er)

Nadere informatie

SYNTRA-WEST. Cursus OOP. Deel

SYNTRA-WEST. Cursus OOP. Deel SYNTRA-WEST Cursus OOP Deel Syntra-West voorheen VORMINGSINSTITUUT VOOR KMO Syntra-West Doorniksesteenweg 220 8500 Kortrijk Tel. 056/26.02.00 Fax 056/22.81.07 i Inhoudsopgave SYNTRA-WEST... 0 CURSUS OOP...

Nadere informatie

X. Grafische elementen

X. Grafische elementen X. Grafische elementen Om u te helpen bij grafische voorstellingen heeft java een aantal grafische afbeeldingen die u kunt gebruiken. Meestal worden zij in de methode paint(graphics g) geplaatst. Zij moeten

Nadere informatie

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

APPLICATIEBOUW 3E COLLEGE: OBJECT GEORIËNTEERD PROGRAMMEREN, METHODEN, PARAMETERS, SCOPE VAN VARIABELEN. Onderdeel van SmartProducts APPLICATIEBOUW 3E COLLEGE: OBJECT GEORIËNTEERD PROGRAMMEREN, METHODEN, PARAMETERS, SCOPE VAN VARIABELEN Onderdeel van SmartProducts INHOUD COLLEGE 3 Scope van variabelen {3.9} Class ontwerpen en maken,

Nadere informatie

Tentamen Inleiding Programmeren in Java

Tentamen Inleiding Programmeren in Java Tentamen Inleiding Programmeren in Java Vakcode: 2lI0L7 Datum: 4 februari 2005 Tijd: 13.30-17.00 uur Algemeen: Dit tentamen bestaat uit 4 opgaven, waarvoor in totaal 100 punten verdiend kunnen worden.

Nadere informatie

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

HOOFDSTUK 3. Imperatief programmeren. 3.1 Stapsgewijs programmeren. 3.2 If Then Else. Module 4 Programmeren HOOFDSTUK 3 3.1 Stapsgewijs programmeren De programmeertalen die tot nu toe genoemd zijn, zijn imperatieve of procedurele programmeertalen. is het stapsgewijs in code omschrijven wat een programma moet

Nadere informatie

Programmeren in Java 3

Programmeren in Java 3 2 september 2007 voor deeltijdstudenten Kop van Zuid Rotterdam, 3 juni 2007 Even voorstellen Naam: Wessel Oele(31) Docent bij opleiding technische informatica Kamer: I210 (tweede verdieping, links de gang

Nadere informatie

In BlueJ. Doe onderstaande met muis/menu s:

In BlueJ. Doe onderstaande met muis/menu s: In BlueJ Doe onderstaande met muis/menu s: Download en unzip het bestand sklok-run.zip en open het in BlueJ Maak een Schaakklok-object Voer herstart() uit voor dit object Vraag de resterende tijd op voor

Nadere informatie

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

Java spiekbrief. Commentaar. Definitie van een methode. Types. Variabelendeclaratie. Definitie van een klasse. Namen. Definitie van een veld Java spiekbrief Commentaar Dient enkel voor de menselijke lezer. // tot het einde van de lijn /* Dit type commentaar kan gerust meerdere lijnen beslaan. */ /** En deze speciale vorm wordt gebruikt voor

Nadere informatie

Ontwerp van Informatiesystemen

Ontwerp van Informatiesystemen 1ste bach HIB Ontwerp van Informatiesystemen Prof. Verelst Q www.quickprinter.be uickprinter Koningstraat 13 2000 Antwerpen 112 2,50 Online samenvattingen kopen via www.quickprintershop.be Table of Contents

Nadere informatie

Objectgeoriënteerd Programmeren: WPO 2a

Objectgeoriënteerd Programmeren: WPO 2a Objectgeoriënteerd Programmeren: WPO 2a 1. Inhoud Eenvoudige (enkelvoudige) overerving, override, ToString(), base, private, public, protected, virtual 2. Inleiding 2.1 Overerving In het voorgaande WPO

Nadere informatie

Tentamen Imperatief Programmeren

Tentamen Imperatief Programmeren Tentamen Imperatief Programmeren Maandag 22 oktober 2001 Toelichting Dit is een open boek tentamen, d.w.z. het cursusboek mag gebruikt worden. N.B.: Het tentamen is individueel: voor het maken van de opgaven

Nadere informatie

Modelleren en Programmeren

Modelleren en Programmeren Modelleren en Programmeren Jeroen Bransen 13 december 2013 Terugblik Fibonacci public class Fibonacci { public static void main(string[] args) { // Print het vijfde Fibonaccigetal System.out.println(fib(5));

Nadere informatie

eerste voorbeelden in Java

eerste voorbeelden in Java Beginselen van programmeren 2 eerste voorbeelden in Java vereisten: een editor: om programma in te tikken en te bewaren een Java compiler: zet ingetikte (bron-) programma om naar byte-code een Java Virtuele

Nadere informatie

Objectgericht programmeren 1

Objectgericht programmeren 1 KU Leuven Campus De Nayer Industrieel ingenieur 3Ba Elektronica-ICT Objectgericht programmeren 1 Academiejaar 2014-15 Lesgever: J. Vennekens Cursustekst ism. H. Crauwels II Inhoudsopgave 1 Inleiding 1

Nadere informatie

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

Tentamen Inleiding Programmeren (IN1608WI), duur van de toets 2 uur Technische Universiteit Delft, Faculteit EWI, Afdeling 2. Tentamen Inleiding Programmeren (IN1608WI), duur van de toets 2 uur Technische Universiteit Delft, Faculteit EWI, Afdeling 2. Gesloten boek examen: er mag geen gebruik worden gemaakt van het studieboek.

Nadere informatie

Zo vind u hierin de volgende documentatie over de klasse Applet: +----java.awt.panel. +----java.applet.applet

Zo vind u hierin de volgende documentatie over de klasse Applet: +----java.awt.panel. +----java.applet.applet VII. De Java-klassen A. Package Het mooie aan Java is de programmeur een hele serie van klassen en afgeleide klassen geleverd worden, die de programmeur naar behoefte kan gebruiken. De basisklasse van

Nadere informatie

[15] Variabelen in functies (of: een woordje over scope)

[15] Variabelen in functies (of: een woordje over scope) [15] Variabelen in functies (of: een woordje over scope) In de vorige leerfiche hebben we geleerd over functies. We leerden dat functies parameters hebben en dat ze return-waarden kunnen teruggeven aan

Nadere informatie

Modulewijzer tirprog02/infprg01, programmeren in Java 2

Modulewijzer tirprog02/infprg01, programmeren in Java 2 Modulewijzer tirprog02/infprg01, programmeren in Java 2 W. Oele 17 november 2009 1 Inhoudsopgave 1 Inleiding 3 2 Studiehouding 3 3 Voorkennis 4 4 Inhoud van deze module 5 5 Leermiddelen 5 6 Theorie en

Nadere informatie

Modelleren en Programmeren

Modelleren en Programmeren Modelleren en Programmeren Jeroen Bransen 13 november 2015 Expressies Functies Ingebouwde functies Variabelenbereik Inleveropgave 1 Terugblik Programma is een lijst van opdrachten Terugblik Programma is

Nadere informatie

Ingebouwde klassen & methodes

Ingebouwde klassen & methodes Ingebouwde klassen & methodes Statische methodes Methodes die bij een klasse horen ipv. bij een object public class Docent { public static Docent departementshoofd() { return new Docent("Jan Ivens"); private

Nadere informatie

TENTAMEN Programmeren 1 VOORBEELDUITWERKING

TENTAMEN Programmeren 1 VOORBEELDUITWERKING TENTAMEN Programmeren 1 vakcode: 213500 datum: 28 november 2002 tijd: 13:30 17:00 uur VOORBEELDUITWERKING Algemeen Bij dit tentamen mag gebruik worden gemaakt van het boek van Niño/Hosch, en van de handleiding

Nadere informatie