Object Oriented Ontwerp. Yannick Reekmans

Maat: px
Weergave met pagina beginnen:

Download "Object Oriented Ontwerp. Yannick Reekmans"

Transcriptie

1 Yannick Reekmans

2 22 september 2008 Head First Java (hfstk. 6 blz ): Arrays & ArrayList; DotComBust game code nakijken Head First Java (hfstk. 10 blz ): Working with dates Head First Java: (hfstk. 7 blz ): Inheritance an polymorfism 1. In Java 5.0 is een een nieuwe versie voor de for loop bijgekomen. Illustreer met een voorbeeld. (Hst 5) In Java 5.0 is er de enhanced for-loop bijgekomen. Deze is korter om neer te schrijven en werkt niet meer met het tellen van de elementen in de array. Voorbeeldje: String[] namenlijst = {"Tom", "Mieke", "Piet"}; for(string naam : namenlijst) { System.out.println(naam); } Elke naam in de lijst zal om de beurt toegewezen worden aan de variabele naam en dan uitgeprint worden. 2. Leg de verschillen uit tussen een array en een arraylist. Leg uit: een arraylist is een ingekapselde array. In Java 5.0 kan men een geparameteriseerde arraylist gebruiken. Leg uit met een voorbeeld. Een array krijgt zijn grootte mee op het moment dat het aangemaakt wordt en is achteraf niet meer aan te passen. Een ArrayList wordt dynamisch groter en kleiner als er meer objecten in moeten of er een deel verwijderd wordt. Iets in een array steken gebeurt door het object een locatie toe te wijzen in de array, dit kan een IndexOutOfBound-exceptie opleveren. Bij een ArrayList hoef je geen positie op te geven, maar als je dat wel doet dan wordt de ArrayList altijd zo groot dat het object op de positie past. Arrays hebben een speciale syntax (de [] ) die nergens anders voor gebruikt worden. ArrayLists zijn gewone objecten waar je gewone methoden op kan oproepen. 22 september 2008 pg. 1 van 2 KHLeuven, dept. G&T, 1TI

3 Wrapper?? Een geparameterizeerde ArrayList is een ArrayList waaraan een type is meegegeven, dit type bepaalt welk type van objecten zijn toegelaten in de ArrayList. Voorbeeld: ArrayList<Films> films betekent dat films een lijst van objecten van het type Film is. 3. Geef de betekenis van de Calendar klasse in Java Calendar is an abstract base class for converting between a Date object and a set of integer fields such as YEAR, MONTH, DAY, HOUR, and so on. 22 september 2008 pg. 2 van 2 KHLeuven, dept. G&T, 1TI

4 29 september 2008 Head First Java (hfstk. 7 blz ): Inheritance an polymorfism Head First Java (hfstk. 14 blz ): File I/O 4. Beschrijf met een eenvoudig voorbeeld de stappen om een object in te lezen en weg te schrijven van/naar tekstbestand We hebben een tekstbestand met op elke regel de naam van een hond en zijn leeftijd, gescheiden door een +-teken. Object wegschrijven: Gebruik FileWriter om een tekstbestand te openen, dit is een object van het type File Hang de FileWriter aan een BufferedWriter voor efficiëntie Gebruik dit object van BufferedWriter om de namen en leeftijden van de honden te schrijven, als een string en gescheiden door het +-teken en elke regel wordt afgesloten met het newline character \n Als alle honden weggeschreven zijn, sluit dan de writerstream Object inlezen: Gebruik FileReader om een tekstbestand te openen (object van het type File) Hang dit object van FileReader aan een BufferedReader voor de efficiëntie Lees regel per regel in, we hebben steeds een string in het volgende formaat naam+leeftijd Gebruik de split() methode van String om de string te splitsen op het +-teken Met de twee stukken kan dan steeds terug een Hond aangemaakt worden Hond h1 = new Hond(naam, leeftijd); Sluit de readerstream 5. Leg het verschil uit tussen een IS-A relatie en een HAS-A relatie (177) Beide zijn een manier om de relatie tussen twee klassen te bepalen. Met de IS-A test kan je bepalen of een klasse de subklasse van een andere klasse moet zijn. Voorbeeld: Hond IS-A 29 september 2008 pg. 1 van 3 KHLeuven, dept. G&T, 1TI

5 Dier dus Hond is een subklasse van Dier. De HAS-A relatie bepaalt of een klasse een referentie naar een object van een andere klasse moet bevatten. Voorbeeld: Keuken HAS-A Fornuis is waar, dus bevat Keuken een referentie naar een object van het type Fornuis. 6. Leg het gebruik uit van het Java keyword super (180) Met dit keyword kunnen subklassen methoden uit de superklasse oproepen. 7. Wanneer gebruiken we best overerving en wanneer moeten we overerving vermijden? (181) Wel: Niet: Als één klasse een specifieker type is dan een andere klasse. Voorbeeld: Hond is specifieker dan Dier, dus Hond is best een subklasse van Dier. Als verschillende klassen van een gemeenschappelijke soort hetzelfde gedrag delen, dan kan een gemeenschappelijke superklasse een goede oplossing zijn. Om gemeenschappelijke code tussen verschillende, ongerelateerde klassen te kunnen delen. Als twee klassen niet slagen voor de IS-A test. 8. Leg de betekenis uit van polymorfisme. Om wille van polyphorfisme kan je aan elke referentievariabele van een supertype ook een object van één van zijn subklassen hangen. (Hetzelfde bij parameters van methoden en return types). Als er dan methoden opgeroepen worden op de referentievariabele, dan zal deze de methoden van het juiste subtype uitvoeren. Voorbeeld: Dier dier = new Dog(); 9. Kan je elke klasse extenden? (189) Neen! Je kan geen innerclass extenden Als een klasse non-public is, dan kunnen alleen klassen in hetzelfde package deze klasse extenden Als een klasse final is, dan kan je die ook niet extenden Als een klasse enkel private constructors heeft, dan kan je die niet extenden 10. Wat is de betekenis van het Java keyword final? (189) 29 september 2008 pg. 2 van 3 KHLeuven, dept. G&T, 1TI

