Info-books. Toegepaste Informatica. Deel 37: Programmeren in Java HO37. K. Behiels - J. Gils

Maat: px
Weergave met pagina beginnen:

Download "Info-books. Toegepaste Informatica. Deel 37: Programmeren in Java HO37. K. Behiels - J. Gils"

Transcriptie

1 Info-books HO37 Toegepaste Informatica Deel 37: Programmeren in Java K. Behiels - J. Gils

2 Hoofdstuk 3 Klassen 3.1 Klassen, variabelen en methoden Wat is een klasse? Een struct van ANSI C is een goede manier om een reeks van gerelateerde variabelen te groeperen. Veronderstel dat je informatie over films wenst te verwerken. In zo n struct kun je echter alleen maar variabelen opnemen. Objectgericht programmeren betekent dat je niet alleen de gegevens, maar ook de functies die je op die gegevens gaat toepassen, in één geheel moet groeperen. Daarvoor bestaat in Java de klasse (class). In tegenstelling tot een struct van ANSI C bevat een klasse naast variabelen (variables --- ook attributes, fields of data members genoemd) ook methoden (methods). Dit zijn de functies die je op de variabelen kunt toepassen. Methoden onderscheiden zich van variabelen door het gebruik van ronde haakjes. Je gebruikt ze op dezelfde manier als de variabelen. Een voorbeeld: /** Voorbeeld klasse Film.java /02/2001 public class Film { private String mtitel; private int mjaar; private String macteur; private String mactrice; public String gettitel() { return mtitel; public int getjaar() { return mjaar; public String getacteur() { return macteur; public String getactrice() { return mactrice; public void vulgegevensin(string titel, int jaar, String acteur, String actrice) { mtitel = titel; mjaar = jaar; macteur = acteur; mactrice = actrice; K. Behiels - J. Gils Java 39

3 De gereserveerde woorden public en private regelen de toegankelijkheid van de variabelen en de methoden. Het gereserveerde woord public wijst op algemene toegankelijkheid, het gereserveerde woord private duidt aan dat je gegevens alleen onrechtstreeks kunt benaderen. Een van de bedoelingen van objectgeoriënteerd werken is het inkapselen van de gegevens. Daarom moet je de variabelen altijd private maken Objectvariabelen De klasse zelf is slechts een beschrijving van het datatype. Om variabelen van dit type te kunnen gebruiken moet je zogenaamde objecten van dit type declareren. Een object kun je beschouwen als een variabele van een klasse-type. Objecten in Java zijn altijd dynamisch. Voor je ze kunt gebruiken moet je ze eerst met behulp van de new-operator creëren. Objectvariabelen zijn referenties naar objecten, min of meer te vergelijken met pointervariabelen uit ANSI C (maar dan zonder de nadelen ervan). Film movie; Op dit moment is er alleen een declaratie van het movie-object gedaan. Er bestaat nog geen object! Om een object te creëren moet je het volgende schrijven: movie = new Film(); Meestal zul je beide voorgaande opdrachten tot één opdracht combineren: Film movie = new Film(); Je kunt ook objecten aan mekaar toekennen: Film favoriet = movie; In dit geval is er geen extra geheugenruimte gecreëerd, favoriet en movie verwijzen nu naar dezelfde geheugenruimte! Je kunt een objectvariabele ook expliciet aan null gelijkstellen. Hiermee duid je aan dat de variabele nergens naar verwijst. Film favoriet = null; Werken met objecten Om een uitvoerbaar programma te verkrijgen moet je net zoals in ANSI C een mainfunctie voorzien. In Java kan deze main echter niet op zichzelf bestaan, ze moet altijd deel uitmaken van een klasse. De notatie die je bij objecten gebruikt is dezelfde als bij een struct in ANSI C. In het volgende voorbeeld maak je tweemaal een object van de klasse Film, vul je de gegevens in en druk je daarna de inhoud van het object af: 40 Java K. Behiels J. Gils

4 /** Voorbeeld klasse DemoFilm.java /02/2001 public class DemoFilm { public static void main(string[] args) { Film silence = new Film(); silence.vulgegevensin("the silence of the lambs", 1991, "Anthony Hopkins", "Jodie Foster"); System.out.println("titel: " + silence.gettitel()); System.out.println("jaar: " + silence.getjaar()); System.out.println("acteur: " + silence.getacteur()); System.out.println("actrice: " + silence.getactrice()); System.out.println(); Film sleepless = new Film(); sleepless.vulgegevensin("sleepless in Seattle", 1993, "Tom Hanks", "Meg Ryan"); System.out.println("titel: " + sleepless.gettitel()); System.out.println("jaar: " + sleepless.getjaar()); System.out.println("acteur: " + sleepless.getacteur()); System.out.println("actrice: " + sleepless.getactrice()); System.out.println(); De afdruk van dit programma is: titel: The silence of the lambs jaar: 1991 acteur: Anthony Hopkins actrice: Jodie Foster titel: Sleepless in Seattle jaar: 1993 acteur: Tom Hanks actrice: Meg Ryan? Parameteroverdracht In ANSI C heb je geen keuze, in alle gevallen wordt de waarde van de parameter doorgegeven (call by value). In Java is dit ook zo. Bij primitieve datatypes wordt de waarde doorgegeven, bij objecten en tabellen als parameter is de doorgegeven waarde een verwijzing naar het object of de tabel. Dit kan op het eerste gezicht tot vervelende situaties leiden, hoe schrijf je bijvoorbeeld een methode om twee getallen te verwisselen? K. Behiels - J. Gils Java 41

5 Eerst zoals in ANSI C: public class Poging1 { public static void main(string[] args) { long een = 100; long twee = 200; System.out.println("een: " + een + " twee: " + twee); verwissel(een, twee); System.out.println("een: " + een + " twee: " + twee); public static void verwissel(long x, long y) { long hulp = x; x = y; y = hulp; De afdruk is: een: 100 twee: 200 een: 100 twee: 200 Dit lukt niet. Lokaal in verwissel worden de getallen wel verwisseld, in de mainmethode wijzigt er niets. De enige manier is ervoor te zorgen dat er een object als parameter wordt doorgegeven. We maken eerst afzonderlijke klasse Getallenpaar (in feite de vervanging van de struct van ANSI C) en gebruiken ze in de programmaklasse Poging2: class GetallenPaar { public long een = 100; public long twee = 200; public class Poging2 { public static void main(string[] args) { GetallenPaar gp = new GetallenPaar(); System.out.println("een: " + gp.een + " twee: " + gp.twee); verwissel(gp); System.out.println("een: " + gp.een + " twee: " + gp.twee); public static void verwissel(getallenpaar p) { long hulp = p.een; p.een = p.twee; p.twee = hulp; De afdruk is: een: 100 twee: 200 een: 200 twee: Java K. Behiels J. Gils

6 Nu roep je de methode verwissel met een object als argument op. De compiler past dan schijnbaar call by reference toe. De methode verwissel wordt alleen voor Getallenpaar objecten gebruikt, daarom is het beter ze in de klasse zelf op te nemen. Zo kom je tot de volgende, verbeterde oplossing: public class GetallenPaar { private long meen = 100; private long mtwee = 200; public long geteen() { return meen; public long gettwee() { return mtwee; public void seteen(long een) { meen = een; public void settwee(long twee) { mtwee = twee; De bovenstaande klasse pas je toe in de uitvoerbare klasse Poging3: public class Poging3 { public static void main(string[] args) { GetallenPaar gp = new GetallenPaar(); System.out.println("een: " + gp.geteen() + " twee: " + gp.gettwee()); gp.verwissel(); System.out.println("een: " + gp.geteen() + " twee: " + gp.gettwee()); Ook nu is de afdruk: een: 100 twee: 200 een: 200 twee: 100 Een alternatief is een tabel met één element als argument te gebruiken. Tabellen worden immers altijd schijnbaar via call by reference doorgegeven. Zie de klasse Poging4: public class Poging4 { public static void main(string[] args) { long een = 100; long twee = 200; System.out.println("een: " + een + " twee: " + twee); long[] eenobj = new long[1]; eenobj[0] = een; long[] tweeobj = new long[1]; tweeobj[0] = twee; K. Behiels - J. Gils Java 43

7 verwissel(eenobj, tweeobj); een = eenobj[0]; twee = tweeobj[0]; System.out.println("een: " + een + " twee: " + twee); public static void verwissel(long[] eenobject, long[] tweeobject) { long temp = eenobject[0]; eenobject[0] = tweeobject[0]; tweeobject[0] = temp; 3.2 Specifieke methoden Objecten creëren Als je een object van een bepaalde klasse maakt wordt altijd een speciale methode uitgevoerd, de constructor. Indien je zelf geen constructor in je klasse voorziet zal de compiler een standaardconstructor die niets doet voorzien. De bedoeling van de constructor is, naast de creatie van de objecten, ervoor te zorgen dat de variabelen van de juiste beginwaarden worden voorzien. Door zelf een constructor te schrijven kun je fouten die het gevolg zijn van foutieve beginwaarden vermijden. Als je zelf geen beginwaarden geeft vult Java in elk geval nulwaarden in. De constructor heeft twee eigenschappen waardoor hij van de gewone methoden verschilt:? een constructor heeft altijd dezelfde naam als de klasse waartoe hij behoort;? een constructor heeft nooit een return-waarde, je mag zelfs geen void vermelden. We herschrijven het voorbeeld met de klasse Film als volgt: /** Voorbeeld klasse Film.java /02/2001 public class Film { private String mtitel; private int mjaar; private String macteur; private String mactrice; 44 Java K. Behiels J. Gils

8 public Film(String titel, int jaar, String acteur, String actrice) { mtitel = titel; mjaar = jaar; macteur = acteur; mactrice = actrice; public String gettitel() { return mtitel; public int getjaar() { return mjaar; public String getacteur() { return macteur; public String getactrice() { return mactrice; In het volgende programma gebruiken we de klasse Film: /** Voorbeeld klasse DemoFilm.java /02/2001 public class DemoFilm { public static void main(string[] args) { Film silence = new Film("The silence of the lambs", 1991,"Anthony Hopkins", "Jodie Foster"); System.out.println("titel: " + silence.gettitel()); System.out.println("jaar: " + silence.getjaar()); System.out.println("acteur: " + silence.getacteur()); System.out.println("actrice: " + silence.getactrice()); System.out.println(); Film sleepless = new Film("Sleepless in Seattle", 1993, "Tom Hanks", "Meg Ryan"); System.out.println("titel: " + sleepless.gettitel()); System.out.println("jaar: " + sleepless.getjaar()); System.out.println("acteur: " + sleepless.getacteur()); System.out.println("actrice: " + sleepless.getactrice()); System.out.println(); De afdruk van dit programma is: titel: The silence of the lambs jaar: 1991 acteur: Anthony Hopkins K. Behiels - J. Gils Java 45

9 actrice: Jodie Foster titel: Sleepless in Seattle jaar: 1993 acteur: Tom Hanks actrice: Meg Ryan Vanaf het moment dat je zelf een constructor schrijft zal de compiler geen standaard constructor meer voorzien. Wil je dit toch dan moet je hem expliciet in de klasse opnemen. Je mag verschillende versies van de constructor schrijven op voorwaarde dat de parameters in aantal, volgorde of datatype verschillen. Deze manier van werken heet overloading. Bekijk in dit verband het volgende voorbeeld: /** Voorbeeld klasse Film.java /02/2001 public class Film { private String mtitel; private int mjaar; private String macteur; private String mactrice; public Film() { mtitel = ""; macteur = ""; mactrice = ""; public Film(String titel, int jaar, String acteur, String actrice) { mtitel = titel; mjaar = jaar; macteur = acteur; mactrice = actrice; public String gettitel() { return mtitel; public int getjaar() { return mjaar; public String getacteur() { return macteur; public String getactrice() { return mactrice; 46 Java K. Behiels J. Gils

10 Een programma ter demonstratie: /** Voorbeeld klasse DemoFilm.java /02/2001 public class DemoFilm { public static void main(string[] args) { Film silence = new Film("The silence of the lambs", 1991, "Anthony Hopkins", "Jodie Foster"); System.out.println("titel: " + silence.gettitel()); System.out.println("jaar: " + silence.getjaar()); System.out.println("acteur: " + silence.getacteur()); System.out.println("actrice: " + silence.getactrice()); System.out.println(); Film sleepless = new Film("Sleepless in Seattle", 1993, "Tom Hanks", "Meg Ryan"); System.out.println("titel: " + sleepless.gettitel()); System.out.println("jaar: " + sleepless.getjaar()); System.out.println("acteur: " + sleepless.getacteur()); System.out.println("actrice: " + sleepless.getactrice()); System.out.println(); Film leeg = new Film(); System.out.println("titel: " + leeg.gettitel()); System.out.println("jaar: " + leeg.getjaar()); System.out.println("acteur: " + leeg.getacteur()); System.out.println("actrice: " + leeg.getactrice()); System.out.println(); De afdruk van dit programma is: titel: The silence of the lambs jaar: 1991 acteur: Anthony Hopkins actrice: Jodie Foster titel: Sleepless in Seattle jaar: 1993 acteur: Tom Hanks actrice: Meg Ryan titel: jaar: 0 acteur: actrice: K. Behiels - J. Gils Java 47

11 3.2.2 Objecten verwijderen In Java is een zogenaamde destructor overbodig: er wordt met een garbage collection gewerkt. De Java Virtuele Machine zorgt zelf voor het terug vrijgeven van het dynamisch geheugen wanneer het object niet meer toegankelijk is. Dit is een proces dat op de achtergrond draait en een lage prioriteit heeft. Normaal gesproken wordt er geen garbage collection uitgevoerd tot het programma ergens op wacht of als er extra geheugen nodig is. Bij de uitvoering van de garbage collection wordt eerst de finalize-methode opgeroepen. Je kunt, zoals in het onderstaande voorbeeld, zelf een finalize-methode in je klasse opnemen. Het uitvoeren van deze methode is niet altijd gegarandeerd: de garbage collection treedt dikwijls pas in werking bij het beëindigen van het programma. Via de methode System.gc kun je ervoor zorgen dat de finalize-methode voor alle objecten wordt uitgevoerd. We demonstreren dit aan de hand van het volgende theoretische voorbeeld: /** Voorbeeld klasse Demo.java /02/2001 import java.io.ioexception; import java.io.file; import java.io.filewriter; import java.io.printwriter; public class Demo { private static boolean msgcrun = false; private static boolean msstop = false; private static int msgemaakt = 0; private static int msfinalized = 0; private String mtekst; private int mnr = 0; public Demo(String bericht) { mnr = ++msgemaakt; mtekst = bericht; if (msgemaakt == 100) { System.out.println("nr 100 gemaakt"); public static boolean getstop() { return msstop; public static int getgemaakt() { return msgemaakt; public static int getfinalized() { return msfinalized; 48 Java K. Behiels J. Gils

12 protected void finalize() { if (!msgcrun) { msgcrun = true; System.out.println("Begin met finalize" + " na creatie van " + msgemaakt + " objecten."); if (mnr == 100) { System.out.println("Finalize voor object" + " nr 100"); System.out.println("Zet creatieswitch stop" + " op true"); msstop = true; msfinalized++; if (msfinalized >= msgemaakt) { System.out.println("Finalize voor alle " + msfinalized + " objecten"); In het programma maken we Demo-objecten tot de finalize-methode in actie treedt: /** Voorbeeld klasse TestDemo.java /02/2001 import java.io.ioexception; public class TestDemo { public static void main(string[] args) throws IOException { while (!Demo.getStop()) { new Demo("Test finalize!"); System.out.println("Totaal gemaakt: " + Demo.getGemaakt() + " objecten."); System.out.println("Totaal finalized: " + Demo.getFinalized() + " objecten."); System.gc(); System.out.println("Einde!"); Zonder de System.gc-methode kregen we het volgende resultaat (niet voor alle objecten werd de finalize-methode uitgevoerd): nr 100 gemaakt Begin met finalize na creatie van 7396 objecten. Finalize voor object nr 100 Zet creatieswitch stop op true Totaal gemaakt: objecten. Totaal finalized: 7396 objecten. Einde! Met de System.gc-methode werd voor alle objecten de finalize-methode uitgevoerd: K. Behiels - J. Gils Java 49

13 public static boolean iseuromunt(string munt) { for (int i = 0; i < munten.length; i++) { if (munten[i].getmuntcode().equalsignorecase( munt)) return true; return false; Een demonstratie van het gebruik van de EuroConversie-klasse vind je hierna: /** Voorbeeld klasse DemoEuro.java /02/2001 import java.io.bufferedreader; import java.io.inputstreamreader; import java.io.ioexception; public class DemoEuro { public static void main(string[] args) throws IOException { BufferedReader is = new BufferedReader( new InputStreamReader(System.in)); System.out.print("Geef het bedrag: "); double bedrag = Double.parseDouble(is.readLine()); System.out.print("Geef de euromunt (code): "); String munt = is.readline().touppercase(); System.out.println("\n" + bedrag + " " + munt + " = " + EuroConversie.naarEuro(munt, bedrag) + " "); System.out.println(bedrag + " = " + EuroConversie.naarLokaleMunt(munt, bedrag) + " " + munt); Een mogelijke uitvoer van dit programma is: Geef het bedrag: Geef de euromunt (code): BEF BEF = = E7 BEF In dit programma gebeurt nog geen controle op foutieve invoer, om praktisch bruikbaar te zijn moet je nog exception handling toevoegen (zie later). K. Behiels - J. Gils Java 69

14 3.3.3 Klassen in klassen In Java kun je ook een klasse binnen een andere klasse definiëren. Dergelijke klassen noem je inner classes. Je kunt ze onderverdelen in 4 soorten:? Een static member-klasse is een static member van een andere klasse. De klasse gedraagt zich als een gewone klasse. Ze heeft ook toegang tot alle static members van eventuele andere static member-klassen, inclusief die van de klasse waarin ze gedefinieerd is. De naam van de static member-klassen moet verschillen van die van de omhullende klasse.? Een member-klasse is te vergelijken met een instance-variabele of -methode. Ze maakt altijd deel uit van een object van de klasse waarbinnen ze gedefinieerd is en ze heeft toegang tot al de bijhorende variabelen en methoden.? Een local klasse is gedefinieerd binnen een blok Java-code. Net zoals een lokale variabele is de klasse alleen geldig binnen dat blok.? Een anonymous klasse is een soort van lokale klasse zonder naam. Ze combineert de syntaxis voor een klassedefinitie met de syntaxis voor de objectdeclaratie.? Static member-klasse Als voorbeeld wordt het voorbeeld van de euroconversie hernomen. Je kunt de klasse EuroMunt als static member-klasse in de klasse Euroconversie opnemen, het voordeel hiervan is dat je nu geen getters meer nodig hebt. /** Voorbeeld klasse EuroConversie.java (static inner class) /02/2001 public class EuroConversie { private static class EuroMunt { private double momrekeningskoers; private String mmuntcode; private String mmunt; public EuroMunt(double omrekeningskoers, String muntcode, String munt) { momrekeningskoers = omrekeningskoers; mmuntcode = muntcode; mmunt = munt; private static final EuroMunt munten[] = { new EuroMunt( , "ATS", "Oostenrijkse schilling"), new EuroMunt( , "BEF", "Belgische frank"), new EuroMunt( , "DEM", "Duitse mark"), new EuroMunt( , "ESP", "Spaanse peseta"), new EuroMunt( , "FIM", "Finse mark"), new EuroMunt( , "FRF", "Franse frank"), new EuroMunt( , "GRD", "Griekse drachme"), new EuroMunt( , "IEP", "Iers pond"), new EuroMunt( , "ITL", "Italiaanse lire"), 70 Java K. Behiels J. Gils

15 ; new EuroMunt( , "LUF", "Luxemburgse frank"), new EuroMunt( , "NLG", "Nederlandse gulden"), new EuroMunt( , "PTE", "Portugese escudo") private static int euromuntindex(string munt) { for (int i = 0; i < munten.length; i++) { if (munten[i].mmuntcode.equalsignorecase(munt)) return i; return -1; public static double naareuro(string munt, double bedrag) { return bedrag / munten[euromuntindex(munt)].momrekeningskoers; public static double naarlokalemunt(string munt, double bedrag) { return bedrag * munten[euromuntindex(munt)].momrekeningskoers; public static boolean iseuromunt(string munt) { for (int i = 0; i < munten.length; i++) { if (munten[i].mmuntcode.equalsignorecase(munt)) return true; return false; De afzonderlijke klasse EuroMunt vervalt nu. In de klasse DemoEuro hoef je niets te wijzigen.? Member-klasse Member-klassen kunnen niet dezelfde naam hebben als de omhullende klasse of de package waartoe ze behoren. Ze kunnen geen static members (= variabelen, methoden of klassen) bevatten, wel constanten (= zowel static als final). De objecten ervan hebben toegang tot alle variabelen en methoden van de klasse waarin ze zijn vervat. Als voorbeeld hernemen we de laatste versie van het Film-voorbeeld. De afzonderlijke klasse Acteur vervalt. Zij wordt nu binnen de klasse Film gedefinieerd. In het hoofdprogramma hoef je niets te wijzigen. K. Behiels - J. Gils Java 71

16 /** Voorbeeld klasse Film.java /02/2001 public class Film { public class Acteur { private String mnaam; // overige gegevens public Acteur() { mnaam = ""; public Acteur(String naam) { mnaam = naam; public Acteur(Acteur acteur) { mnaam = acteur.mnaam; public boolean isingevuld() { return mnaam.equals("")!= true; public String getnaam() { return mnaam; private String mtitel; private int mjaar; private Acteur macteur; private Acteur mactrice; public Film(String titel, int jaar, String acteur, String actrice) { mtitel = titel; mjaar = jaar; macteur = new Acteur(acteur); mactrice = new Acteur(actrice); public Film(String titel, int jaar) { this(titel, jaar, "", ""); public Film(String titel) { this(titel, 0, "", ""); public Film() { this("", 0, "", ""); public Film(Film film) { this(film.mtitel, film.mjaar, film.getacteurnaam(), film.getactricenaam()); 72 Java K. Behiels J. Gils

17 public String gettitel() { return mtitel; public String getjaar() { if (mjaar!= 0) return (new Integer(mJaar)).toString(); else return "onbekend"; public String getacteurnaam() { if (macteur.isingevuld()) return macteur.getnaam(); else return "onbekend"; public String getactricenaam() { if (macteur.isingevuld()) return mactrice.getnaam(); else return "onbekend"; In het volgende programma maak je gebruik van de klasse Film waarin de klasse Acteur als inner class vervat zit: /** Voorbeeld klasse DemoFilm.java /02/2001 public class DemoFilm { public static void main(string[] args) { Film silence = new Film("The silence of the lambs", 1991, "Anthony Hopkins", "Jodie Foster"); System.out.println("titel: " + silence.gettitel()); System.out.println("jaar: " + silence.getjaar()); System.out.println("cast: " + silence.getacteurnaam() + " " + silence.getactricenaam() + "\n"); Film sleepless = new Film("Sleepless in Seattle", 1993); System.out.println("titel: " + sleepless.gettitel()); System.out.println("jaar: " + sleepless.getjaar()); System.out.println("cast: " + sleepless.getacteurnaam() + " " + sleepless.getactricenaam() + "\n"); Film voorkeur = new Film("The Matrix"); System.out.println("titel: " + voorkeur.gettitel()); System.out.println("jaar: " + voorkeur.getjaar()); System.out.println("cast: " + voorkeur.getacteurnaam() + " " + voorkeur.getactricenaam() + "\n"); K. Behiels - J. Gils Java 73

18 De afdruk van dit programma is zoals bij het Klasse6 voorbeeld:? Lokale klasse titel: The silence of the lambs jaar: 1991 cast: Anthony Hopkins Jodie Foster titel: Sleepless in Seattle jaar: 1993 cast: onbekend onbekend titel: The Matrix jaar: onbekend cast: onbekend onbekend Indien je een member-klasse alleen binnen één methode van de haar omvattende klasse gebruikt kun je ze in de betreffende methode als lokale klasse opnemen. Zoals bij alle member-klassen hebben de objecten van een lokale klasse toegang tot alle variabelen en methoden, ook al zijn ze private, van de klasse waarin ze gedefinieerd zijn. Daarenboven hebben ze toegang tot alle final lokale variabelen en final parameters van de lokale methode (final kun je ook toepassen op lokale variabelen en zelfs op methodeargumenten). Een lokale klasse is alleen geldig binnen het blok waarbinnen ze gedefinieerd is. Ze kan niet public, protected, private of static gedeclareerd worden. Zoals bij de member-klassen kunnen ze geen static variabelen, methoden of klassen bevatten met uitzondering van constanten die static final gedeclareerd worden. Een puur theoretisch voorbeeld: /** Voorbeeld klasse Resultaat.java /02/2001 public class Resultaat { private int maantal; private double[] mresultaten; public Resultaat() { mresultaten = new double[3]; public Resultaat(double[] resultaten) { maantal = resultaten.length; int aantal = 3; if (maantal > 3) aantal = maantal; mresultaten = new double[aantal]; for (int i = 0; i < maantal; ++i) { mresultaten[i] = resultaten[i]; 74 Java K. Behiels J. Gils

19 public String topdrie(string race) { class Tierce { private String mracenaam; public Tierce(String racenaam) { mracenaam = racenaam; public String geeftopdrie() { return mracenaam + ": " + mresultaten[0] + " " + mresultaten[1] + " " + mresultaten[2]; Tierce top = new Tierce(race); return top.geeftopdrie(); Ook hier een klein testprogrammaatje: /** Voorbeeld klasse DemoResultaat.java /02/2001 public class DemoResultaat { public static void main(string[] args) { double[] data = { 49.05, 49.61, 50.21, 50.46, ; Resultaat result = new Resultaat(data); System.out.println(result.topDrie("Kentucky Derby")); De afdruk van dit programma is: Kentucky Derby: ? Anonieme klasse Een anonieme klasse is een lokale klasse zonder naam. Ze wordt gedefinieerd en gedeclareerd in een enkelvoudige uitdrukking waarbij de new-operator wordt gebruikt. Omdat het een lokale klasse is gelden hiervoor dezelfde restricties als bij de lokale klasse. Omdat de klasse geen naam heeft kan er ook geen constructor zijn. De formele syntaxis is als volgt: new class-name ( [argument-list]) { class-body K. Behiels - J. Gils Java 75

20 ofwel: new interface-name() { class-body Wanneer gebruik je een anonieme klasse? Je mag ze uitsluitend gebruiken als de klasse uit erg weinig code bestaat, er slechts één object van nodig is en ze onmiddellijk na de definitie ervan gebruikt wordt. Een puur theoretisch voorbeeld, gebaseerd op het voorbeeld van de lokale klasse: /** Voorbeeld klasse Resultaat.java /02/2001 public class Resultaat { private int maantal; private double[] mresultaten; public Resultaat() { mresultaten = new double[3]; public Resultaat(double[] resultaten) { maantal = resultaten.length; int aantal = 3; if (maantal > 3) aantal = maantal; mresultaten = new double[aantal]; for (int i = 0; i < maantal; ++i) { mresultaten[i] = resultaten[i]; public Object topdrie() { return new Object() { private String mracenaam = "Kentucky Derby"; public String tostring() { return mracenaam + ": " + mresultaten[0] + " " + mresultaten[1] + " " + mresultaten[2]; ; // einde van return! De klasse Object kun je altijd als klassenaam gebruiken op die plaatsen waar er een nodig is. 76 Java K. Behiels J. Gils

21 Het hoofdprogramma wordt dan: /** Voorbeeld klasse DemoResultaat.java /02/2001 public class DemoResultaat { public static void main(string[] args) { double[] data = { 49.05, 49.61, 50.21, 50.46, ; Resultaat result = new Resultaat(data); System.out.println(result.topDrie()); De afdruk van dit programma is: Kentucky Derby: Anonieme klassen komen veel voor bij grafische toepassingen. In het volgende voorbeeld zie je een anonieme klasse als argument van de addwindowlistener-methode (verder zonder verklaring): /** Voorbeeld klasse DemoAnonymous.java /03/2001 import java.awt.color; import java.awt.font; import java.awt.graphics; import java.awt.event.windowadapter; import java.awt.event.windowevent; import javax.swing.jframe; public class DemoAnonymous extends JFrame { static private final int REGEL = 15; static private final int LETTER = 5; public DemoAnonymous() { setbackground(color.lightgray); setforeground(color.blue); public void paint(graphics g) { g.drawrect(2 * LETTER, 2 * REGEL, 46 * LETTER, 7 * REGEL); Font f = new Font("Helvetica", Font.ITALIC, 36); g.setfont(f); g.drawstring("java is Leuk!", 4* LETTER, 6 * REGEL); K. Behiels - J. Gils Java 77

22 public static void main(string[] args) { JFrame frame = new DemoAnonymous(); frame.settitle("demoanonymous"); frame.setsize(50 * LETTER, 10 * REGEL); frame.setvisible(true); // anonieme klasse van het type WindowsAdapter frame.addwindowlistener( new WindowAdapter() { public void windowclosing(windowevent e) { System.exit(0); ); 78 Java K. Behiels J. Gils

23 Besluit Een klasse is een raamwerk voor het maken van objecten. In een klasse neem je zowel variabelen als methoden die je op die variabelen kunt toepassen op. Een klasse kan twee soorten variabelen en methoden bevatten. Normaal horen de variabelen en methoden bij de objecten maar je kunt (met behulp van static) ook klassevariabelen en klassemethoden voorzien. Die behoren tot de klasse zelf en zijn onafhankelijk van de objecten. Objecten zijn altijd dynamisch, je moet ze met de new-operator creëren. De algemene vorm is: klassenaam objectvariabelenaam = new klassenaam(argument, argument, ); De creatie van een object gebeurt altijd via een constructor (een speciale klassemethode). Als je er zelf geen voorziet wordt een standaardconstructor uitgevoerd die niets doet. Bij de creatie van een object krijgen de variabelen automatisch nulwaarden (bij dynamische variabelen zijn dit nullpointers!). Een destructor is overbodig omdat Java met een garbage collection werkt die de objecten die niet meer nodig zijn automatisch opruimt. Om een programma te kunnen uitvoeren moet je een main-methode hebben. Ze moet altijd static zijn en deel uitmaken van een klasse. Parameteroverdracht gebeurt in Java altijd via call by reference, behalve bij de primitieve datatypen waar call by value van toepassing is. Naast variabelen van de primitieve datatypen kun je in een object ook objecten van andere klassen als variabele opnemen. Het gereserveerde woord this kun je gebruiken om naar het eigen object te verwijzen of om in een constructor een andere constructor van de eigen klasse op te roepen. Binnen een klasse kun je naast variabelen en methoden ook andere klassedefinities opnemen. Dit noemt men inner classes. Er zijn vier soorten, met name de static member, de member, de local en de anonymous inner class. Wat je moet kennen en kunnen:? een klassedefinitie uitschrijven, daarin de nodige constructors en andere methoden voorzien en er objecten van creëren;? een klasse met een main-methode schrijven om met objecten van eigen klassedefinities te werken;? de verschillen uitleggen tussen de gewone variabelen en methoden en de klasseversies ervan en ze op de juiste manier toepassen;? klassen uitschrijven waarin als variabelen niet alleen primitieve datatypen maar ook objecten voorkomen;? inner classes op een juiste manier toepassen;? de wijze van parameteroverdracht in Java begrijpen en er rekening mee houden;? op een correcte wijze van het gereserveerde woord this gebruik maken. K. Behiels - J. Gils Java 79

24 Opdrachten 1. Beantwoord de volgende vragen: 2. Bubble2 a. Welke constructor wordt bij het object leeg gebruikt in het voorbeeld Klasse03? Wat gebeurt er als je de standaard constructor weglaat? Wat is de afdruk als je de standaard constructor leeg laat? b. Naar aanleiding van het programmavoorbeeld Klasse04: bestaat er ook een standaard copy-constructor naar analogie van de standaard constructor (Java voorziet wel een clone-methode)? c. Geef aan welke van de drie gemiddelde methoden bij de verschillende oproepen in de main-methode van het voorbeeld Klasse10 (klasse DemoTierce) gebruikt worden. d. Wat gebeurt er als je in het programmavoorbeeld Klasse13 bij de uitvoering van de main-methode van de DemoEuro-klasse een foutieve muntcode ingeeft? e. Waarom staat in het voorbeeld Klasse16 de uitdrukking mresultaten = new double[3]; in de standaard constructor? Vertrek van de bubblesort opgave van hoofdstuk 2. Maak nu gebruik van twee afzonderlijke classes in twee afzonderlijke bestanden, een klasse Tabel voor de tabel en een klasse TestTabel voor de main-methode. In de klasse Tabel moet je methoden voorzien om getallen in te lezen, de getallen in de tabel van klein naar groot te sorteren en een methode om de inhoud van de tabel op het scherm te tonen. Laat de gebruiker de getallen manueel ingeven. 3. Palindroom2 Vertrek van de palindroomopgave van hoofdstuk 2. Maak nu gebruik van een afzonderlijke klasse voor een methode met de naam ispalindroom. Indien je dit nog niet gedaan hebt moet je nu ook palindroomzinnen herkennen (met andere woorden: negeer spaties en leestekens in de te onderzoeken string). Gebruik voor elke klasse een afzonderlijk.javabestand. 4. Punt Maak een klasse Punt met als variabelen mx en my (de coördinaten van een punt in een vlak). Voorzie een standaard constructor, een constructor met 2 parameters en een functie om mx en my in de vorm (x, y) op het scherm te tonen. Schrijf daarna een testprogramma waarin je een tabel reserveert met de volgende xywaarden: 1,2-2,4-0,3-2,3-1,3. In de main-methode moet je ook de coördinaten van de punten in originele volgorde op het scherm brengen. 5. Punt2 Vertrek van de klasse Punt van de vorige opgave. Maak een afzonderlijke klasse Punten waarin je een tabel van Punt-objecten opneemt. Vul de tabel met dezelfde waarden. Sorteer voor je de tabel afdrukt de punten in oplopende volgorde volgens de afstand tot de 80 Java K. Behiels J. Gils

25 oorsprong van het XY-assenstelsel. Deze afstand bereken je door met de standaardmethode Math.sqrt() de vierkantswortel uit x² + y² te trekken 6. Punt3 Vertrek van de klasse Punt van de Punt-opgave. Maak een klasse Lijnstuk als uitbreiding van de klasse Punt. Een lijnstuk is de verbinding tussen 2 punten. Zorg voor de nodige constructors. Maak gebruik van een tabel van 4 lijnstukken met de volgende coördinaten: van 1,1 naar 1,4 - van 2,1 naar 3,4 - van 2,3 naar 4,1 - van 1,4 naar 6,3. Geef een overzicht van de lijnstukken met zowel hun coördinaten als de lengte van het lijnstuk. Tracht zoveel mogelijk code te hergebruiken en gebruik ten minste één private methode. De lengte van een lijnstuk bereken je door de vierkantswortel uit de som der kwadraten van de verschillen van de beide x-waarden en de verschillen van de beide y-waarden te trekken. 7. Tabel1 Schrijf in een afzonderlijk bestand de klasse Tabel zodanig dat het onderstaande testprogramma zonder fouten wordt uitgevoerd. public class TestTabel { public static void main(string[] args) { Tabel dummy = new Tabel(); dummy.toontabel(); String[] stringtabel = {"een", "twee", "drie"; Tabel demo = new Tabel(stringTabel); demo.voegelementtoe("vier"); System.out.print("tabel een (" + demo.aantalelementen() + " strings): "); demo.toontabel(); Tabel test = demo.kopieertabel(); /* Tabel test = demo; // <--- is foutief! test.wijzigelement(2, "vier"); // index 2 is het derde element! System.out.println("\nNa wijzigen tabel twee:\n"); System.out.print("tabel een: "); demo.toontabel(); System.out.print("tabel twee: "); test.toontabel(); Verwachte uitvoer: tabel een (4 strings): een twee drie vier Na wijzigen tabel1: tabel een: een twee drie vier tabel twee: een twee vier vier K. Behiels - J. Gils Java 81

26 8. Tabel2 Vervolledig de onderstaande klasse: public class Tabel { private int[] mtabel; /** default constructor public Tabel() { /** In de onderstaande constructor wordt een tabel * voor 'aantal' int's aangemaakt. public Tabel(int aantal) { /** In onderstaande constructor wordt de tabel mtabel * gevuld met de waarden van de argument tabel. public Tabel(int[] tabel) { /** In de methode sommeer worden de getallen van tabel a * en tabel b element per element samengeteld, * het resultaat komt in de 'this'-tabel. public void sommeer(tabel a, Tabel b) { /** In de methode concat worden de elementen van * de tabelen a en b achter mekaar in de 'this'-tabel * samengevoegd. public void concat(tabel a, Tabel b) { /** In de methode merge worden de elementen van de * tabelen a en b in oplopende volgorde in de * 'this'-tabel geplaatst. public void merge(tabel a, Tabel b) { /** In de methode toongetallen wordt de inhoud van de * tabel op het scherm gebracht. public void toongetallen() { 82 Java K. Behiels J. Gils

27 Test de uitgewerkte klasse met het volgende testprogramma uit: public class TestTabel { public static void main(string[] args) { int[] tab1 = {1, 4, 9, 16, 25, 36; int[] tab2 = {2, 4, 6, 8, 10, 12, 14, 16; Tabel v1 = new Tabel(tab1); Tabel v2 = new Tabel(tab2); Tabel res = new Tabel(); v1.toongetallen(); v2.toongetallen(); res.sommeer(v1, v2); res.toongetallen(); res.sommeer(v2, v1); res.toongetallen(); res.concat(v1, v2); res.toongetallen(); res.concat(v2, v1); res.toongetallen(); res.merge(v1, v2); res.toongetallen(); De verwachte uitvoer is: K. Behiels - J. Gils Java 83

28 Hoofdstuk 4 Overerving 4.1 Inleiding In programmeertalen betekent overerving (inheritance) dat de eigenschappen van een kindklasse een uitbreiding zijn van die van de ouderklasse. Met behulp van overerving leid je van een bestaande klasse nieuwe klassen af. Hierdoor worden alle methoden en variabelen van de superklasse automatisch door de subklasse overgenomen. Wanneer leid je een klasse van een andere klasse af? Volgens de theorie van objectoriëntatie is overerving alleen toelaatbaar als voldaan is aan de volgende voorwaarden:? tussen de subklasse en de superklasse moet een is een soort van relatie bestaan;? de nieuwe klasse mag geen rol van de superklasse zijn;? de subklasse moet een uitbreiding van de superklasse zijn. Voorbeelden van de is een soort van-relatie zijn Auto Voertuig, Koelkast Kast, Voordeur Deur. Bij Auto Brandstoftank, Koelkast Vriesvak, Deur Slot is er sprake van een heeft een-relatie. In die situatie neem je beter de tweede klasse als variabele in de eerste klasse op (delegatie). Van de klasse Persoon mag je geen klasse Student afleiden omdat objecten van de klasse Student in de loop van de tijd objecten van bijvoorbeeld de klasse OudStudent of Docent kunnen worden. De klasse Student is in dit verband een voorbeeld van een rol. Met uitbreiding bedoelen we dat de afgeleide klasse iets extra aan de originele klasse moet toevoegen, de subklasse moet extra attributen of methoden aan de superklasse toevoegen. Waarom zou je overerving gebruiken? Hiervoor kunnen verschillende redenen zijn:? je wilt de ouderklasse behouden omdat ze al in het programma of in andere programma s bestaat, door overerving toe te passen beperk je het schrijfwerk door hergebruik van code;? de superklasse maakt deel uit van een klassenbibliotheek die door verschillende programmeurs gebruikt wordt, in dit geval mag je de superklasse niet wijzigen;? de broncode van de superklasse is niet toegankelijk of niet beschikbaar, om overerving te kunnen toepassen volstaat de gecompileerde.class-vorm van de superklasse;? de superklasse is een abstracte klasse, ze dient uitsluitend om een algemene gegevensstructuur in de top van een klassenhiërarchie te definiëren, niet om er rechtstreeks objecten van te maken;? je wilt gebruik maken van polymorfisme (late binding). 84 Java K. Behiels J. Gils

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

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

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

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

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

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

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 tony.wauters@kahosl.be en tim.vermeulen@kahosl.be

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

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

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

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

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

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

Objectgericht programmeren 1.

Objectgericht programmeren 1. Objectgericht programmeren 1 joost.vennekens@kuleuven.be http://www.cs.kuleuven.be/~joost/dn Objectgericht ontwerpen 35% Objectgericht ontwerpen 65% OP1 Informatiesystemen 50% Databanken 50% OP1 Evaluatie

Nadere informatie

VI. Klassen en objecten

VI. Klassen en objecten 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

Nadere informatie

Game of Life in Java

Game of Life in Java Game of Life in Java Auteur: drs. M.S.L.F. Manssen http://www.manssen.eu Game of Life is een spel van een rooster van cellen, waarbij telkens een ronde gebeurt waarbij de nieuwe waardes van cellen gebeurt.

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

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

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

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

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 info@beanpole.be 1 Programmeren 1.1 Hoe werkt een

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

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

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

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

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

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

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

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

Objectgericht programmeren 1.

Objectgericht programmeren 1. Objectgericht programmeren 1 joost.vennekens@kuleuven.be http://www.cs.kuleuven.be/~joost/dn Objectgericht ontwerpen 35% Objectgericht ontwerpen 65% OP1 Informatiesystemen 50% Databanken 50% OP1 Evaluatie

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

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

Programmeren 1 23 januari 2013 Prof. T. Schrijvers

Programmeren 1 23 januari 2013 Prof. T. Schrijvers Programmeren 1 23 januari 2013 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

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

Een topprogrammeur in het OO programmeren is Graig Larman. Hij bedacht de volgende zin: Java Les 2 Theorie Beslissingen Algemeen Net als in het dagelijks leven worden in software programma s beslissingen genomen, naast het toekennen van waarden aan variabelen zijn beslissingen één van de

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

Tentamen Objectgeorienteerd Programmeren IN1205 Voorbeeld

Tentamen Objectgeorienteerd Programmeren IN1205 Voorbeeld Tentamen Objectgeorienteerd Programmeren IN1205 Voorbeeld Afdeling ST Faculteit EWI TU Delft Bij dit tentamen mag u gebruik maken van: Barnes, Object-Oriented Programming with Java en de Notitie Algoritmiek

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

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

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

voegtoe: eerst methode bevat gebruiken, alleen toevoegen als bevat() false is PROEF-Tentamen Inleiding programmeren (IN1608WI), X januari 2010, 9.00-11.00, Technische Universiteit Delft, Faculteit EWI, Afdeling 2. Open boek tentamen: bij het tentamen mag alleen gebruik worden gemaakt

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

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

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

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

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

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

Hoofdstuk 0. Van Python tot Java.

Hoofdstuk 0. Van Python tot Java. Hoofdstuk 0. Van Python tot Java. In dit eerste hoofdstuk maken we de overstap van Python naar Java. We bespreken de verschillen en geven wat achtergrondinformatie. In het volgende hoofdstuk gaan we dieper

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 1 20 januari 2012 Prof. T. Schrijvers

Programmeren 1 20 januari 2012 Prof. T. Schrijvers Programmeren 1 20 januari 2012 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

De sheets zijn gebaseerd op met name hoofdstuk. D. Bell en M. Parr, Java voor studenten, Prentice Hall,

De sheets zijn gebaseerd op met name hoofdstuk. D. Bell en M. Parr, Java voor studenten, Prentice Hall, sheets Programmeren 1 Java college 4, Walter Kosters De sheets zijn gebaseerd op met name hoofdstuk 8 van: D. Bell en M. Parr, Java voor studenten, Prentice Hall, 2002 http://www.liacs.nl/home/kosters/java/

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

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

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

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

Project network. Gebaseerd op paragrafen , uit het boek. We simuleren een sociaal netwerk

Project network. Gebaseerd op paragrafen , uit het boek. We simuleren een sociaal netwerk Project network Gebaseerd op paragrafen 10.1-10.7, 11.1-11.6 uit het boek. We simuleren een sociaal netwerk Er zijn twee soorten berichten: tekstberichten en fotoberichten,... voorgesteld door de klassen

Nadere informatie

Informatica: C# WPO 11

Informatica: C# WPO 11 Informatica: C# WPO 11 1. Inhoud Pass by reference (ref, out), recursie, code opdelen in verschillende codebestanden 2. Oefeningen Demo 1: Swapfunctie Demo 2: TryParse(int) Demo 3: Recursion Tree Demo

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

Programmeren in C# Klassen schrijven

Programmeren in C# Klassen schrijven Programmeren in C# Klassen schrijven In dit hoofdstuk Klassestructuur Private variabelen Publieke methoden (public) Properties Constructormethodes Private methodes (private) Static methodes en properties

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

Datastructuren en algoritmen

Datastructuren en algoritmen Datastructuren en algoritmen Doelstelling Datastructures + algorithms = programs Boek van Niklaus Wirth: bedenker Pascal en Modula Datastructuur: structuur om informatie op te slaan Algoritme: voorschrift

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

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

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

NAAM: Programmeren 1 Examen 31/08/2011

NAAM: Programmeren 1 Examen 31/08/2011 Programmeren augustus 0 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 zelf

Nadere informatie

Datastructuren: stapels, rijen en binaire bomen

Datastructuren: stapels, rijen en binaire bomen Programmeermethoden Datastructuren: stapels, rijen en binaire bomen week 12: 23 27 november 2015 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 Inleiding In de informatica worden Abstracte DataTypen (ADT s)

Nadere informatie

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

Stacks and queues. Introductie 45. Leerkern 45. Terugkoppeling 49. Uitwerking van de opgaven 49 Stacks and queues Introductie 45 Leerkern 45 6.1 Stacks 45 6.2 Queues 47 6.3 Double-ended queues 48 Terugkoppeling 49 Uitwerking van de opgaven 49 Bijlage: Diagrammen belangrijkste interfaces en klassen

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

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

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

Programmeermethoden NA. Week 5: Functies (vervolg)

Programmeermethoden NA. Week 5: Functies (vervolg) Programmeermethoden NA Week 5: Functies (vervolg) Kristian Rietveld http://liacs.leidenuniv.nl/~rietveldkfd/courses/prna/ Bij ons leer je de wereld kennen 1 Functies Vorige week bekeken we functies: def

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

Modelleren en Programmeren

Modelleren en Programmeren Modelleren en Programmeren Jeroen Bransen 13 november 2013 Organisatie Docenten Jeroen Bransen Michael Moortgat Docenten Jeroen Bransen Imperatief programmeren (Java) Tot de kerst (ongeveer) Michael Moortgat

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

Variabelen en statements in ActionScript

Variabelen en statements in ActionScript Ontwikkelen van Apps voor ios en Android Variabelen en statements in ActionScript 6.1 Inleiding Als we het in de informatica over variabelen hebben, bedoelen we een stukje in het geheugen van de computer

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

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

Om de libraries te kunnen gebruiken, moet de programmeur (een deel van) zijn programma in C/C++ schrijven.

Om de libraries te kunnen gebruiken, moet de programmeur (een deel van) zijn programma in C/C++ schrijven. 1 Inleiding tot.net Software werd en wordt meestal geschreven in C of C++. De broncode van een C/C++ programma wordt dan gecompileerd naar machine code, die eventueel nog gelinkt wordt met machine code

Nadere informatie

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

Tentamen Inleiding Programmeren (IN1608WI), 2 februari 2012, 9.00-11.00, Technische Universiteit Delft, Faculteit EWI, Afdeling 2. Tentamen Inleiding Programmeren (IN1608WI), 2 februari 2012, 9.00-11.00, Technische Universiteit Delft, Faculteit EWI, Afdeling 2. Gesloten boek tentamen, bij dit tentamen mag je geen gebmik maken van

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

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

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

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

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

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

Aanvullende toets Gameprogrammeren (INFOB1GP) Woensdag 24 december 2014, uur Aanvullende toets Gameprogrammeren (INFOB1GP) Woensdag 24 december 2014, 13.30-15.30 uur Naam: Studentnummer: Het tentamen bestaat uit 4 opgaven. Opgaven 1 levert 8 punten op, opgave 2 levert 12 punten

Nadere informatie

Inhoudsopgave. Hoofdstuk 1.RMI...2

Inhoudsopgave. Hoofdstuk 1.RMI...2 - CORBA Inhoudsopgave Hoofdstuk 1.RMI...2 1.1.Inleiding...2 1.2.De remote...4 1.3.Het remote...5 1.4.De server...6 1.5.De server opstarten...8 1.6.De client applicatie...8 1.7.De stub en skeleton en...10

Nadere informatie

Voorbeeld: Simulatie van bewegende deeltjes

Voorbeeld: Simulatie van bewegende deeltjes Voorbeeld: Simulatie van bewegende deeltjes Simulatie - object Ruimte - objecten Deeltje - objecten Button - objecten Simulatie Samenhang van objecten sim geërfd van Form stap zelf gedeclareerd auto r1

Nadere informatie

Programmeermethoden. Pointers. Walter Kosters. week 10: november kosterswa/pm/

Programmeermethoden. Pointers. Walter Kosters. week 10: november kosterswa/pm/ Programmeermethoden Pointers Walter Kosters week 10: 13 17 november 2017 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 Pointers Introductie Een pointer is in feite gewoon een geheugenadres. Het geheugen kun

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

Inleiding C++ Coding Conventions

Inleiding C++ Coding Conventions Inleiding C++ Coding Conventions Opleiding Bachelor of Science in Informatica, van de Faculteit Wetenschappen, Universiteit Antwerpen. Nota s bij de cursus voor academiejaar 2012-2013. Ruben Van den Bossche,

Nadere informatie

Veel succes! 1. Gegeven is de volgende klasse:

Veel succes! 1. Gegeven is de volgende klasse: Dit tentamen is in elektronische vorm beschikbaar gemaakt door de TBC van A Eskwadraat. A Eskwadraat kan niet aansprakelijk worden gesteld voor de gevolgen van eventuele fouten in dit tentamen. Derde deeltentamen

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

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

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

Deeltentamen Grammatica s en ontleden 22 december 2005

Deeltentamen Grammatica s en ontleden 22 december 2005 Tentamen Grammatica s en ontleden 22 december 2005 1 Deeltentamen Grammatica s en ontleden 22 december 2005 Let op: opgave 1 t/m 4 tellen voor (slechts) 5 punten mee, opgave 5 voor maar liefst 50 punten,

Nadere informatie

Een stoomcursus door Edgar de Graaf, november 2006

Een stoomcursus door Edgar de Graaf, november 2006 Programmeren in Java Een stoomcursus door Edgar de Graaf, november 2006 Deze tekst geeft een zeer korte inleiding in de programmeertaal Java, uitgaande van kennis van de taal C++. Daarnaast bestudere men

Nadere informatie

Programmeermethoden NA. Week 5: Functies (vervolg)

Programmeermethoden NA. Week 5: Functies (vervolg) Programmeermethoden NA Week 5: Functies (vervolg) Kristian Rietveld http://liacs.leidenuniv.nl/~rietveldkfd/courses/prna2016/ Functies Vorige week bekeken we functies: def bereken(a, x): return a * (x

Nadere informatie

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

Veel succes! 1. Deze opgave bestaat uit een aantal deelvragen. Houd het antwoord kort: één of twee zinnen per onderdeel kan al genoeg zijn. Tweede deeltentamen Gameprogrammeren Vrijdag 18 oktober 2013, 11.00-13.00 uur Naam: Studentnummer: Het tentamen bestaat uit 3 opgaven. Opgaven 1 levert 10 punten op, opgave 2 levert 6 punten op, en opgave

Nadere informatie

DOMjudge teamhandleiding

DOMjudge teamhandleiding judge DOMjudge teamhandleiding Samenvatting /\ DOM DOM judge Hieronder staat de belangrijkste informatie kort samengevat. Dit is bedoeld om snel aan de slag te kunnen. We raden echter ten zeerste aan dat

Nadere informatie

Javascript oefenblad 1

Javascript oefenblad 1 Leer de basis van Javascript. Javascript oefenblad 1 Niels van Velzen Javascript oefenblad 1 Pagina 2 Inleiding Javascript is niet altijd even makkelijk. Vooral aan het begin is het even wennen hoe de

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