Rev**** Model Aanpassingen

Maat: px
Weergave met pagina beginnen:

Download "Rev**** Model Aanpassingen"

Transcriptie

1 Rev Model Aanpassingen Jaco Peeman en Casper de lange Februari 2003 SERC/UU

2 Abstract Dit document beschrijft de aanpassingen die gemaakt zijn aan het interne meta-model van het programma RevJava, geschreven door Gert Florijn. Het model is aangepast om naast Java ook.net programma's in te kunnen lezen. Index Abstract... 2 Index... 2 Inleiding... 3 Het generieke model... 4 Het hart van het model:... 4 GenType... 6 GenClass... 7 GenInterface... 7 GenField...10 GenProperty...11 GenEvent...12 GenNamespace...13 DeploymentUnit...13 GenSystem...13 Het concrete deel van het model...14 MSIL specifiek...16 IlNameSpace...16 IlTypes...17 IlClass...18 IlInterface...19 Feature...20 IlMethod...21 IlField...22 Java specifiek...23 Verschillen met het oude model...24 GenRepository...24 GenSystem...24 GenNameSpace...24 GenType...24 Feature...25 Variable...25 Operation...25 TaggedElement...25 JTags

3 Inleiding RevJava is een programma dat programmeurs de mogelijkheid geeft Java byte -code in te lezen en hierop kritieken te laten uitvoeren. Hiervoor wordt er door RevJava een intern meta -model opgebouwd tijdens het inlezen. Het zou echter mooi zijn als RevJava toepasbaar was op meerdere (OO) talen. Hiervoor moest het meta-model aangepast worden. Dit document beschrijft het model van RevJava dat aangepast is zodat het ook geschikt is voor de Microsoft Intermediate Language (MSIL of IL). We moesten bij het ontwerpen van het model rekening houden met enkele belangrijke punten: We moesten proberen het model zo generiek mogelijk te houden, omdat de critics in RevJava zo veel mogelijk op dat niveau uitgevoerd moeten worden. Tevens is een generiek model makkelijker wanneer er nog andere talen aan het model toegevoegd zouden moeten worden Gert Florijn had in zijn documentatie over RevJava een aantal mogelijke verbeteringen voor het model aangegeven, we hebben enkele daarvan doorgevoerd in het model (in overleg met Gert Florijn) Het model was erop gericht om type-gerelateerde regels op ingelezen code te kunnen loslaten en daarom waren niet alle aspecten van Java gerepresenteerd in het model. We moesten er rekening mee houden dat men deze in de toekomst eventueel wel zal willen toevoegen Rekening houdend met bovenstaande punten zijn we als volgt te werk gegaan: We hebben een onderzoek gedaan naar de grammatica van C# We hebben gekeken wat de verschillen tussen C# en de MSIL zijn door o.a. C# code te compileren en de MSIL daarvan uit te pluizen We hebben de MSIL specifieke punten onderzocht welke niet in C# zitten We hebben de verschillen en overeenkomsten bekeken tussen de MSIL en Java en de invloeden hiervan op het model bepaald Er is gekozen om in eerste instantie uit te gaan van de C# grammatica, omdat de grammatica van C# in tegenstelling tot de MSIL prima gedocumenteerd was. Tevens is C# speciaal ontwikkeld voor.net en beslaat een groot deel van de MSIL. De MSIL is echter generieker dan de MSIL die vanuit C# te compileren is, en wij moesten dus ook bepalen welke MSIL eigenschappen buiten de scope van C# liggen. Hierna konden we bepalen hoe het model er uit zou moeten zien om zowel voor Java als de MSIL geschikt te zijn. Uiteindelijk vonden we de ECMA specificatie van de MSIL en hebben we dit naast onze bevindingen gelegd om één en ander te checken. 3

4 Het generieke model De applicatie is gebaseerd op het inlezen van gecompileerde code. Met behulp van een parser voor de desbetreffende code wordt er een object structuur gevuld. Bij het ontwikkelen van het meta-model is zoveel mogelijk rekening gehouden met het inpassen van taal-plugins. Dit betekent dat een taal met zo weinig mogelijk moeite toegevoegd moet kunnen worden. Er is vooral onderzoek gedaan naar de entiteiten die in gecompileerde CSharp (MSIL code) en Java files (class files). Requirements op het generieke model: Het model moet eenvoudig aanpasbaar zijn voor andere talen. Dit houdt in dat voor de algemeen in programmeertalen aanwezige entiteiten een model aanwezig is. Het model moet een basis vormen om metrieken te kunnen berekenen. Op de verschillende entiteiten moeten kritieken losgelaten kunnen worden. Eerst worden de entiteiten beschreven waarvoor voor elke taal plugin een subclass geschreven moet worden. Het hart van het model: Feature GenType GenField GenMethod innerclasses outerclass constructor 1..n super 0..n instance of TypeRef GenInterface implementerende classes 0..n GenClass Figuur 1: Types Interfaces 0..n 4