6 Als een klasse gemarkeerd is als final dan kan je die niet meer extenden, als een methode gemarkeerd is als final dan wil dat zeggen dat deze methode niet kan overridden worden. 11. Welke regels gelden er bij overerving? (190) Argumenten en return types van beide methoden moeten hetzelfde zijn. Een methode kan niet minder toegankelijk worden. Als in de superklasse de methode public is, dan kan die overervende klasse die methode niet private maken. 29 september 2008 pg. 3 van 3 KHLeuven, dept. G&T, 1TI

7 06 oktober 2008 Word document: Inkapselingsprobleem bij overerving Head First Java (hfstk. 8 blz ): Interfaces en polymorfisme 12. Omschrijf het inkapselingsprobleem bij overerving. Omschrijf 3 goede oplossingen. Welke oplossingen mijden we best en waarom? We willen in de subklassen toegang tot de instantievariabelen van de superklasse die we om veiligheidsredenen private hebben gemaakt en willen houden. Oplossingen: 1. De methoden die gebruik maken van de private variabelen in de superklasse plaatsen als een publieke methode en die dan in de subklasse oproepen. 2. De benodigde private variabelen via interne methode aanroepen doorgeven als parameters 3. In de superklasse een protected getter maken voor de benodigde private variabelen Te vermijden: De variabelen protected maken (ipv. private): de subklassen hebben toegang tot de variabelen MAAR ze kunnen die dan ook aanpassen (wat we natuurlijk niet willen) De variabelen public maken, want dan kan de gebruiker de variabelen aanpassen in zijn programma en zo een hele hoop in de war sturen. 13. Wat is een abstracte klasse? Kan een abstracte klasse instantievariabelen en een constructor bevatten? Een abstracte klasse is een klasse met minstens één abstracte methode in. Dit is een methode zonder body die verplicht uitgewerkt moet worden in de eerste concrete subklasse. Ja, een abstracte klasse kan een constructor en instantievariabelen bevatten. Omdat we een abstracte klasse niet kunnen instantiëren, zal de constructor aangeroepen moeten worden vanuit de constructors van de subklassen met de super() aanroep. 14. Leg het verband uit tussen de klasse Object en overerving. (209 ) Is de klasse Object abstract? Kan je alle methoden van Object overriden? Wat zijn de 2 voornaamste bestaansredenen van de klasse Object? 06 oktober 2008 pg. 1 van 2 KHLeuven, dept. G&T, 1TI

8 Elke klasse erft automatisch over van de klasse Object, en bezit dus ook al de methoden van deze klasse. De klasse Object is niet abstract en alle methoden die niet final zijn kunnen worden overridden. 15. Waarom is de volgende code fout? Object o = new Knop(); o.teken(); De Javacompiler denkt dat o een instantie van Object is, waardoor je enkel methoden uit de klasse Object kan oproepen op o. Aangezien de methode teken niet tot de klasse Object behoort, kan je die niet oproepen op o. 16. Leg de werking uit van de instanceof operator. (216) De syntax is als volgt: object instanceof klasse Dit geeft true terug als het object een instantie is van de klasse, en false als dit niet zo is. 06 oktober 2008 pg. 2 van 2 KHLeuven, dept. G&T, 1TI

9 13 oktober 2008 Head First Java (hfstk. 8 blz ): Interfaces en polymorfisme Head First Design patterns (hfstk. 1 blz. 1-34): Welkom bij design patterns - strategy pattern 17. Leg het ontstaan en de evolutie van het klassen diagramma uit voor het dieren simulatie programma, dat ook moet dienen voor een huisdieren winkel applicatie (diagramma op p 226) (meerdere overervingsniveaus, abstracte klassen, interfaces) 18. Leg het verschil uit tussen een interface en een abstracte klasse. Een abstracte klasse wordt overgeërfd terwijl een interface door een klasse geïmplementeerd wordt. Een klasse kan slechts uit één klasse overerven, maar kan vele interfaces implementeren. Een interface is een 100% pure abstracte klasse! Zowel een interface als een abstracte klasse kunnen niet geïnstantieerd worden: bij een interface zijn al de methoden impliciet abstract (dus zonder methodbody), terwijl dat bij een abstracte klassen niet alle methoden abstract moeten zijn. In een abstracte klasse kunnen sommige methoden toch een body hebben. 19. Leg het verband uit tussen interfaces en polymorfisme Interfaces zijn het antwoord van Java op meervoudige overerving en lossen het Deadly Diamond of Death probleem op. Als je een klasse als polymorf type hebt, dan kan je daar enkel objecten uit dezelfde overervingsboom aan toekennen. Terwijl als je een interface als polymorf type gebruikt, dan kan je er eender welk object aan toekennen op voorwaarde dat dit object ergens in zijn overervingsboom deze interface geïmplementeerd heeft. 20. Lees de bullet points op blz. 229 Geen vraag, dus geen antwoord =P 21. Leg het strategy pattern uit aan de hand van het UML schema op blz. 22 (Duck simulation in Design Patterns) 13 oktober 2008 pg. 1 van 2 KHLeuven, dept. G&T, 1TI

