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

Maat: px
Weergave met pagina beginnen:

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

Transcriptie

1 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 uit een aantal libraries, om zo ten slotte een executable te genereren die kan worden uitgevoerd op de machine waarop het programma gecompileerd werd. Deze manier van software produceren heeft echter een aantal nadelen: Om de libraries te kunnen gebruiken, moet de programmeur (een deel van) zijn programma in C/C++ schrijven. De gecompileerde code werkt enkel maar op het soort van systeem waarop ze gecompileerd werd. Om te draaien op andere besturingssystemen of hardware moet het programma opnieuw gecompileerd worden. Als er iets misgaat, zijn foutenboodschappen vaak zeer cryptisch ( segfault ). Sinds midden jaren 90 hebben de ontwikkelingen rond Java aangetoond dat ook andere manieren van softwareontwikkeling hun plaats hebben in de industrie. Deze ontwikkelingen zijn ook Microsoft niet ontgaan, die met hun.net raamwerk mee op deze kar trachten te springen. Volgende eigenschappen van het raamwerk zijn cruciaal: Platformonafhankelijkheid:.NET programma s worden niet meer gecompileerd naar machine-code, maar naar een tussenliggende taal, de Common Intermediate Language (CIL). Deze gecompileerde IL-code kan dan probleemloos worden uitgevoerd op elke computer die beschikt over een Common Language Runtime (CLR), net zoals een Java.class bestand kan worden uitgevoerd door elk Java Runtime Environment. Taalonafhankelijkheid: Verschillende programmeertalen kunnen gecompileerd worden naar de CIL. Zo is C#een variant van C die gecompileerd wordt naar CIL en is VB.NET een variant van Visual Basic die hiernaar gecompileerd wordt. Daarnaast bestaat er bijvoorbeeld ook de Javavariant J#. Hoog-niveau runtime environment: het CLR voorziet een aantal handige diensten aan de programmeur. Zo zal het zelf zorgdragen voor het opruimen van geheugen dat niet meer nodig is (garbage collection) en daarmee geheugenlekken vermijden. Daarnaast zorgt het bijvoorbeeld ook voor een betere afhandeling van fouten. Het CLR kan hierbij natuurlijk profiteren van het feit dat een CLI programma meer nuttige informatie bevat dan machinecode. In deze cursus beschrijven we.net aan de hand van de taal C#. We zullen hierbij vooral focussen op die aspecten waarin C# verschilt van Java. De vele gelijkenissen worden vaak niet expliciet vermeld. 1

2 2 C# C#is een C-achtige taal, die door Microsoft speciaal voor zijn.net raamwerk ontwikkeld werd. Samen met VB.NET is het de meest gebruikte.net programmeertaal. Ondanks zijn naam, is C#meer verwant met Java dan met C of C++. Het volgende voorbeeld toont het gebruik van enkele methodes uit de bibliotheekklasse Console, waarmee invoer/uitvoer naar een terminal gedaan kan worden: using System ; c l a s s Klasse { p u b l i c s t a t i c void Main ( ) { Console. Write ( What i s your name? : ) ; Console. Write ( Hello, {0!, Console. ReadLine ( ) ) ; De statische Write methode uit de Console klasse gebruikt hetzelfde idee als C s printf functie: het eerste argument is een string met daarin een aantal parameters ({0, {1,... ) en de volgende argumenten vullen deze parameters in. 2.1 Data types Een belangrijk onderscheid in C#is het verschil tussen value types en reference types. Een reference type stelt een referentie naar een bepaalde geheugenplaats op de heap voor. Als er met een variabele van een dergelijk type een toekenning x = y gebeurt, wordt gewoon deze referentie doorgegeven (zodat x en y nu naar dezelfde geheugenplaats wijzen). De waarde van een value type bevindt zich niet in zo n geheugenplaats maar staat rechtstreeks op de stack. Als er een toekenning gebeurt, wordt de waarde gekopieerd (zodat x en y nu elk hun eigen kopietje van dezelfde waarde hebben. In Java bestaat hetzelfde onderscheid: alle primitieve types (int, float,...) zijn value types, terwijl alle objecten (Object, String, Integer,...) reference types zijn. Het is in Java dan ook niet mogelijk om zelf extra soorten value types bij te maken. In C#gaat dit wel. Hiervoor dient het keyword struct. Een struct is in C#een soort van lichtgewicht object, dat zich gedraagt als een value type ipv. als een reference type. Het volgende voorbeeld illustreert dit verschil: using System ; struct KommaGetalS { 2