5 Het hart van het model bestaat uit classes, interfaces, methoden en fields. Dit zijn entiteiten die in alle object georiënteerde talen aanwezig zijn. 5

6 GenType Het type is de super van classes en interfaces. Het is nodig om deze class te herdefiniëren omdat een herdefinitie XDeploymentUnit van DeploymentUnit in een taal X een set van XTypes bevat. Het bevat de volgende fields: GenNameSpace holder; een Type zit in precies 1 namespace. GenField[] fields; types kunnen 0 of meer fields bevatten. GenMethod[] methods; types kunnen 0 of meer fields bevatten. GenMethod[] creators; de 0 tot n methoden waarin deze class geinstantieerd wordt. GenMethod[] checkers; de 0 tot n methoden waarin deze class aangeroepen wordt. GenMethod[] argdecls; 0 of meer argument declaraties. GenMethod[] localdecls; 0 of meer lokale declaraties. GenType[] knowingtypes; de 0 tot n types die dit type kennen. GenType[] usingtypes; de 0 tot n types die dit type gebruiken. GenType[] subclasses; de 0 tot n subclasses GenType[] innerclasses; de 0 tot n innerclasses GenType outerclass; de outerclass (0 of 1) TypeRef[] usedtypes; de 0 of meer gebruikte types TypeRef[] knowntypes; de 0 of meer bekende types: dus de gebruikte types maar ook de classes die bij de creators en checkers e.d. horen. TypeRef superclass; knowing types 0..n using types 0..n GenType GenField subclasses 0..n innerclasse s outerclas s creators 0..n checkers 0..n arg decl 0..n locale decl 0..n GenMethod gebruikte types 0..n bekende types 0..n super 0..n instance of Figuur 2: Type TypeRef 6

7 ElementTags 1 TaggedElementImpl Interface TaggedElement Interface GenType Figuur 2.1: GenType, TaggedElement en ElementTags TaggedElement is de superclass van GenType. TaggedElement bestond alleen uit een interface, dit willen we veranderen naar een interface TaggedElement en een class TaggedElementImpl die de interface implementeert. We kunnen dan op dit niveau aangeven dat een TaggedElement een ElementTags bevat, in plaats van dat GenType dit zelf moet declareren. GenClass Een class bevat naast de fields van Type: TypeRef[] interfaces: de door deze class geïmplementeerde interfaces (0 of meer). GenMethod[] constructors: iedere class heeft tenminste één constructor. GenInterface Een class bevat naast de fields van Type: GenClass[] implementors; de classes die deze interface implementeren. GenType GenMethod constructor 1..n GenInterface implementerende classes 0..n GenClass TypeRef Interfaces 0..n Figuur 3: GenClass en GenInterface 7

8 Features Features zijn de bouwstenen waaruit een GenType is opgebouwd. Dit zijn dus over het algemeen methoden en fields. Een Feature heeft de volgende fields: GenType holder; een feature is bevat in precies één type. GenMethod reader; elke feature wordt door 0 of meer methoden gelezen. Feature readers 0..n Variable overwritten methods 0..n overrides methods 0..n GenMethod Argument GenEvent fir e add remov e LocalVar CodeBlock GenField GenProperty get set writers 0..n exceptions 0..n result type 0/1 known types 0..n used types 0..n Operation heeft type 1 TypeRef Figuur 4: Feature, GenProperty, GenEvent, GenMethod en GenField. Feature is een subclass van TaggedElement (origineel JTaggedElement) net zoals JTypeElement dat origineel was. TaggedElement bestond echter alleen uit een interface, dit willen we veranderen naar een interface TaggedElement en een class TaggedElementImpl die de interface implementeert. We kunnen dan op dit niveau aangeven dat een TaggedElement een ElementTags bevat, in plaats van dat Feature dit zelf moet declareren. 8

9 ElementTags 1 TaggedElementImpl Interface TaggedElement Interface Feature Figuur 4.1: Feature, TaggedElement en ElementTags 9

10 GenMethod Een methode bevat een CodeBlock. Dit CodeBlock bevat alle operaties en lokale variabelen van een methode. De fields die de klasse Method bevat zijn: GenMethod overwrittenmethod: de methoden die door deze methode geherdefinieerd worden. GenMethod overridesmethod: de methoden die deze methode herdefiniëren.. TypeRef resulttype; het return type(kan void zijn, of in het geval van een constructor niet aanwezig). TypeRef[] exceptions; de exceptions die afgevangen worden in de methode. TypeRef[] usedtypes; de types die in deze methode gebruikt worden. TypeRef[] knowntypes; de types die bekend zijn in de methode. GenArgument[] arguments; de parameters van de methode. CodeBlock codeblock; GenField TypeRef type; het type van het Field. GenMethod[] writers; de methoden die dit field veranderen. boolean isbuiltin; is het een int, double, e.d.? boolean ismultiple; is het een array? boolean ispointer; is het een pointer? 10