10 De abstracte klasse heeft een klassevariabele van een interfacetype (in dit geval flybehaviour). Alles in verband met het vlieggedrag van eenden wordt doorverwezen naar deze interface. We kunnen aan elke eend vragen om te vliegen (met de methode performfly()), in deze methode wordt dan de fly-methode van de geassocieerde implementatie van FlyBehaviour opgeroepen. Op die manier kan het vlieggedrag van een eend dynamisch gewijzigd worden. Zo zitten we in Duck toch met een algemene methode performfly() die we niet steeds moeten overriden om de verschillende vlieggedragingen te kunnen gebruiken (want misschien zijn er wel drie eenden met hetzelfde vlieggedrag en slechts eentje met een ander gedrag). We maken die gedragingen in de interface FlyBehaviour, en we kennen dan zo een implementatie toe aan elke eend. 22. Geef het typische klassendiagramma dat hoort bij het strategy pattern Zie Head First Design patterns blz Leg volgend ontwerpprincipe uit: Verkies compositie boven overerving. Als we het strategypattern gebruiken, dan doen we eigenlijk aan compositie. Een eend (zoals in het voorbeeld op blz. 22) ontvangt zijn vlieg- en kwaakgedrag uit een gedragsobject waarmee hij is samengesteld, in plaats van door het gedrag te erven. Op deze manier hebben we veel meer flexibiliteit: we kunnen een familie van algoritmen inkapselen EN het gedrag at runtime veranderen. 13 oktober 2008 pg. 2 van 2 KHLeuven, dept. G&T, 1TI

11 20 oktober 2008 Head First Java (hfstk. 16 blz ): Sorteren objecten Head First Design patterns (hfstk. 8 blz ): The template method pattern 24. Hoe kunnen we de Java interfaces Comparable en Comparator gebruiken om op een eenvoudige manier een verzameling van objecten in een collectie object (ArrayList, ) te sorteren? Illustreer met een voorbeeld. Als we een Collectie object willen sorteren, dan gebruiken we daarvoor de statische methode sort() van de klasse Collections. Dit werkt out of the box enkel als het collectie object een verzameling is van String objecten. Als de ArrayList objecten van een ander type bevat, dan moeten die de interface Comparable implementeren (en dus ook de methode compareto() overriden). Deze methode neemt een ander object van hetzelfde type als parameter, en in de body worden dan de twee objecten vergeleken. We kunnen met andere woorden zelf bepalen op welke manier we beiden objecten met elkaar vergelijken en hoe we hun sortering bepalen (0=gelijke, 1=huidig object groter dan parameterobject en -1=huidig object kleiner dan parameterobject). Door de interface Comparator te gebruiken, kunnen we een Collections object op verschillende manieren sorteren. We maken een klasse die de interface Comparator implementeert (en we maken dus onze eigen implementatie van de methode compare() die twee verschillende objecten als parameter verwacht). In de methode kunnen we dan onze eigen manier bepalen van het vergelijken (en dus sorteren) van de twee objecten. We kunnen dan een Collection sorteren door Collections.sort(object, Comparatorobject) op te roepen. Zo kunnen we Collections op verschillende punten in onze code op een andere manier sorteren. 25. Leg het template pattern uit aan de hand van de code op blz. 281 (code zelf kunnen reproduceren!!): Wat is een template methode? Waarom is deze methode final? Waarom een abstracte klasse? Wat is een hook methode? De template methode is de methode die het skelet van het algoritme definieert, waarbij een aantal stappen aan de subklassen kunnen overgelaten worden voor de implementatie. Op die manier kan nooit de volgorde van het algoritme aangepast worden, enkel de specifieke implementatie. De templatemethode staat altijd in een abstracte klasse zodat een aantal methoden uit het algoritme al geïmplementeerd kunnen worden in deze klasse, maar een aantal andere methoden ook abstract kunnen gelaten worden voor implementatie in de subklassen. 20 oktober 2008 pg. 1 van 2 KHLeuven, dept. G&T, 1TI