3 public int VoorDeKomma ; public int NaDeKomma; public override S t r i n g ToString ( ) { return VoorDeKomma +, + NaDeKomma; class KommaGetalC { public int VoorDeKomma ; public int NaDeKomma; public override S t r i n g ToString ( ) { return VoorDeKomma +, + NaDeKomma; class Test { static void Main ( ) { KommaGetalS x, y ; x. VoorDeKomma = 2 ; x.nadekomma = 3 ; y = x ; y. VoorDeKomma = 1 ; Console. WriteLine ( x = {0 en y = {1, x, y ) ; // Uitvoer : x = 2,3 en y = 1,3 KommaGetalC a, b ; a = new KommaGetalC ( ) ; a. VoorDeKomma = 2 ; a.nadekomma = 3 ; b = a ; b. VoorDeKomma = 1 ; Console. WriteLine ( a = {0 en b = {1, a, b ) ; // Uitvoer : a = 1,3 en b = 1,3 Value types kunnen impliciet worden omgezet naar reference types: int i = 5 ; object o = i ; Nu is het object o een referentie naar een geheugenplaatsje met daarin de waarde 5. (Het keyword object is een synoniem voor de klasse System.Object, 3

4 de basisklasse waarvan alle objecten overerven.) Deze impliciete omzetting wordt boxing genoemd. Ook de omgekeerde weg (unboxing) bestaat, maar hiervoor is een expliciete typecast nodig: int j = ( int ) o ; Strings zijn objecten van de klasse System.String, waarvoor het keyword string een synoniem biedt. 2.2 Soorten parameters Het onderscheid tussen value en references types wordt een beetje ingewikkelder gemaakt door het feit dat C#ook verschillende manieren biedt om parameters door te geven aan functies. De default is dat parameters met call-by-value worden doorgegeven, dwz. dat de functie een eigen kopietje krijgt van de waarde die wordt meegegeven. Bijvoorbeeld: class Test { public int g e t a l ; public static void foo ( int i ) { i = 0 ; public static void bar ( Test o ) { o. g e t a l = 7 ; o = null ; int x = 5 ; Test y = new Test ( ) ; y. g e t a l = 5 ; foo ( x ) ; bar ( y ) ; // x i s 5 en y. g e t a l i s 7 Daarnaast is het echter ook mogelijk om parameters middels call-by-reference door te geven. Dit gebeurt dmv. het keyword ref, dat zowel bij de declaratie van de methode als bij de methode-oproep vermeld moet worden. class Test { public int g e t a l ; public static void foo ( ref int i ) { i = 0 ; public static void bar ( ref Test o ) { o. g e t a l = 7 ; o = null ; 4

5 int x = 5 ; Test y = new Test ( ) ; y. g e t a l = 5 ; foo ( ref x ) ; bar ( ref y ) ; // x i s 0 en y i s n u l l Er bestaat ook een keyword out, waarmee uitvoerparameters kunnen worden aangegeven. Dit keyword doet hetzelfde als een ref, maar legt de bijkomende voorwaarde op dat de waarde die dit argument heeft op het moment van de functie-oproep niet gebruikt mag worden door de functie, en dat de functie verplicht is om dit argument zelf een waarde te geven. Tot slot is er ook nog het keyword params waarmee een methode een aantal optionele parameters kan krijgen, na zijn lijst van verplichte parameters. class Obj { private int data ; public Obj ( int v ) { data = v ; int getdata ( ) { return data ; public static void u i t v o e r ( out Obj o ) { // Dit mag n i e t : Console. WriteLine ( Foo : {0, o. getdata ( ) ) ; // Dit i s v e r p l i c h t : o = new Obj ( ) ; public static void v a r i a b e l ( int i, params int [ ] r e s t j e s ) { Console. WriteLine ( V e r p l i c h t : {0, i ) ; foreach ( int r e s t in r e s t j e s ) { Console. WriteLine ( overschot : {0, r e s t ) ; // Er z i j n ook u i t v o e r parameters : Obj o ; 5

6 o = new Obj ( 1 0 ) ; u i t v o e r ( out o ) ; Console. WriteLine ( Uitvoer : {0, o. getdata ( ) ) ; // Ook f u n c t i e s met v a r i a b e l a a n t a l argumenten kunnen! v a r i a b e l ( 1 ) ; v a r i a b e l ( 1, 2, 3 ) ; v a r i a b e l ( 1, 2, 3, 4, 5 ) ; 2.3 Naamruimtes Om verwarring tussen gelijknamige onderdelen van een programma te voorkomen, gebruikt de CLI, en dus ook C#, het concept van naamruimtes. Een naamruimte wordt gedeclareerd met behulp van het keyword namespace en kan geïmporteerd worden met het keyword using. Bij het importeren is het ook mogelijk om een afgekorte naam toe te kennen aan een naamruimte, of aan een specifieke klasse/methode uit deze ruimte. using System ; namespace j v e { namespace aa { class Obj { public string getnaam ( ) { return A p p l i c a t i e A r c hitecturen ; namespace j v e. wt { class Obj { public string getnaam ( ) { return Webtechnologie ; namespace ns { using j v e. aa ; using wobj=j v e. wt. Obj ; class Bla { Obj aa = new Obj ( ) ; j v e. wt. Obj w = new j v e. wt. Obj ( ) ; wobj wt = new wobj ( ) ; 6

7 Console. WriteLine ( aa. getnaam ( ) ) ; Console. WriteLine ( wt. getnaam ( ) ) ; Console. WriteLine (w. getnaam ( ) ) ; 2.4 Overerving Net als elke objectgerichte taal, kent ook C# het concept van overerving. Volgende declaratie betekent dat klasse Kind overerft van de klasse Ouder. public class Kind : Ouder {... C# kent zoals gebruikelijk ook polymorfisme, dwz. dat een variabele die gedeclareerd is als Ouder ook een Kind-object mag bevatten, zoals hier: Ouder oud = new Kind ( ) ; Veronderstel nu dat er een methode foo() is in de klasse Ouder en in Kind: public class Ouder { public int foo ( ) { return 3 5 ; public class Kind : Ouder { public int foo ( ) { return 1 7 ; Als we nu deze methode willen oproepen op ons object: Ouder oud = new Kind ( ) ; oud. foo ( ) ; dan moet er gekozen worden welke van deze twee (dwz. Ouder.foo() of Kind.foo()) er zal worden uitgevoerd. In tegenstelling tot bv. Java, wordt deze beslissing in C# standaard genomen tijdens het compileren van het programma. Op dat ogenblik kent de compiler natuurlijk enkel het statische type van de variabelen; dwz. hij weet enkel dat oud gedeclareerd is als een variabele van het type Ouder. Daarom zal de methode Ouder.foo() gekozen worden. Het is echter wel mogelijk om C# te instrueren dat deze beslissing moet worden uitgesteld tot tijdens de uitvoering van het programma. Op dat moment kan de runtime omgeving (CLR) zien dat hetgeen er werkelijk in de variabele oud zit, geen referentie is naar een Ouder object maar naar een Kind object, en dus 7

8 de specifiekere methode Kind.foo() selecteren. Hiervoor dienen de keywords virtual (in de superklasse) en override (in de subklasse): public class Ouder { public virtual int foo ( ) { return 3 5 ; public class Kind : Ouder { public override int foo ( ) { return 1 7 ; Dit tweede gedrag is meestal het juiste : er zijn erg weinig redenen om een methode niet virtual te maken. Zo ongeveer het enige voordeel van een niet-virtuele methode is dat ze een beetje sneller kan zijn tijdens het uitvoeren van het programma, aangezien bepaalde beslissingen al tijdens het compileren genomen konden worden. Meestal weegt dit echter niet op tegen de mogelijke bugs die hiermee geïntroduceerd kunnen worden. Daarom zal de C# compiler een waarschuwing genereren: vb7-overerving.cs(58,17): warning CS0108: Kind.foo() hides inherited member Ouder.foo(). Use the new keyword if hiding was intended Als je echter zeker bent van je zaak, kan je deze waarschuwing laten verdwijnen met het keyword new: public class Ouder { public int foo ( ) { return 3 5 ; public class Kind : Ouder { public new int foo ( ) { return 1 7 ; Zoals gebruikelijk zal een subklasse in C# alle methodes van de superklasse overerven, behalve constructors. Om vanuit een constructor van een subklasse een constructor van de superklasse aan te noemen, wordt het keyword base gebruikt: public class Ouder { public int g e t a l ; public Ouder ( int i ) { 8

9 g e t a l = i ; public class Kind : Ouder { public Kind ( int i ) : base ( i ) { g e t a l ++; Een oproep als new Kind(5) zal nu eerst als effect hebben dat de constructor van Ouder wordt opgeroepen. Een klasse in C# die zelf geen expliciete constructors aanbiedt, heeft impliciet een constructor zonder argumenten die niets doet. Als een constructor van een subklasse geen expliciete base(...) vermelding heeft, zal de constructor zonder argumenten van de superklasse toch sowieso worden opgeroepen. Indien deze constructor niet bestaat (omdat de superklasse wel minstens één constructor bevat, maar geen zonder argumenten), dan treedt er een compilatiefout op. Naast het keyword base bestaat er ook een keyword this om andere constructors van dezelfde klasse aan te roepen. public class Ouder { public int g e t a l ; public Ouder ( int i ) { g e t a l = i ; public Ouder ( ) : this ( 7 ) { public class Kind : Ouder { Kind k = new Kind ( ) ; // k. g e t a l i s Typecasts C# kent twee verschillende manieren om typecasts te doen. De standaard manier is op deze manier: Kind k = ( Kind ) ouder ; Deze instructie zal een uitzondering gooien als de typecase in kwestie niet is toegestaan. Om dit te vermijden, kan het sleutelwoord as gebruikt worden: Kind k = ouder as Kind ; Indien de typecast niet is toegestaan, wordt de waarde van de uitdrukking ouder as Kind gewoon null. Controleren of een bepaalde variabele naar een bepaald 9

10 type getypecast kan worden, kan met de is operator. De uitdrukking ouder as Kind is indentiek aan ouder i s Kind? ( Kind ) ouder : null ; 2.6 Properties Properties zorgen in C# voor een betere inkapseling van gegevens. Een property is een namaak-attribuut, dat door get en set methodes geïmplementeerd wordt. Cruciaal is dat het onderscheid tussen een echt attribuut of een property niet te zien is in code die dit attribuut/property gebruikt. Volgend fragmentje implementeert een property publiek die achter de schermen gebruik maakt van een volledig afgeschermd attribuut prive. class Obj { private int p r i v e ; public int p u b l i e k { get { return p r i v e ; s e t { i f ( value < 0) Console. WriteLine ( Niet zo n e g a t i e f, graag! ) ; else p r i v e = value ; Deze property wordt nu op net dezelfde manier gebruikt alsof deze klasse een attribuut public int publiek; had, maar achter de schermen wordt gewoon telkens de get of set methode opgeroepen. Bijvoorbeeld: Obj o = new Obj ( ) ; o. p u b l i e k = 5 ; int i = o. p u b l i e k ; o. p u b l i e k = 0 ; // Genereert foutenboodschap naar s t d o u t Dankzij deze properties wordt het refactoren van aan attribuut naar een methode of omgekeerd een veel minder ingrijpende operatie. Properties kunnen zowel read-write als read-only (of write-only, maar dat is niet zo nuttig). public int readonly { get { return 7 ; 10

11 Hoewel het technisch gezien mogelijk is om in een get-methode ook de staat van het object te veranderen, werkt dit in het algemeen eerder verwarrend en het dan ook afgeraden. 2.7 Delegates Een zeer krachtig concept in standaard C is de notie van een function pointer. Als we bijvoorbeeld volgende functie declareren: int foo ( int i ) { return i 2 ; dan is &foo een pointer naar deze functie, en deze kunnen we gebruiken zoals eender welke andere pointer. We kunnen hem bijvoorbeeld meegeven als argument aan een andere functie bar, die als argumenten een function pointer en geheel getal neemt: bar(&foo, 5 ) ; De notatie om het prototype van de functie bar te beschrijven, ziet er een beetje omslachtig uit, maar past uiteindelijk binnen de C filosofie dat een declaratie van een variabele en zijn gebruik er zoveel mogelijk hetzelfde moeten uitzien: int bar ( int ( f ) ( int i ), int j ) ; Om dit een beetje leesbaarder te maken, is een typedef vaak aangewezen: typedef int ( f u n c t i e ) ( int i ) ; int bar ( f u n c t i e f, int j ) ; Tot slot kan de function pointer dan natuurlijk gebruikt worden om de functie op te roepen: int bar ( f u n c t i e f, int j ) { return ( f ) ( j +3); In C# speelt het concept van een delegate een gelijkaardige rol. public delegate int f u n c t i e ( int i ) ; public class Test { public static int bar ( f u n c t i e f, int j ) { return f ( j +3); public static int foo ( int i ) { return i 2 ; 11

12 f u n c t i e f = new f u n c t i e ( foo ) ; int i = bar ( f, 5 ) ; Hier declareren we de delegate functie als een functie die een int als argument neemt en een int als resultaat teruggeeft. Een dergelijke delegate functioneert in C# als een type, wat we ook terugzien in de declaratie van de methode bar. Om een object van dit type aan te maken, gebruiken we de new operator, samen met een constructor die 1 argument neemt, namelijk een functie van de juiste signatuur. Het bovenstaande voorbeeld gebruikt enkel statische functies, maar de echte kracht van delegates in C# komt pas naar boven als we ook methodes van een object beschouwen. Bijvoorbeeld: using System ; public delegate int f u n c t i e ( int i ) ; public class Vermenigvuldiger { private int f a c t o r ; public Vermenigvuldiger ( int x ) { f a c t o r = x ; public int vermenigvuldig ( int y ) { return f a c t o r y ; Vermenigvuldiger maalvier = new Vermenigvuldiger ( 4 ) ; Vermenigvuldiger maalzes = new Vermenigvuldiger ( 6 ) ; f u n c t i e mv = new f u n c t i e ( maalvier. vermenigvuldig ) ; f u n c t i e mz = new f u n c t i e ( maalzes. vermenigvuldig ) ; f u n c t i e [ ] malen = {mv, mz ; foreach ( f u n c t i e m in malen ) { Console. WriteLine (m( 3 ) ) ; 12

13 2.8 Herdefiniëren van operatoren C# laat niet alleen het overloaden van gewone methodes toe, maar ook het overloaden van operator-symbolen zoals +, ++, *,.... Aan een dergelijke operator kan je een statische functie koppelen, die het juiste aantal argumenten van een bepaald type neemt. De onderstaande code definiëert bijvoorbeeld een unaire ++ en binaire +, die allebei toepasbaar zijn op Teller objecten: using System ; class T e l l e r { private int waarde ; private T e l l e r ( int i ) { waarde = i ; public T e l l e r ( ) : this ( 0 ) { public static T e l l e r operator ++ ( T e l l e r t ) { t. waarde++; return t ; public static T e l l e r operator + ( T e l l e r t1, T e l l e r t2 ) { return new T e l l e r ( t1. waarde + t2. waarde ) ; T e l l e r x = new T e l l e r ( ) ; T e l l e r y = new T e l l e r ( ) ; x++; x++; y++; y += x ; // y. waarde i s 3 Ook type-cast operatoren, die een bepaald type proberen om te zetten naar een ander type, kunnen overladen worden. Er zijn twee soorten van dergelijke operatoren: impliciete en expliciete. Een impliciete typecast is eentje achter de schermen gebeurt, zonder dat de gebruiker dit expliciet moet opgeven zoals bijvoorbeeld de boxing typecasts. Deze kunnen we als volgt overladen: public static implicit operator int ( T e l l e r t ) { return t. waarde ; 13

14 Als we nu iets doen als T e l l e r t = new T e l l e r ( ) ; int i = t + 4 ; zal deze conversie-operator achter de schermen worden toegepast om de Teller om te zetten naar een int. We kunnen ook als volgt een expliciete operator definiëren: public static explicit operator int ( T e l l e r t ) { return t. waarde ; Deze moet dan als volgt gebruikt worden: T e l l e r t = new T e l l e r ( ) ; int i = ( ( int ) t ) + 4 ; Indexers Een speciaal soort operator is de indexatie-operator van arrays. Hiervoor gebruik je niet de notatie van hierboven, maar een speciale indexer property. using System ; class EenheidsMatrix { private int rows ; public EenheidsMatrix ( int i ) { rows = i ; public int this [ int i, int j ] { get { i f ( i == j ) return 1 ; return 0 ; public int Length { get { return rows ; 14

15 EenheidsMatrix I = new EenheidsMatrix ( 5 ) ; for ( int i = 0 ; i < I. Length ; i ++) { for ( int j = 0 ; j < I. Length ; j++) Console. Write ( {0, I [ i, j ] ) ; Console. Write ( \n ) ; 2.9 Collecties C# biedt een uitgebreide verzameling van collectie types (Stack, Queue, HashTable, ArrayList,...) aan in de System.Collections naamruimte. Itereren over deze types kan heel eenvoudig met een foreach constructie: ArrayList l i j s t = new ArrayList ( ) ; l i j s t. Add( h a l l o ) ; l i j s t. Add( wereld ) ; foreach ( string s in l i j s t ) { Console. WriteLine ( s ) ; Deze foreach werkt achter de schermen met de interface IEnumerable 1 Om ook je eigen klassen op deze manier te kunnen gebruiken, moet ze dus ook deze interface implementeren. Deze interface ziet er als volgt uit: public interface IEnumerable { public IEnumerator GetEnumerator ( ) public interface IEnumerator { public object Current { get ; //Read only p r o p e r t y public bool MoveNext ( ) ; // Returns f a l s e i f t h e r e // were no more next elements public void Reset ( ) ; Hier is een voorbeeld: using System ; using System. C o l l e c t i o n s ; class A f t e l l e r : IEnumerator, IEnumerable { 1 Per conventie beginnen in C# de namen van interfaces beginnen met een hoofdletter I. 15

16 private int van ; private int t o t ; private int h u i d i g ; public A f t e l l e r ( int van ) { van = van ; t o t = 0 ; Reset ( ) ; public void Reset ( ) { h u i d i g = van ; public object Current { get { return h u i d i g ; public bool MoveNext ( ) { i f ( h u i d i g <= t o t ) return f a l s e ; else { huidig ; return true ; public IEnumerator GetEnumerator ( ) { return this ; foreach ( int i in new A f t e l l e r ( 8 ) ) Console. WriteLine ( i ) ; 2.10 Attributen C# ondersteunt attributen om extra informatie toe te voegen aan code. Hiervoor worden vierkante haken gebruikt. Eén nuttige toepassing is dat deze annotaties gebruikt kunnen worden om te zorgen voor conditionele compilatie, 16

17 zoals met de #ifdef preprocessorinstructie van C. Bijvoorbeeld: using System. D i a g n o s t i c s ; [ Conditional ( DEBUG ) ] public void C o n t r o l e e r O p l o s s i n g ( ) {... Het effect hiervan is dat alle oproepen van deze methode ControleerOplossing verwijderd zullen worden wanneer de code gecompileerd wordt zonder dat DEBUG gedefiniëerd is. Om wél deze methode-oproepen te krijgen, kan aan de Mono C# compiler de command line optie -d:debug worden toegevoegd. Een andere interessant toepassing van attributen is de ingebouwde ondersteuning die C# biedt voor het omzetten van objecten naar XML. 17

Overerving & Polymorfisme

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

Nadere informatie

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

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

Nadere informatie

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1 Een beetje theorie vooraf 1. Wat is een programma? 2 Hoe maakt u een programma? 3 IL-code en JIT-compiler 5

1 Een beetje theorie vooraf 1. Wat is een programma? 2 Hoe maakt u een programma? 3 IL-code en JIT-compiler 5 1 Een beetje theorie vooraf 1 Wat is een programma? 2 Hoe maakt u een programma? 3 IL-code en JIT-compiler 5 Voordelen combinatie compiler en interpreter 6 Het.NET Framework 9.NET en Java 9.NET, COM en

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

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

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

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

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

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

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

Programmeren in C# Klassen schrijven

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

Nadere informatie

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

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

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

return an ; } private I L i s t l i j s t ;

return an ; } private I L i s t l i j s t ; In bovenstaande code werd de binding t e k s t. DataBindings. Add(new Binding ( Text, l i j s t, ) ) ; gebruikt om de eigenschap Text van het object tekst (dwz. tekst.text) te binden aan het object lijst.

Nadere informatie

Hoofdstuk 0. Van Python tot Java.

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

Nadere informatie

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

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

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

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

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

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

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

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

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

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

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

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

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

Nadere informatie

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

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

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

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

Labo 1 Programmeren II

Labo 1 Programmeren II Labo 1 Programmeren II L. Schoofs K. van Assche Voor de OA Labo Programmeren II programmeren we in C# en met Microsoft Visual Studio 2005 als ontwikkelomgeving (voorlopig beta2). Deze IDE maakt gebruik

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

Scala. Korte introductie. Sylvia Stuurman

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

Nadere informatie

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

Uitwerking Tweede deeltentamen Mobiel programmeren - versie 1 Vrijdag 2 februari 2018, uur Uitwerking Tweede deeltentamen Mobiel programmeren - versie 1 Vrijdag 2 februari 2018, 8.30-10.30 uur 1. Een Intent-object wordt gebruikt voor communicatie (a) van een Activity naar een bijbehorende View

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

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

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

Modelleren & Programmeren. Jeroen Fokker

Modelleren & Programmeren. Jeroen Fokker Modelleren & Programmeren Jeroen Fokker Wat heb je nodig? Collegediktaat kopen bij A-Eskwadraat (BBG-238) of zelf downloaden en uitprinten www.cs.uu.nl / docs / vakken / KI1V13009 Solis-id met password

Nadere informatie

Lineaire data structuren. Doorlopen van een lijst

Lineaire data structuren. Doorlopen van een lijst Lineaire data structuren array: vast aantal data items die aaneensluitend gestockeerd zijn de elementen zijn bereikbaar via een index lijst: een aantal individuele elementen die met elkaar gelinkt zijn

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

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

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

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

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

Nadere informatie

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

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

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

programmeren Mobiel Mobilofoon 1960 Apple iphone 2007 met ios Nokia Samsung S met Android Motorola Dyna-Tac 1973

programmeren Mobiel Mobilofoon 1960 Apple iphone 2007 met ios Nokia Samsung S met Android Motorola Dyna-Tac 1973 Mobiel programmeren Mobilofoon 1960 Nokia 3310 2000 Apple iphone 2007 met ios Motorola Dyna-Tac 1973 Samsung S7 2016 met Android Programmeertalen Fortran Basic C++ C# Android Algol C Java... 1950 1960

Nadere informatie

VAN HET PROGRAMMEREN. Inleiding

VAN HET PROGRAMMEREN. Inleiding OVERZICHT VAN HET PROGRAMMEREN Inleiding Als je leert programmeren lijkt het nogal overweldigend om die eerste stappen te doorworstelen. Er zijn dan ook heel wat programmeertalen (Java, Ruby, Python, Perl,

Nadere informatie

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

Tweede deeltentamen Mobiel programmeren - versie 1 Vrijdag 2 februari 2018, uur Tweede deeltentamen Mobiel programmeren - versie 1 Vrijdag 2 februari 2018, 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

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

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

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

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

Voor de database wordt een Access 2000 bestand gebruikt, met voorlopig 1 tabel:

Voor de database wordt een Access 2000 bestand gebruikt, met voorlopig 1 tabel: Eenvoudig voorbeeld. Er wordt verondersteld dat er met VS 2008 EXPRESS gewerkt wordt. Voor de database wordt een Access 2000 bestand gebruikt, met voorlopig 1 tabel: (Sommige schermafdrukken zijn afkomstig

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

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

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

Nadere informatie

Objectgeoriënteerd Programmeren: WPO 2a

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

Nadere informatie

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

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

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

Nadere informatie

Uitwerking Tweede deeltentamen Mobiel programmeren - versie 1 Vrijdag 3 februari 2017, uur

Uitwerking Tweede deeltentamen Mobiel programmeren - versie 1 Vrijdag 3 februari 2017, uur Uitwerking Tweede deeltentamen Mobiel programmeren - versie 1 Vrijdag 3 februari 2017, 8.30-10.30 uur 1. Wat kan gezegd worden van het stukje programma b=!b (a) De expressie b=!b heeft altijd de waarde

Nadere informatie

Objectgericht ontwerpen

Objectgericht ontwerpen Associatie KULeuven Hogeschool voor Wetenschap & Kunst De Nayer instituut Industrieel ingenieur Opleiding Elektronica-ICT 3e academisch bachelorjaar Objectgericht ontwerpen Deel I Academiejaar 2009-10

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

Object Oriented Programming

Object Oriented Programming Object Oriented Programming voor webapplicaties Door Edwin Vlieg Waarom OOP? Basis uitleg over OOP Design Patterns ActiveRecord Model View Controller Extra informatie Vragen OOP Object Oriented Programming

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

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

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

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

Veel succes! 1. Deze opgave bestaat uit een aantal vragen. Houd het antwoord kort: één of twee zinnen per onderdeel kan al genoeg zijn. Eerste deeltentamen Gameprogrammeren Vrijdag 26 september 2014, 8.30-10.30 uur Naam: Studentnummer: Het tentamen bestaat uit 4 opgaven. Elke opgave levert 10 punten op. Je cijfer is het totaal aantal punten

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

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

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

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

DOMjudge teamhandleiding

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

Nadere informatie

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

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

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

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

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

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