11 GenProperty TypeRef type; het type van de Property. GenField field; het field dat bij de property hoort. GenMethod get; GenMethod set; Op dit moment zijn de properties in het model gespecificeerd naar de Properties die in de MSIL zitten. Wanneer er programmeertalen toegevoegd moeten worden met soortgelijke constructies kan er een subclass toegevoegd worden wanneer het niet in GenProperty past. GenProperty Interface Feature Interface GenProperty get 0/1 set 0/1 Interface GenMethod TypeRef heeft type 1 other 0/1 callers 1 Interface GenField Figuur 5: GenProperty Een GenProperty is gedefinieerd voor een field X en bevat links naar een aantal GenMethods die op dat field werken: o een get_x() methode o een set_x() methode Minimaal één van deze twee moet aanwezig zijn anders is het een compile-time error. Verder kent een GenProperty nog een 'other' link die bedoeld is voor andere methodes die op het field werken en in een Property gedefinieerd kunnen zijn. Deze functie is in C# niet ingebouwd. 11

12 GenEvent TypeRef type; het type van het Event. GenMethod addon GenMethod removeon; GenMethod fire; Op dit moment zijn de events in het model gespecificeerd naar de Events die in de MSIL zitten. Waneer er programmeertalen toegevoegd moeten worden met soortgelijke constructies kan er een subclass toegevoegd worden wanneer het niet in GenEvent past. GenEvent Interface Feature Interface GenEvent addon 0/1 removeon 0/1 Interface GenMethod TypeRef heefttype 1 fire 0/1 other 0/1 callers 0..n Figuur 6: GenEvent Een GenEvent bevat de methodes 'addon' en 'removeon', 'fire' en 'other' zijn optioneel. In C# is 'other' niet beschikbaar. Een event heeft een TypeRef naar een IlType waarvoor het gedefinieerd is. GenEvent en GenProperty geven aan dat we ervan uit gaan dat er ook nog events en properties in andere programmeertalen dan C# voorkomen. We hebben er nu voor gekozen om geen speciale subclass (b.v. IlProperty,IlEvent) aan te maken aangezien veel talen ook al naar MSIL gecompileerd kunnen worden en de talen dus binnen dit model passen. Als er toch een uitbreiding moet plaatsvinden voor het toevoegen van een andere taal is dit vrij eenvoudig te doen. Het codebloc k, de operaties, de variabelen, de argumenten en lokale vars zijn voor alle talen hetzelfde 12

13 GenNamespace Een namespace is een groepering van types. Een namespace heeft een hiërarchische structuur die gebaseerd is op de naamgeving. De consequenties hierva n zijn niet voor alle programmeertalen gelijk dus het gedrag van de namespaces in een bepaalde taal zal in de plugin voor die taal gedefinieerd moeten worden. De members van een namespace zijn: GenSystem holder; GenType[] types; GenNameSpace[] children; een namespace kan 0 of meer subnamespaces bevatten. Bij sommige talen (zoals Java) is deze relatie alleen gebaseerd op naamgeving en heeft verder geen consequenties. Bij C# kan een namespacemember van een geneste namespace bij de members van de parent-namespace (mits de tags op die members dat toe laat). GenNameSpace parent; de namespace die deze namespace bevat. DeploymentUnit Een DeploymentUnit representeert de door de gebruiker gegroepeerde types zoals een jar file in Java of een assembly in dotnet. GenType[] types; GenNameSpace[] namespaces; GenSystem De System class kan meerdere DeploymentUnits bevatten. DeploymentUnit[] deploymentunits; GenNameSpace[] namespaces; GenRepository GenSystem DeploymentUnit GenType GenNameSpace Figuur 7: GenNameSpace, DeploymentUnit, GenSystem 13

14 Het concrete deel van het model Naast de entiteiten die door een taal plug-in geherdefinieerd moeten worden, zijn er ook nog classes die geen herdefinitie door een plug-in vereisen. Dit zijn: TypeRef: deze class representeert een re ferentie naar een type. In de UML diagrammen is te zien waar de typereferenties naar voren komen. GenType Refereert TypeRef CodeBlock: de stack code, calls, casts e.d. van een methode. (zie GenFeature) LocalVar: de lokale variabelen in een CodeBlock. Argument: Deze class representeert de parameters van een methode. Operation en al zijn sub-classes: de operaties die uitgevoerd worden vanuit een CodeBlock. CodeBlock 1 Operation Method TypeOperation heeft type 1 TypeRef parameters 0..n return waarde 0/1 verwacht type 1 roept aan 1 OpCall OpCheck OpCreate OpFieldRef manipulatie van 1 Field Figuur 8: TypeOperation 14

15 TypeOperation was origineel JTypeElementPart en was toen de superclass van OpCall, OpCheck, OpCreate, OpFieldRef en JVariable. We hebben gekozen om OpCall, OpCheck, OpCreate en OpFieldRef subclass te maken van TypeOperation welke op zijn beurt weer een subclass is van Operation. Wanneer er nu andere operaties toegevoegd moeten worden (return-statements b.v.) welke geen TypeOperation zijn kunnen deze een subclass worden van Operation. 15