12 De hook() methode is een (quasi) lege methode die de subklassen de mogelijkheid geeft om op bepaalde punten in de code in te haken en eventueel nog extra dingen uit te voeren op die plaatsen. 26. Leg de code van blz 281 uit aan de hand van het voorbeeld maken van koffie en thee De abstracte klasse bepaalt in de finale template methode de structuur van het algoritme (Water koken, smaakstoffen toevoegen, uitschenken, blabla). Een aantal van die dingen zijn voor koffie en thee zetten gelijk en die worden reeds in de abstracte klasse geïmplementeerd. De verschillen in de methoden worden in verschillende subklassen geïmplementeerd. 27. Vergelijk template en strategy (blz. 288 en blz ) Template definieert de structuur van het algoritme en laat de implementatie grotendeels over aan zijn subklassen, terwijl strategy de algoritmen afschermt en de mogelijkheid biedt om de verschillende algoritmen gemakkelijk te gebruiken. Bij template gaat de algemene code in de superklasse en wordt enkel de verschillende/specifieke code naar de subklassen wordt gebracht, bij template zit er een vaste/duidelijke/transparante structuur in het algoritme. Bij strategy is er niet zo duidelijk welke stappen er in het algoritme uitgevoerd worden, maar ze kunnen dan weer wel at runtime veranderd worden. Template is afhankelijk van zijn subklassen om het volledige algoritme te implementeren, terwijl Strategy de hele code zelf kan uitvoeren (zonder dat er subklassen aan te pas komen). 28. Leg uit: Waar is template method pattern gebruikt in de Word tekst Inkapselingsproblemen bij overerving op Pafox? In de methode draw() van de voorbeeldalgoritmen. 20 oktober 2008 pg. 2 van 2 KHLeuven, dept. G&T, 1TI

13 03 november 2008 Naamloze implementatie van een interface (Word document op PAFOX) Hoe de klasse TekenVenster gebruiken (Java programma s in de map Grafisch op PA- FOX) 29. Geef een voorbeeld van een naamloze implementatie van een interface. IKnopActie.java is de interface setaction( new IKnopActie(){ int i = 0; public void dosomething(knopabstract t) { schrijfstatuslijn("u heeft al " + i++ + " maal geactiet op deze knop"); } } ); 03 november 2008 pg. 1 van 1 KHLeuven, dept. G&T, 1TI

14 10 november 2008 Head First Design patterns (hfstk. 5 blz ): Singleton pattern 30. Leg de betekenis van het singleton pattern uit (blz. 169). Met het Singleton pattern kunnen we ervoor zorgen dat we slechts één unieke instantie van een klasse kunnen maken en we die instantie ook steeds terug kunnen opvragen. Bij Singleton hebben we een publieke klasse met een static klassevariabele om de enige instantie van de klasse te bewaren. Ook is er een private constructor (zodat er niet new Class() kan opgeroepen worden) en een getinstance() methode om éénmalig een instantie van de klasse aan te maken en daarna die instantie steeds opnieuw terug te geven. 31. Welke problemen kan de klassieke oplossing van singleton pattern geven in een multithreading omgeving? Oplossing? (blz ) Je weet nooit op welk punt van de code de virtuele machine overgaat van het uitvoeren van de eerste thread naar de tweede thread. Hierdoor kan de virtuele machine op een bepaalde manier meer dan één object aanmaken, ook al was dat net wat we probeerden te vermijden door het Singleton pattern te gebruiken! We kunnen dit oplossen door de methode getinstance() synchronized te maken (ofwel direct een instantie aanmaken ipv. dat te laten gebeuren door de methode getinstance()) 10 november 2008 pg. 1 van 1 KHLeuven, dept. G&T, 1TI

15 17 november 2008 Head First Design patterns (hfstk. 10 blz ): The state pattern 32. Leg aan de hand van een eenvoudig voorbeeld het state pattern uit. We hebben een kleine machine die een actie uitvoert als er op een knop gedrukt wordt. Als er geld in de machine steekt dan uitput die Er zit geld inën als er geen geld insteekt dan zegt die Eerst geld insteken. De machine heeft dus twee states (HAS MONEY, NO MONEY), twee methoden (doeactie() en insertgeld()) en drie instantievariabelen (moneystate, nomoneystate en currentstate). We hebben ook een interface Actie met twee concrete implementaties (MoneyActie en NoMoneyActie). Ze hebben allemaal de methode exec(). Bij MoneyActie staat daarin de output van Er zit geld inën bij NoMoneyActie de output van Eerst geld insteken. Bij de instantiatie van de machine hangen we een object van MoneyActie aan moneystate, van NoMoneyActie aan nomoneystate en stellen we currentstate gelijk aan nomonystate. Bij het drukken op de knop gaat de machine naar de methode doeactie() en die doet dan currentstate.exec() en schrijft Eerst geld insteken. Bij het geld insmijten gaat de machine naar de methode insertgeld() en dan gaat de machine de currentstate veranderen in moneystate. Als we dan op de knop duwen dan geeft currentstate.exec() Er zit geld in weer. 33. Hoe kan je een UML toestandsdiagramma implementeren in Java? Geef 2 manieren (waaronder oplossing met state pattern) en waarom is de oplossing met state pattern beter? Door gebruik te maken van statische finale instantievariabelen die elk een state voorstellen en dan een hoop geneste if-lussen gebruiken om te kijken in welke state we ons bevinden om dan de juiste code uit te voeren. We kunnen natuurlijk ook het State pattern gebruiken, waar we een State interface hebben en elke state voorgesteld wordt door een klasse die deze state interface implementeerd. We houden in een instantievariabele bij in welke state we ons bevinden en wanneer het nodig is in de klasse dan delegeren we de uitvoering gewoon naar de State. De implementatie (en wat er dus effectief gebeurt bij het oproepen van de methode) hangt dus eigenlijk af van in welke State we ons bevinden. De oplossing met State is beter omdat de code veel overzichtelijker is en makkelijker te gebruiken is! 34. Wat is het typische klassenschema voor state pattern + uitleg (blz. 396) Zie maar blz. 396, daar is dat al mooi uitgelegd. 17 november 2008 pg. 1 van 2 KHLeuven, dept. G&T, 1TI