16 MSIL specifiek Dit document gaat dieper in op de MSIL -specifieke elementen welke aan het generieke model zijn toegevoegd. IlNameSpace De interface IlNameSpace is een subclass van GenNameSpace en representeert de namespaces welke in MSIL gedefinieerd kunnen worden. IlNamespaces zijn gedefinieerd in één of meerdere IlModules, welke bevat zijn in een IlAssembly. Interface IlRepository Interface IlSystem IlNameSpace Interface DeploymentUnit Interface CritiquedElement Interface IlAssembly Interface GenNamespace Interface IlModule Interface IlNameSpace Interface IlType Figuur 9: IlNamespace Een IlAssembly bevat 1 of meerdere IlModules: gecompileerde units bestaande uit metadata en MSIL. De metadata beschrijft de structuur van de module. Een IlModule kan niet onafhankelijk bestaan maar moet bevat zijn in een IlAssemly. Een module kan ook globale methodes en fields bevatten, deze worden echter niet in het model opgenomen. Een IlNameSpace bevat IlTypes, maar kan ook sub-namespaces bevatten. De toplevel namespace die door de programmeur wordt gedeclareerd, wordt onderdeel van de global namespace. Sub-level namespaces worden onderdeel van de omvattende namespace. Wanneer er geen namespace door de programmeur is gedeclareerd staan de types in de global namespace. 16

17 De naam van een namespace impliceert niets over de directory structuur die wordt opgebouwd. In MSIL kan een module ook globale methodes en fields bevatten, deze worden momenteel in het model niet opgeslagen aangezien er nu nog niets mee wordt gedaan. IlTypes We hebben ervoor gekozen om de interfaces IlClass en IlInterface een gezamenlijke super interface IlType te geven. Op deze manier kan men door het programma heen gebruik blijven maken van een algemeen type, met behoud van de informatie dat men op MSIL code aan het werken is. In het oorspronkelijke model van RevJava was dit al aanwezig d.m.v. JType, door de generalisering van het model is dit echter wat anders in het model geplaatst. IlType Interface IlNameSpace Interface IlType Interface IlField knowing types 0..n using types 0..n subclasses 0..n Interface GenEvent Interface GenProperty innerclasses outerclass creators 0..n checkers 0..n Interface IlMethod arg decl 0..n locale decl 0..n Interface IlType super 0..n bekende types 0..n gebruikte types 0..n instance of TypeRef Figuur 10: IlType Een IlType kan IlFields, GenEvents, GenProperties en IlMethods bevatten. Er wordt bijgehouden wat de super- en sub-classes zijn van een IlType en of een IlType geneste classes bevat, of dat het zelf een geneste class is (in welk geval er een outerclass wordt opgeslagen). Alle bekende IlTypes worden bijgehouden en daarnaast ook een tabel waarin de IlTypes worden opgeslagen die door het IlType gebruikt worden. 17

18 IlClass In het onderstaande figuur is te zien dat IlClass subclass is van zowel IlType als GenClass. Dit hebben we gedaan omdat dan het model dan generieker opgezet is. GenType is de superclass van GenClass en GenInterface. Een GenClass heeft door overerving via GenType en TaggedElement een object ElementTags waarin opgeslagen wordt welke tags op het type gedefinieerd zijn. IlClass Interface IlType Interface GenClass Interface IlClass TypeRef Interfaces 0..n boolean isenum, isstruct, isattribute?? destructor 0/1 constructor 1..n Interface IlMethod Figuur 11: IlClass In een IlClass wordt bijgehouden of de class een Enum, Struct of Attribute is via het zetten van een flag. Tevens wordt er bijgehouden welke IlInterfaces door de class geïmplementeerd worden en of hij constructoren (de constructor zonder argumenten is altijd aanwezig) en een destructor methode definieert. Constructoren en destructoren worden bijgehouden als methode met een constuctor - of destuctor -flag die gezet wordt. 18

19 IlInterface Een IlInterface is net als IlClass een subclass van IlType, daarnaast is het nog een subclass van GenInterface. Ook een interface (IlInterfaceImpl) heeft een ElementTags waarin opgeslagen wordt welke tags erop gedefinieerd zijn. Tevens wordt bijgehouden welke IlClasses de interface implementeren. IlInterface Interface IlType Interface GenInterface Interface IlInterface implementerende classes 0..n Interface IlClass Figuur 12: IlInterface 19

20 Feature Feature is de oude JTypeElement van RevJava. GenMethod, GenField, GenEvent en GenProperty zijn sub-classes van Feature, GenMethod en GenField zijn nog gespecialiseerd naar Java en MSIL specifieke classes. ElementTags 1 Feature TaggedElementImpl Interface TaggedElement Interface Feature Interface GenMethod Interface GenField Interface GenEvent Interface GenProperty Interface IlMethod Interface IlField Interface IlType Figuur 13: Feature 20