16 35. Leg uit strategy en state pattern lijken heel veel op mekaar (verklaar overeenkomsten en verschillen) Ze verschillen in intentie: het State pattern zorgt voor het inkapselen van staatsafhankelijk gedrag terwijl Strategy algoritmen inkapselt. Hun klassendiagrammen zijn praktisch gelijk, ze verkiezen beiden Compositie boven Overerving. 17 november 2008 pg. 2 van 2 KHLeuven, dept. G&T, 1TI

17 24 november 2008 Head First Design patterns (hfstk. 4 blz ): The factory pattern Head First Java (Appendix B blz ): Enumerations in Java + voorbeeld op PAFOX Head First Java (hfstk. 14 blz ): Saving objects: Serialisation 36. Leg uit met een voorbeeld: The simple factory method: Geef schema en voordeel. Leg uit: De factory kan evengoed een static methode zijn. 37. Beschrijf het factory method pattern. Geef een voorbeeld en het typische klassenschema. (blz. 132) Bij het Factory pattern wordt er gebruik gemaakt van een (meestal abstracte) Creatorklasse. Dit is een klasse die alle methoden bevat voor het manipuleren van objecten, behalve de creatie van het object zelf (dit is de Factorymethod). Op die manier is de Creatorklasse zich volledig bewust van welke stappen hij doorloopt op het object maar weet hij op voorhand niet op welk type object hij dat gaat uitvoeren. De factorymethode van de subklasse maakt het eigenlijke object aan dat in het algemene algoritme gemanipuleerd wordt. 38. Bespreek het verschil tussen simple factory method en factory method pattern.(blz 133) 39. Leg uit: Enumerations in Java Leg uit: Enumerations zijn een manier om parameters (Vb een string parameter) type safe te maken. 40. Leg het verschil uit tussen een connection stream en een chain stream. Geef voorbeelden van elk. Een connection stream maakt een connectie met een bron (bestand, socket), maar een chainstream kan dat niet op zichzelf en heeft dus een connection stream nodig. Een connectionstream manipuleert de data op een veel lager (byte) niveau. De chainstream doet dat op hoger niveau (bvb objecten lezen/schrijven) en vertaald dat naar de lagerniveaumethoden. 24 november 2008 pg. 1 van 2 KHLeuven, dept. G&T, 1TI

18 Connection: FileOutputStream Chain: ObjectOutputStream 41. Beschrijf met een eenvoudig voorbeeld de stappen om een object: geserialized weg te schrijven naar een bestand, te deserializen (restoren uit een bestand), als een tekstbestand weg te schrijven, in te lezen uit een tekstbestand Serialisatie: Laat de klasse van het object dat je wil serialiseren de interface Serializable implementeren Zorg ervoor dat alle klassen die door de te serialiseren klasse gereferenced worden ook de klasse Serializable implementeren Maak een FileOutputStream naar een bestand en chain dit aan een ObjectOutputStream Gebruik deze laatste om de objecten weg te schrijven (met de methode writeobject()) Sluit de ObjectOutputStream Deserialisatie: Maak een FileInputStream naar een bestand met geserialiseerde objecten en chain dit aan een ObjectInputStream Gebruik dit laatste om de objecten in te lezen Cast deze objecten naar hun juiste type (want readobject() geeft objecten van het type Object terug) Sluit de ObjectInputStream De rest staat al eens in een ander documentje 42. Leg de betekenis uit van: het keyword transient, de interface Serializable, serialversionuid 24 november 2008 pg. 2 van 2 KHLeuven, dept. G&T, 1TI

19 01 december 2008 Head First Design patterns (hfstk. 3 blz ): The decorator pattern Head First Design patterns (hfstk. 6 blz ): The command pattern 43. Geef het typische klassendiagramma dat behoort bij het decorator pattern (blz. 89) en geef uitleg bij elke klasse. Illustreer dit klassendiagramma met een heel eenvoudig voorbeeld. Component is een abstracte klasse (het algemene supertype), ConcreteComponent is het concrete object waar we eventueel nieuw gedrag aan kunnen toevoegen. Decorator is de abstracte superklasse van alle concrete decorators die nieuw gedrag kunnen toevoegen, en die erft over van Component (om meervoudige toevoegingen te kunnen realiseren). ConcreteDecoratorA en ConcreteDecoratorB zijn concrete implementaties van Decorator en deze klassen voegen het nieuwe gedrag toe. Ze hebben een referentie (dus in een instantievariabele) naar Component (HEEFT-EEN of wraps). Zie het handboek voor een voorbeeld ivm. koffie. 44. Geef het tyische klassendiagramma dat behoort bij het command pattern (blz 201) en geef uitleg bij elke klasse. Illustreer dit klassendiagramma met het voorbeeld van de remote control 45. Geef zowel voor decorator als command patroon de voordelen (wanneer gebruiken we best deze patronen) 01 december 2008 pg. 1 van 1 KHLeuven, dept. G&T, 1TI