21 IlMethod Een IlMethod bevat dezelfde elementen zoals aangegeven in het generieke model, alleen zijn readers, submethods en alle types (supertypes,resulttypes enz.) IlTypes. IlMethods kunnen als MSIL - specifieke tags 'Family' en 'FamAndAssem' op zich gedefinieerd hebben. Interface Feature Variable Interface GenMethod Variable IlMethod Interface Variable readers 0..n submethods 0..n supertypes 0..n Interface IlMethod Interface Argument TypeRef result type 0/1 exceptions 0..n used types 0..n known types 0..n Interface CodeBlock Interface LocalVar Interface Operation Figuur 14: IlMethod Speciale IlMethods zijn de constructor, welke in MSIL 'ctor' wordt genoemd, en de static constructor welke in MSIL 'cctor' wordt genoemd. 21

22 IlField Een IlField heeft readers en writers van het type IlMethod. De TypeRef is een referentie naar een IlType. Ook een IlField heeft als specifieke tags 'Family' en 'FamAndAssem'. Interface Feature IlField Interface GenField Variable Interface IlField Interface IlMethod TypeRef heeft type 1 readers 0..n writers 0..n Figuur 15: IlField 22

23 Java specifiek We hebben er naar gestreefd de MSIL in het model toe te voegen op zo'n manier dat er voor het oorspronkelijke Java model niet al te veel zou veranderen. Het model is op bepaalde punten generieker gemaakt, zodat de oorspronkelijke Java elementen iets anders in het model hangen, maar dezen zijn wat betreft gedrag niet wezenlijk veranderd. Dit was mogelijk omdat het ontwerp van het oorspronkelijke model al vrij generiek van opzet was. Hieronder staat het gehele model. Element Operation ElementTags NamedElement GenRepostitory TypeOperation MethodTags TypeTags PropOrEventTags CritiquedElement JRepostitory IlRepostitory OpCheck OpCall OpCreate VariableTags FieldTags CodeBlockTags IdElement IlModule GenNamespace GenSystem IlSystem JSystem OpFieldRef TaggedElement JPackage IlNamespace DeploymentUnit Feature CodeBlock GenType JJar IlAssembly GenClass GenInterface Variable GenField GenMethod JClass IlClass JInterface IlInterface JField IlField JMethod GenProperty IlMethod GenEvent JType IlType LocalVar Argument Figuur 16: Complete model 23

24 Verschillen met het oude model De belangrijkste verschillen met het oude model worden hieronder behandeld: GenRepository GenRepository zit in het model op de plek waar eerst de JRepository zat, maar is slechts als generalisatie van JRepository en IlRepository toegevoegd. GenSystem GenSystem is de generalisatie van JSystem en IlSystem en zit in het model waar JSystem oorspronkelijk zat. GenNameSpace GenNameSpace is de generalisatie van JPackage en IlNameSpace. Tevens is het nu mogelijk geneste elementen hierin aan te geven. GenType We wilden aparte interfaces maken voor MSIL classes en Java classes en hadden daarbij twee opties (zie figuur): het aanmaken van een GenType, JType en IlType met daaronder de verschillende typesoorten, of het aanmaken van GenType, GenClass en GenInterface en dit nog verder gespecialiseerd. We kozen voor de laatste optie, omdat het model dan generieker van opzet bleef. GenType JType IlType JClass JInterface IlClass IlInterface Optie 1. GenType GenClass GenInterface JClass IlClass IlInterface JInterface Optie 2. Figuur 17: GenType opties 24

25 Uiteindelijk hebben we JType en IlType toch nog toegevoegd, omdat in het model dan een algemeen type gebruikt kan waarbij toch bekend was dat het MSIL types betreft. Feature TypeElementPart is verandert in Feature omdat dit beter aangeeft wat de sub-classes hiervan voor de types betekenen. Oorspronkelijk waren alleen JMethod en JField subclasses, nu hebben we een generieke methode class GenMethod waarvan JMethod en IlMethod subclasses zijn. Tevens is er een generieke class GenField, waarvan JField en IlField de sub-classes zijn. Aangezien er in MSIL-types properties en events gedeclareerd kunnen worden zijn deze als GenEvent en GenProperty toegevoegd onder Feature. We gaan ervan uit dat ook andere tale n properties of events kunnen bevatten, wanneer dit niet onder te brengen is in GenEvent of GenProperty kan het model nog gespecialiseerd worden. Variable De oude JVariable hebben we opgesplitst in Argument en LocalVar, tevens is het Variable genoemd. We hebben Variable TaggedElement als superclass gegeven, omdat er op Arguments en LocalVars enkele tags mogelijk zijn. Operation In het oorsprokelijke model was er sprake van een TypeElementPart die de superclass was van de verschillende JOperation en JVariable. De subclasses van JOperation waren eigenlijk type -gerelateerde relaties, vandaar dat we de class TypeOperation hebben toegevoegd als superclass hiervoor. TypeOperation op zijn beurt is weer de subclass van Operation geworden, zodat er in de toekomst ook niet-type-gerelateerde relaties kunnen worden toegevoegd als subclass van Operation. TaggedElement TaggedElement was eerst alleen een interface maar hiervan willen we een interface met implementatie van maken, zodat er op dit niveau dan een ElementTags gedeclareerd kan worden die de subclasses van TaggedElement overerven. JTags JTags is veranderd in een implementatie structuur (zie figuur) in plaats van een enkele implementatie class, omdat we een verschil wilden maken tussen de verschillende soorten TaggedElements met hun tags. Voor sommige tags was de betekenis in MSIL en Java gelijkwaardig, enkele tags hebben we kunnen veralgemeniseren en beide talen hebben een aantal specifieke tags in het model. ElementTags MethodTags GenTypeTags FieldTags PropOrEventT CodeBlockTag Figuur 18: ElementTags VariableTags 25

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

Analyse op.net software

Analyse op.net software Analyse op.net software Auteur: Casper de Lange Stud. Nr.: 9745467 E-mail: clange@cs.uu.nl Een woord van dank gaat uit naar de volgende personen: - Gert Florijn en Jurriaan Hage voor hun begeleiding tijdens

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

Introductie in C++ Jan van Rijn. September 2013

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

Nadere informatie

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

Refactoring 1: het aanpassen van het generieke model.

Refactoring 1: het aanpassen van het generieke model. Refactoring 1: het aanpassen van het generieke model. Nog even voor de duidelijkheid een globaal overzicht van de oude opbouw van de RevJava applicatie: User Interface Parser Critcs en properties files

Nadere informatie

Jaco Peeman en Casper de Lange November 2002 ABSTRACT... 2 INDEX... 2

Jaco Peeman en Casper de Lange November 2002 ABSTRACT... 2 INDEX... 2 Abstract Dit artikel is geschreven in het kader van het afstuderen van Jaco Peeman en Casper de Lange, studenten aan de universiteit van Utrecht. Het onderzoek is gedaan in opdracht van Gert Florijn van

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

Objective-C, wat is dat?

Objective-C, wat is dat? Objective-C, wat is dat? ALbert Mietus Vorig jaar vroeg een collega, die net een mooie Apple Notebook gekocht had of ik wist wat Objective-C was. Zijn systeem gebruikte dat veel. Toevalling heb ik, jaren

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

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

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

Dynamiek met VO-Script

Dynamiek met VO-Script Dynamiek met VO-Script Door Bert Dingemans DLA Ontwerp & Software bert@dla-architect.nl Inleiding Op de SDGN nieuwsgroep voor Visual Objects ontstond laatst een draad van berichten over de nieuwe libraries

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

Java Generics: een introductie

Java Generics: een introductie 25/Langer 24-03-2004 11:13 Pagina 17 Deze zomer zal de 1.5-versie van de Java 2 Standard Edition beschikbaar komen. J2SE 1.5 zal ondersteuning bieden voor generieke types en methods. Deze nieuwe feature

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. Cursus Python

Programmeren. Cursus Python Programmeren Cursus Python Cursus Python Omschrijving In deze cursus leren de deelnemers te programmeren in de objectgeoriënteerde programmeertaal Python. Python is een taal die vaak wordt gebruikt voor

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

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

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

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

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

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

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

Access voor beginners - hoofdstuk 25

Access voor beginners - hoofdstuk 25 Access voor beginners - hoofdstuk 25 Handleiding van Auteur: OctaFish Oktober 2014 Werken met Klassemodules Tot nu toe heb ik in de cursus Access veel gewerkt met formulieren, en met procedures en functies.

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

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

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

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

Modulewijzer Tirdat01

Modulewijzer Tirdat01 Modulewijzer Tirdat01 W. Oele 25 augustus 2008 1 Inhoudsopgave 1 Inleiding en leerdoelen 3 2 Voorkennis 3 2.1 tirprg01 en tirprg02........................ 3 2.2 tirprg03.............................. 4

Nadere informatie

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

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

Nadere informatie

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

NHibernate als ORM oplossing

NHibernate als ORM oplossing NHibernate als ORM oplossing Weg met de SQL Queries Wat is ORM? ORM staat in dit geval voor Object Relational Mapping, niet te verwarren met Object Role Modeling. ORM vertaalt een objectmodel naar een

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 unit test is geen integratie test. Niet het hele systeem, maar onderdelen van een systeem worden getest.

Een unit test is geen integratie test. Niet het hele systeem, maar onderdelen van een systeem worden getest. WAT IS EEN UNIT TEST? Een unit test is een test om de functionaliteit van stukken code te controleren. Een goede unit test waarborgt een consistente werking van een klein onderdeel (een unit ) van de broncode.

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

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

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

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

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

Nadere informatie

int getaantalpassagiers{): void setaantalpassagiers(int aantalpassagiers);

int getaantalpassagiers{): void setaantalpassagiers(int aantalpassagiers); bestand voertuig.h biz. 1 van 2 #ifndef VOERTUIG H #define VOERTUIG H #include using std::string; class Voertuig { public: Voertuig(); Voertuig(const string& inschrijvingsnumrner, const string&

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

Leren programmeren in C# Deel 4 - Objectoriëntatie