20 08 december 2008 Head First Java (hfstk. 16 blz ): Data structures Powerpoint presentatie JavaCollecties op PAFOX 46. Geef een overzicht van de klassen uit de Collection API met hun voornaamste kenmerken (blz 558) Kijk maar gewoon blz Leg het verschil uit tussen reference en object equality; Leg de betekenis uit van de methode hashcode() 48. Leg de werking uit van de HashSet en HashMap klassen: Wat is hashing? Verband met de methode hashcode. Hoe objecten opslaan en opvragen. Vergelijking tussen beide klassen (overeenkomsten en verschillen) 49. Leg de werking uit van de TreeSet klasse en vergelijk met HashSet klasse 50. Veronderstel, binnen een klasse is er een methode: public void takeanimals(arraylist <Animal> animals) Animal is een abstracte klasse, Dog en Cat erven ervan over. Mogen we dan in een testprogramma schrijven: ArrayList <Dog> dogs = new ArrayList<Dog>(); dogs.add(new Dog()); takeanimals(dogs); Motiveer je antwoord en indien niet mogelijk hoe oplossen (blz ) 08 december 2008 pg. 1 van 1 KHLeuven, dept. G&T, 1TI

21 Richtlijnen examen De vragen van het theoriegedeelte van het examen komen uit de lijst van 50 vragen uit vorige werkbladen. Elke vraag heeft evenveel kans om gesteld te worden!!! Studeer de vragen met inzicht. Op het examen krijg je een letterlijke vraag of een afgeleide vraag of een toepassing die inzicht in de vraag test. Lees ook de bulletpoints na achter elk behandeld hoofdstuk uit de 2 handboeken. Hieruit kunnen juist/fout vragen of inzichtsvragen gesteld worden. Behandelde hoofdstukken: Head First Java: 7, 8, 14, 16 en Appendix B (Enumeration) Design patterns: 1, 3, 4, 5, 6, 8 en 10 Puntenverdeling OO-ontwerpen: Practicum + permanente evaluatie: 30p (Bij eventuele herexamen is een herkansing voor PE mogelijk) Examen Theorie : 30p (zie hierboven; bij eventuele herexamen komen er opnieuw vragen uit deze lijst) Examen Schriftelijke oefening op papier: 40p. Deze oefening is ofwel: Een grote toepassing (in de aard van practicaoefeningen) waarvoor een ontwerp met patronen (UML klassendiagramma) moet bedacht worden en waarna (aan de hand van een standaardoplossing) stukken code moeten geschreven worden. Kleinere toepassingen (zowel ontwerp als coderen) Het examen is een gesloten boek examen

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

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

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

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

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

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 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

OBJECT SPAGHETTI : PATTERNS BIEDEN UITKOMST? Wat is het probleem nou eigenlijk? public class CoffeeDrinker { private CoffeeProducer mycoffeeproducer;

OBJECT SPAGHETTI : PATTERNS BIEDEN UITKOMST? Wat is het probleem nou eigenlijk? public class CoffeeDrinker { private CoffeeProducer mycoffeeproducer; OBJECT SPAGHETTI : PATTERNS BIEDEN UITKOMST? Object georiënteerde (OO) systemen kennen vele voordelen ten opzichte van traditionele procedurele systemen. Zo zouden OO systemen flexibeler en beter onderhoudbaar

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

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

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

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

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

Design patterns.

Design patterns. Design patterns joost.vennekens@mechelen.lessius.eu Wat zijn dat? Programma zit niet goed in elkaar Zondigt tegen ontwerpprincipes En dat zorgt voor probleem Ontwerppatroon: standaard oplossing voor een

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

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

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

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

Dergelijke functionaliteit kunnen we zelf ook aan eigen code toevoegen.

Dergelijke functionaliteit kunnen we zelf ook aan eigen code toevoegen. Indexers in C#.Net In deze tutorial ga ik het hebben over indexers. Bij het gebruik van bijvoorbeeld een ArrayList object, kan je de gegevens uit deze collectie opvragen als ware het een array. // ArrayList

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

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

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

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

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

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

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

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

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

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

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

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

SYNTRA-WEST. Initiatiecursus JAVA. Deel

SYNTRA-WEST. Initiatiecursus JAVA. Deel SYNTRA-WEST Initiatiecursus JAVA Deel Syntra-West Syntra-West (vroeger Vormingsinstituut West-Vlaanderen) Doorniksesteenweg 220 8500 Kortrijk Tel. 056/26.02.00 Fax 056/22.81.07 i Inhoudsopgave SYNTRA-WEST...

Nadere informatie

Derde deeltentamen Gameprogrammeren Vrijdag 7 november 2014, uur

Derde deeltentamen Gameprogrammeren Vrijdag 7 november 2014, uur Naam: Derde deeltentamen Gameprogrammeren Vrijdag 7 november 2014, 11.00-13.00 uur Studentnummer: Het tentamen bestaat uit 3 opgaven. Opgaven 1 levert 20 punten op, opgave 2 levert 10 punten op, en opgave

Nadere informatie

Welkom bij de Design Patterns

Welkom bij de Design Patterns 1 Inleiding tot Design Patterns g h Welkom bij de Design Patterns g Nu we in Objectville wonen, moeten we ook met de Design Patterns kennismaken... dat doet hier iedereen. We zullen gauw de ster zijn van

Nadere informatie

Design patterns Startbijeenkomst

Design patterns Startbijeenkomst Design patterns Startbijeenkomst Harrie Passier Docenten Sylvia Stuurman (1 e examinator) Sylvia.Stuurman@ou.nl Harrie Passier (2 e examinator) Harrie.Passier@ou.nl Aarzel niet vragen te stellen! Rooster

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

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

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

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

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

Enterprise Connectivity. Marnix van Bo. TU Delft Elek Software Architect 20 jaar ervarin ontwikkeling

Enterprise Connectivity. Marnix van Bo. TU Delft Elek Software Architect 20 jaar ervarin ontwikkeling Fir rst Base Enterprise Connectivity Marnix van Bo chove First Base: opgericht in 2001 TU Delft Elek ktrotechniek - 1998 Software Architect 20 jaar ervarin g met software ontwikkeling Presentatie Ideeën

Nadere informatie

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

Klassen & objecten, overerving, abstracte klassen, debuggen, interfaces, formulieren, polymorfie, statische methoden, event-handlers 1 Inhoud Klassen & objecten, overerving, abstracte klassen, debuggen, interfaces, formulieren, polymorfie, statische methoden, event-handlers 2 Geluidsbronnen simulator, deel 2 Inleiding De weergave versnellen

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

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

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

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

Een gelinkte lijst in C#

Een gelinkte lijst in C# Een gelinkte lijst in C# In deze tutorial ga demonstreren hoe je een gelinkte lijst kan opstellen in C#. We gaan een klasse schrijven, die een gelijkaardige functionaliteit heeft als een ArrayList, namelijk

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

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

Software-Ontwikkeling I Academiejaar 2006-2007

Software-Ontwikkeling I Academiejaar 2006-2007 Software-Ontwikkeling I Academiejaar 2006-2007 Project: Bibliotheekbeheer 1 1. Digitale bibliotheek a. Inleiding Bibliotheken houden onder meer hun collecties van uitleenbare artikels bij in digitaal formaat.

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

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 6 december 2013 Terugblik Programma en geheugen Opdrachten Variabelen Methoden Objecten Klasse Programma en geheugen Opdrachten Variabelen zijn gegroepeerd in

Nadere informatie

Informatica. Deel II: les 1. Java versus Python. Jan Lemeire Informatica deel II februari mei 2014. Parallel Systems: Introduction

Informatica. Deel II: les 1. Java versus Python. Jan Lemeire Informatica deel II februari mei 2014. Parallel Systems: Introduction Informatica Deel II: les 1 Java versus Python Jan Lemeire Informatica deel II februari mei 2014 Parallel Systems: Introduction Arabidopsis (zandraket) Arabidopsis (zandraket) MMIQQA Multimodal Microscopic

Nadere informatie

Deel 1 : Gesloten Boek

Deel 1 : Gesloten Boek Naam : EXAMEN SOFTWAREONTWIKKELING 1STE PROEF BURG. IR. COMPUTERWETENSCHAPPEN EERSTE EXAMENPERIODE ACADEMIEJAAR 2004-2005 Deel 1 : Gesloten Boek 1. Testen Geef een overzicht van de verschillende testen

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

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

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

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

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

1 Ontwerppatronen. 1.1 Het Command patroon

1 Ontwerppatronen. 1.1 Het Command patroon 1 Ontwerppatronen Software-ontwikkelaars worden geconfronteerd met ontwerpproblemen: de manier waarop ze hun programma gestructureerd hebben geeft aanleiding tot slechte eigenschappen zoals rigiteit, fragiliteit,....

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

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

Zelftest Inleiding Programmeren

Zelftest Inleiding Programmeren Zelftest Inleiding Programmeren Document: n0824test.fm 22/01/2013 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INLEIDING BIJ DE ZELFTEST INLEIDING PROGRAMMEREN Deze

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

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

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

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

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

De Vergeten Abstracties

De Vergeten Abstracties De Vergeten Abstracties Cesario Ramos Senior Consultant bij Xebia B.V. 2009 Inleiding Rollen zijn een belangrijk concept in object georiënteerde software ontwikkeling dat vaak vergeten wordt. Het gebruik

Nadere informatie

Uitwerkingen derde deeltentamen Gameprogrammeren Vrijdag 6 november 2015, uur

Uitwerkingen derde deeltentamen Gameprogrammeren Vrijdag 6 november 2015, uur Uitwerkingen derde deeltentamen Gameprogrammeren Vrijdag 6 november 2015, 11.00-13.00 uur 1. Deze opgave bestaat uit een aantal deelvragen. Houd het antwoord kort: één of twee zinnen per onderdeel kan

Nadere informatie

Examen Programmeren 2e Bachelor Elektrotechniek en Computerwetenschappen Faculteit Ingenieurswetenschappen Academiejaar juni 2011

Examen Programmeren 2e Bachelor Elektrotechniek en Computerwetenschappen Faculteit Ingenieurswetenschappen Academiejaar juni 2011 Examen Programmeren 2e Bachelor Elektrotechniek en Computerwetenschappen Faculteit Ingenieurswetenschappen Academiejaar 2010-2011 21 juni 2011 **BELANGRIJK** 1. Lees eerst de volledige opgave (inclusief

Nadere informatie

Programmeren in Java 3

Programmeren in Java 3 7 maart 2010 Deze les Zelf componenten maken Concurrency (multithreading): werken met threads levenscyclus van een thread starten tijdelijk onderbreken wachten stoppen Zelf componenten maken Je eigen component:

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

Die inputs worden op een gecontroleerde manier aangeboden door (test) stubs. De test driver zorgt voor de uiteindelijke uitvoering ervan.

Die inputs worden op een gecontroleerde manier aangeboden door (test) stubs. De test driver zorgt voor de uiteindelijke uitvoering ervan. Nota: Schrijf je antwoorden kort en bondig in de daartoe voorziene velden. De puntenverdeling is 2 punten per theorie-vraag en 8 punten per oefening. Het totaal is 40. Vraag 1. Er bestaan verschillende

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

DIAGNOSTISCHE TOETS Softwaresystemen UITWERKING

DIAGNOSTISCHE TOETS Softwaresystemen UITWERKING DIAGNOSTISCHE TOETS Softwaresystemen datum: Donderdag van Week 7 UITWERKING Deze diagnostische toets bevat vragen over excepties en concurrency. Beantwoord de vragen zo goed mogelijk in 30 minuten Bespreek

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

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

Hoofdstuk 9. Hashing

Hoofdstuk 9. Hashing Hoofdstuk 9 Hashing Het zoeken in een verzameling van één object is in deze cursus al verschillende malen aan bod gekomen. In hoofdstuk 2 werd uitgelegd hoe men een object kan zoeken in een array die veel

Nadere informatie

Herhaling. Individuele Oefening. Individuele oefening. Tips en technieken in Alice. Vis in de zee Houdt van zeewier

Herhaling. Individuele Oefening. Individuele oefening. Tips en technieken in Alice. Vis in de zee Houdt van zeewier Herhaling Individuele Oefening Klasseniveaumethode Voorbeeld Overerving Object erft methodes van eerder gedefinieerd object Voorbeeld Object opslaan onder nieuwe naam. Latere instantie kunnen vroeger gedefinieerde

Nadere informatie

TENTAMEN Programmeren 1 VOORBEELDUITWERKING

TENTAMEN Programmeren 1 VOORBEELDUITWERKING TENTAMEN Programmeren 1 vakcode: 213500 datum: 10 juli 2004 tijd: 9:00-12:30 uur VOORBEELDUITWERKING Algemeen Bij dit tentamen mag gebruik worden gemaakt van het boek van Niño/Hosch, en van de handleiding

Nadere informatie

Programmeren in C++ Efficiënte zoekfunctie in een boek

Programmeren in C++ Efficiënte zoekfunctie in een boek Examen Software Ontwikkeling I 2e Bachelor Informatica Faculteit Wetenschappen Academiejaar 2010-2011 21 januari, 2011 **BELANGRIJK** 1. Lees eerst de volledige opgave (inclusief de hints/opmerkingen)!

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 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

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

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

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 27 november 2015 Recursie Objecten Constructors Aanpassen variabelen this keyword Recursie Recursie Recursieve functie roept zichzelf (direct of indirect) aan

Nadere informatie

Tweede deeltentamen Gameprogrammeren Vrijdag 17 oktober 2014, uur

Tweede deeltentamen Gameprogrammeren Vrijdag 17 oktober 2014, uur Naam: Tweede deeltentamen Gameprogrammeren Vrijdag 17 oktober 2014, 8.30-10.30 uur Studentnummer: Het tentamen bestaat uit 3 opgaven. Opgaven 1 levert 10 punten op, opgave 2 levert 10 punten op, en opgave

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

Examen Software Ontwikkeling I 2e Bachelor Informatica Academiejaar Januari, **BELANGRIJK** : Schrijf je naam onderaan dit blad

Examen Software Ontwikkeling I 2e Bachelor Informatica Academiejaar Januari, **BELANGRIJK** : Schrijf je naam onderaan dit blad Examen Software Ontwikkeling I 2e Bachelor Informatica Academiejaar 2006-2007 23 Januari, 2007 **BELANGRIJK** : Schrijf je naam onderaan dit blad Leg volgende 3 begrippen kort en bondig uit : a. Concurrent

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

4 ASP.NET MVC. 4.1 Controllers

4 ASP.NET MVC. 4.1 Controllers 4 ASP.NET MVC ASP.NET is het.net raamwerk voor het bouwen van webapplicaties. De MVC variant hiervan is speciaal ontworpen voor het bouwen van dergelijke applicaties volgens het Model-View-Controller paradigma.

Nadere informatie

Opgaven. Python Assessment

Opgaven. Python Assessment Opgaven Python Assessment Nijmegen - Utrecht www.atcomputing.nl Copyright 2015,2016 Versie: 1a Inleiding Met dit assessment kun je controleren of je voldoende parate kennis over Python hebt om te beginnen

Nadere informatie

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

public boolean equaldates() post: returns true iff there if the list contains at least two BirthDay objects with the same daynumber Tentamen TI1310 Datastructuren en Algoritmen, 15 april 2011, 9.00-12.00 TU Delft, Faculteit EWI, Basiseenheid Software Engineering Bij het tentamen mag alleen de boeken van Goodrich en Tamassia worden

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

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

Streams, Formatters en Serialization in.net (Tutorial gebaseerd op tutorials van Richard Grimes, het MSDN en anderen)

Streams, Formatters en Serialization in.net (Tutorial gebaseerd op tutorials van Richard Grimes, het MSDN en anderen) Streams, Formatters en Serialization in.net (Tutorial gebaseerd op tutorials van Richard Grimes, het MSDN en anderen) In deze tutorial ga ik in op het gebruik van Streams, Formatters en Serialization.

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