Leren programmeren in C# Deel 4 - Objectoriëntatie Leren programmeren in C# Deel 4 - Objectoriëntatie Michiel Rotteveel Leren programmeren in C# Deel 4 - Objectoriëntatie Brinkman Uitgeverij Amsterdam 2017 Leeswijzer double gereserveerde woorden C# PictureBox

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

Introductie en even voorstellen

Introductie en even voorstellen Introductie en even voorstellen Onlangs is PHP5 uitgekomen. PHP5 is een grote stap voorwaards voor iedereen die met deze populaire programmeertaal werkt. In deze presentatie bekijken we de belangrijkste

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

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

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

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

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

Modulewijzer tirprog02/infprg01, programmeren in Java 2

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

Nadere informatie

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

Klassen. Hoofdstuk Klassen

Klassen. Hoofdstuk Klassen 212 Hoofdstuk 12 Klassen blz. 213 blz. 214 12.1 Klassen Een klasse is een groepje methoden. Dat hebben we in de programma s tot nu toe wel gezien: we definieerden steeds een of meerdere klassen (in ieder

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

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

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

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

IDE gebruik en introductie Java. Programmeertechnieken, Tim Cocx

IDE gebruik en introductie Java. Programmeertechnieken, Tim Cocx IDE gebruik en introductie Java Programmeertechnieken, Tim Cocx Discover thediscover world atthe Leiden world University at Leiden University IDE Gebruik Discover thediscover world atthe Leiden world University

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

VB Magazine Online 2004 01/08 1 / 6

VB Magazine Online 2004 01/08 1 / 6 Een van de krachtigste elementen binnen Visual Basic 2003 vind ik wel de mogelijkheid om objecten te overerven; ook wel inheritance genoemd. U kunt niet alleen uw eigen classes en business objecten overerven,

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

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

Inhoud. Eindtoets. Introductie 2. Opgaven 3. Bijlage bij opgaven 9. Terugkoppeling 12 Open Universiteit Inhoud Introductie 2 Opgaven 3 Bijlage bij opgaven 9 Terugkoppeling 12 1 Open Universiteit Objectgeoriënteerd programmeren in Java 1 I N T R O D U C T I E Deze eindtoets is bedoeld als

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

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

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

Unified Modeling Language

Unified Modeling Language Unified Modeling Language Een introductie voor leden van de expertgroep Informatiemodellen Harmen Mantel, Ordina ICT Management & Consultancy, werkzaam voor KING DOELSTELLING PRESENTATIE GEMEENSCHAPPELIJKE

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

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

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

Uitwerking Tentamen Modelleren en Programmeren - versie 1 Woensdag 1 februari 2017, uur Uitwerking Tentamen Modelleren en Programmeren - versie 1 Woensdag 1 februari 2017, 17 20 uur Schrijf op elk ingeleverd blad je naam. Schrijf op het eerste blad ook je studentnummer en het aantal ingeleverde

Nadere informatie

Objectgeoriënteerd programmeren in Java 1

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

Nadere informatie

Programmeren in C++ (deel 1)

Programmeren in C++ (deel 1) FHT&L MODULE BESCHRIJVING Programmeren in C++ (deel 1) PRO4 Samenstelling: Cees van Tilborg, Thijs Dorssers Datum: september 2011 Versie: 1h Titel: Programmeren in C++ Identificatie Progresscode: PRO4

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

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

Java virtuele machine JVM

Java virtuele machine JVM Implementatie Java Java virtuele machine JVM Java programma vertaald naar byte code instructies Byte code instructies uitgevoerd door JVM JVM is processor architectuur kan in principe in hardware worden

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

Programmeren 3. 1. Het gesloten boek examen 1.1

Programmeren 3. 1. Het gesloten boek examen 1.1 Programmeren 3 1. Het gesloten boek examen Het gesloten boek examen bestaat uit meerkeuzevragen of vragen waarin gevraagd wordt een stukje code te schrijven of om het resultaat van een stuk code te voorspellen.

Nadere informatie

9 Meer over datatypen

9 Meer over datatypen 9 Meer over datatypen We hebben al gezien dat het gebruik van symbolische constanten de leesbaarheid van een programma kan verbeteren. Door een geschikte naam (identifier) voor een constante te definiëren,

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

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

Uitwerking Tentamen Modelleren en Programmeren - versie 1 Woensdag 1 februari 2017, uur Uitwerking Tentamen Modelleren en Programmeren - versie 1 Woensdag 1 februari 2017, 17 20 uur Schrijf op elk ingeleverd blad je naam. Schrijf op het eerste blad ook je studentnummer en het aantal ingeleverde

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

public Bier ( string N, double P, Brouwerij B) { Naam = N; AlcoholPerc = P; Brouwer = B;

public Bier ( string N, double P, Brouwerij B) { Naam = N; AlcoholPerc = P; Brouwer = B; Beschouw bijvoorbeeld de twee onderstaande klassen, waarvan de attributen en eigenschappen geannoteerd zijn met bijkomende XML-annotaties: using System ; using System. Xml ; using System. Xml. S e r i

Nadere informatie

Datastructuren Programmeeropdracht 3: Expressies. 1 Expressies. Deadline. Dinsdag 8 december 23:59.

Datastructuren Programmeeropdracht 3: Expressies. 1 Expressies. Deadline. Dinsdag 8 december 23:59. Datastructuren 2015 Programmeeropdracht 3: Expressies Deadline. Dinsdag 8 december 23:59. Inleiding. Deze opdracht is losjes gebaseerd op Opdracht 5.13.2 in het boek van Drozdek. U wordt gevraagd expressies

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

C++ C++ als een verbetering van C. Abstracte datatypen met classes. Constructoren en destructoren. Subklassen. binding van functies

C++ C++ als een verbetering van C. Abstracte datatypen met classes. Constructoren en destructoren. Subklassen. binding van functies C++ C++ als een verbetering van C Abstracte datatypen met classes Constructoren en destructoren Subklassen binding van functies 1 Commentaar In C: /* Deze functie berekent de omtrek van een cirkel */ float

Nadere informatie

INLEIDING... 1 AFSPRAKEN... 2 INHOUDSOPGAVE...

INLEIDING... 1 AFSPRAKEN... 2 INHOUDSOPGAVE... Inhoudsopgave INLEIDING... 1 AFSPRAKEN... 2 INHOUDSOPGAVE... 3 1 OOP EN.NET... 11 1.1 Inleiding... 11 1.2 Kwaliteit van een programma... 11 1.2.1 Correctheid en bruikbaarheid... 11 1.2.2 Robuustheid...

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

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

WCF claims-based authorization

WCF claims-based authorization WCF claims-based authorization In elk project waar ik tot nu toe aan heb meegewerkt is beveiliging altijd een belangrijk onderdeel gebleken. De vraag is vaak wat de meest geschikte manier van authenticeren

Nadere informatie

Debugging in embedded en native systemen met GDB

Debugging in embedded en native systemen met GDB Debugging in embedded en native systemen met GDB A.M. ten Doesschate July 15, 2015 Abstract Een korte beschrijving : intro gebruik met welke tools en hulpmiddelen van de GDB setup en een summier aantal

Nadere informatie

Deel II: Modelleren en software ontwikkeling. Hoofdstuk 7 Software ontwikkeling - Overzicht. Naïeve benadering

Deel II: Modelleren en software ontwikkeling. Hoofdstuk 7 Software ontwikkeling - Overzicht. Naïeve benadering Deel II: Modelleren en software ontwikkeling Hoofdstuk 7 Software ontwikkeling - Overzicht 2005 Prof Dr. O. De Troyer, pag. 1 Naïeve benadering De vereisten voor het systeem worden geformuleerd en op basis

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

Programming Content Management Server 2002

Programming Content Management Server 2002 Met behulp van Content Management Server 2002 (CMS) kun je eenvoudig te onderhouden websites bouwen en beheren. De business driver van CMS is het gebruiksvriendelijk beheer van een website, in het bijzonder

Nadere informatie

INFITT01 Internettechnologie WEEK 2

INFITT01 Internettechnologie WEEK 2 INFITT01 Internettechnologie WEEK 2 Programma Contexts Listeners Scope/Attributes Thread safety Taken container Een servlet draait in een container (servlet container). De container, die ten dienste van

Nadere informatie

Klassen en interface worden gedeclareerd in een andere klasse/interface. Vermeiden Altijd static

Klassen en interface worden gedeclareerd in een andere klasse/interface. Vermeiden Altijd static GUI: Overerving: Klassen niet gemeenschappelijke eigenschappen. Deze eigenschappen kinnen in een meer algemene klasse worden geschreven. Vb student, docent persoon Uitbreiding van reeds bestaande klassen.

Nadere informatie

C# 6 Door Alex en Chris van Beek

C# 6 Door Alex en Chris van Beek C# 6 Door Alex en Chris van Beek Over ons Enthousiastelingen Software Architecten bij Luminis Arnhem B.V. Gespecialiseerd in Microsoft technologie:.net, Azure en Windows Twitter: @Beekje en @cbeek Blog:

Nadere informatie

Dit document bevat informatie over make bij het eerstejaars college Programmeermethoden, Universiteit Leiden, najaar 2010, zie

Dit document bevat informatie over make bij het eerstejaars college Programmeermethoden, Universiteit Leiden, najaar 2010, zie Dit document bevat informatie over make bij het eerstejaars college Programmeermethoden, Universiteit Leiden, najaar 2010, zie www.liacs.nl/home/kosters/pm/ Met dank aan allen die aan deze tekst hebben

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

vbg.vbnet.beginner Omgaan met files en directories binnen Visual Basic.NET

vbg.vbnet.beginner Omgaan met files en directories binnen Visual Basic.NET In Visual Basic 6 was het werken met bestanden en mappen niet altijd even vriendelijk. Met de komst van het FileSystemObject binnen de Microsoft Scripting Runtime library werd het al veel beter. Het.NET

Nadere informatie