Abstraheren van modellen
|
|
- Matthias Martens
- 8 jaren geleden
- Aantal bezoeken:
Transcriptie
1 Abstraheren van modellen Geert Delanote 7 maart 2005 Geert.Delanote@cs.kuleuven.ac.be Software Development Methodology 1
2 Inhoudstafel Motivatie Denkpistes Software Development Methodology 2
3 Motivatie Verslag vorige vergadering Discussiepunt Belang van verbanden tussen verschillende modellen op eenzelfde (hoog) abstractieniveau; problemen met uitdrukking hiervan (UML volstaat niet). Vertrekpunt Observatie dat PIM-modellen te complex worden - UML is niet expressief genoeg Transformatie naar PSM-modellen (semi-)automatisch? Onderzoek Niet afgerond! Software Development Methodology 3
4 Motivatie Denkpistes : Reïficatie van methodes Verbanden tussen methodes - Reïficatie van toestanden Complexe hiërarchieën Financial case study Software Development Methodology 4
5 Inhoudstafel Motivatie Denkpistes Reïficatie van methodes Verbanden tussen methodes - Reïficatie van toestanden Complexe hiërarchieën Software Development Methodology 5
6 Case 1 : Reïficatie van methodes Gegeven : een klasse van boeken met een event om boeken uit te lenen Book +loan(period:duration):void met een query om het aantal uitleningen op te vragen Book +loan(period:duration):void +nbloans():natural 1 * Loan - period : DURATION en met queries om het tijdstip van de laatste uitlening en de gemiddelde uitleenperiode op te vragen Software Development Methodology 6
7 Case 1 : Reïficatie van methodes Doel : De klasse Book op PIM niveau voorstellen en specificeren De specificatie transformeren naar PSM niveau Book +loan(period:duration):void +nbloans():natural +latestloan():date +avgloanperiod():duration We voeren de # - operator in obj#event() Deze expressie geeft de verzameling van alle voorkomens op het object obj van de event event() terug Software Development Methodology 7
8 Case 1 : Reïficatie van methodes Context Book :: nbloans() Post: result = card(this#loan()) Context Book :: latestloan() Pre: not(this#loan()->isempty) --- alternatief : Pre: nbloans() > 0 Post: result = max((this#loan())->executiontime) Context Book Inv: latestloan() <= now Context Book :: avgloanperiod() Post: result = avg((this#loan())->period) Context Book Constraint: for each loan1, loan2 in this#loan() : if (loan1 loan2) then (loan1->executiontime + loan1->period) <= loan2->excecutiontime (loan2->executiontime + loan2->period) <= loan1->excecutiontime Software Development Methodology 8
9 Case 1 : Reïficatie van methodes Transformatie PIM -> PSM PSM 1 : Reïficatie van de event loan PSM 2 : Niet-reïficatie van de event loan PSM 3 : Automatisch? Software Development Methodology 9
10 PSM 1 : Reïficatie van de event loan Method class cfr. Assocation class Elke instantiatie van de method class is een uitvoering van de event loan() (en omgekeerd) Elke karakteristiek van een event is ook een karakteristiek van objecten van de klasse - bv. ExecutionTime -> CreationTime Elke parameter van de event is een property van de klasse Software Development Methodology 10
11 PSM 1 : Reïficatie van de event loan Context Book :: nbloans() Post: result = card(this->loan) Context Book :: latestloan() Pre: not(this->loan->isempty) Post: result = max((this->loan)->creationtime) Context Book Inv: latestloan() <= now Context Book :: avgloanperiod() Post: result = avg((this->loan)->period) Context Book Constraint: for each loan1, loan2 in this->loan : if (loan1 loan2) then (loan1->creationtime + loan1->period) <= loan2->creationtime (loan2->creationtime + loan2->period) <= loan1->creationtime Software Development Methodology 11
12 PSM 1 : Reïficatie van de event loan Vaststellingen De transformatie kan automatisch gebeuren Dit PSM is tegelijk een PIM - NATURAL : verschillende transformaties naar een programmeertaal mogelijk - Verschillend bereik mogelijk : long, int, - Taalafhankelijke verschillen : ulong in C# vs long in Java - CreationTime Software Development Methodology 12
13 PSM 2 : Niet-reïficatie van de event loan Invoeren properties Notatie : (obj#event())@current Twee gevallen : 1. Het resultaat van de query kan bepaald worden op basis van het vorige resultaat en het effect van deze event 2. Het resultaat van de query kan niet bepaald worden zoals in geval 1 Software Development Methodology 13
14 Transformatie van nbloans() Gegeven : (Geval 1) Context Book :: nbloans() Post: result = card(this#loan()) Context Book : loan() Pre: - Post: - Stap1: - Zet de query om in een property - Maak van de resultclause een postconditie bij loan() - Geef de property een initiële waarde (card(empty set) == 0) Context Book :: property NATURAL nbloans Initial value : 0 Semantics : card(this#loan()) Context Book : loan() Pre: - Post: this.nbloans = card(this#loan()) Software Development Methodology 14
15 Transformatie van nbloans() Stap2: Zonder de huidige uitvoering van de methode loan() af Context Book : loan() Pre: - Post: this.nbloans = card( (this#loan())@pre union {(this#loan())@current} ) Stap3: card(x union Y) == card(x) + card(y) Context Book : loan() Pre: - Post: this.nbloans = card( (this#loan())@pre ) + card( {(this#loan())@current} ) Stap4: - Cardinaliteit van een set met 1 element is 1 - Cardinaliteit van de alle uitvoeringen behalve de huidige = de waarde van de instantievariabele voor de uitvoering van de methode Context Book : loan() Pre: - Post: this.nbloans = this.nbloans@pre + 1 Software Development Methodology 15
16 Transformatie van latestloan() Gegeven : (Geval 1) Context Book :: latestloan() Pre: this#loan()->notempty Post: result = max((this#loan())->executiontime) Context Book : loan() Pre: - Post: - Stap1: Zet de preconditie om in een booleaanse property Context Book :: property BOOLEAN loanisexecuted Initial value : false Semantics : this#loan()->notempty Context Book :: latestloan() Pre: loanisexecuted Post: result = max((this#loan())->executiontime) Software Development Methodology 16
17 Transformatie van latestloan() Stap2: - Zet de query om in een property - Maak van de resultclause een postconditie bij loan() - Geef de property een initiële waarde (max(empty set) == undefined) Context Book :: property DATE latestloan Initial value: undefined Pre: loanisexecuted Semantics: max((this#loan())->executiontime) Context Book : loan() Pre: - Post: this.latestloans = max((this#loan())->executiontime) Stap3: Zonder de huidige uitvoering van de methode loan() af Context Book : loan() Pre: - Post: this.latestloans = max( ((this#loan())@pre)->executiontime union {((this#loan())@current)->executiontime} ) Software Development Methodology 17
18 Transformatie van latestloan() Stap4: if (X->isEmpty) then max(x union Y) == max(y) else max(x union Y) == max{max(x), max(y)} Context Book : loan() Pre: - Post: this.latestloan = if ((((this#loan())@pre)->executiontime)->isempty) then max({((this#loan())@current)->executiontime }) else max{ max(((this#loan())@pre)->executiontime), max({((this#loan())@current)->executiontime }) } Stap5: - Maximum van een set met 1 element is dat element - Maximum van alle uitvoeringen behalve de huidige = de waarde van de instantievariabele voor de uitvoering van de methode - Vervang de booleaanse expressie door de property Context Book : loan() Pre: - Post: this.latestloan = if (not(this.loanisexecuted@pre)) then ((this#loan())@current)->executiontime else max{this.latestloan@pre, ((this#loan())@current)->executiontime} Software Development Methodology 18
19 Transformatie van latestloan() Stap6: De opgevraagde karakteristieken van de methode worden ingevuld Context Book : loan() Pre: - Post: this.latestloan = if (not(this.loanisexecuted@pre)) then now else max{ this.latestloan@pre, now} Stap7*: Vereenvoudig de postconditie verder. (latestloan@pre < now) Context Book : loan() Pre: - Post: this.latestloan = if nbloans()@pre = 0 then now else now en dus: Context Book : loan() Pre: - Post: this.latestloan = now Software Development Methodology 19
20 Transformatie van avgloanperiod() Gegeven : (Geval 2) Context Book :: avgloanperiod() Post: result = avg((this#loan())->period) Context Book : loan() Pre: - Post: - Stap1: Herschrijf de functie in een samenstelling van functies om zo tot een Geval 1 te komen. Context Book :: avgloanperiod() Post: result = if this#loan()->isempty() (of : card(this#loan()) = 0) then 0 else sum((this#loan())->period) / card(this#loan()) Software Development Methodology 20
21 Transformatie van avgloanperiod() Stap2: - Zet de query om in properties - Maak voor iedere property een postconditie bij loan() - Geef de properties een initiële waarde(card(empty set)= 0; sum(empty set)= 0) Context Book :: property NATURAL nbloans Initial value: 0 Semantics: card(this#loan()) Context Book :: property DURATION totalloanperiod Initial value: 0 Semantics: sum((this#loan())->period) Context Book :: avgloanperiod() Post: result = if nbloans = 0 then 0 else totalloanperiod / nbloans Context Book : loan() Pre: - Post: this.nbloans = card(this#loan()) Post: this.totalloanperiod = sum((this#loan())->period) Software Development Methodology 21
22 Transformatie van avgloanperiod() Stap3: Ga verder met Stap2 uit het algoritme met gegeven Geval1 voor iedere postconditie. Context Book : loan() Pre: - Post: this.nbloans = this.nbloans@pre +1 Post: this.totalloanperiod = this.totalloanperiod@pre + period Software Development Methodology 22
23 Algoritme Stap 1: Herhaal voor elke query : Zet de precondities om in booleaanse properties Stap 2: Herhaal voor elke query : Als het resultaat van de query niet kan bepaald worden op basis van het vorige resultaat en de huidige uitvoering, dan wordt de operatie zo opgesplitst in deeloperaties zodat het resultaat van elk van de deeloperaties wel kan bepaald worden op basis van het vorige resultaat en de huidige uitvoering Stap 3: - Maak de nodige properties aan (zonder dubbels, i.e. properties met dezelfde semantische betekenis, aan te maken!) - Laat de query het resultaat in functie van die properties teruggeven Stap 4: (?) Reduceer het aantal properties. Software Development Methodology 23
24 Algoritme Stap 5: Maak voor iedere property een postconditie bij elke event die voorkomt in de semanticsclause Stap 6: Herhaal voor elke property : Als er een (semantisch) zinvolle waarde kan gegeven worden, dan initialiseer de property, anders is de property initieel undefined Als de property niet altijd defined is dan wordt er een preconditie, die definieert wanneer de property undefined is, aan de property toegevoegd. Stap 7: Herhaal voor elke postconditie : Zonder het huidige voorkomen van de event af Stap 8: Vervang de huidige postconditie f( {vroegere voorkomens} union {huidige voorkomen} ) door g( f( {vroegere voorkomens} ), f( {huidige voorkomen} ) ) Stap 9: f({huidige voorkomen}) is triviaal f({vroegere voorkomens}) = f@pre = property@pre Stap 10: Vereenvoudig de postconditie - Vul karakteristieken in (vb. ((this#event())@current)->executionttime = now) - Vereenvoudig expressies (vb. max(0,1) = 1) Software Development Methodology 24
25 Inhoudstafel Motivatie Denkpistes Reïficatie van methodes Verbanden tussen methodes - Reïficatie van toestanden Complexe hiërarchieën Software Development Methodology 25
26 Case 2 : Verbanden tussen methodes (1) Gegeven een klasse van boeken met dezelfde events en queries Een extra event return() - Een boek kan pas teruggebracht worden als het uitgeleend was - Een uitgeleend boek kan niet uitgeleend worden Software Development Methodology 26
27 Case 2 : Verbanden tussen methodes (1) Software Development Methodology 27
28 Case 2 : Verbanden tussen methodes (1) Software Development Methodology 28
29 Case 2 : Verbanden tussen methodes (1) Context Book :: nbloans() Post: result = card(this#loan()) Context Book :: latestloan() Pre: not(this#loan()->isempty) Post: result = max((this#loan())->executiontime) Context Book Inv: latestloan() <= now Context Book :: avgloanperiod() Post: let returnedloans = {loan this#loan() loan.return()->notempty} in result = avg({{period in DURATION loan returnedloans : loan.return()->executiontime loan->executiontime}}) Context Book Constraint: for each loan in this#loan() : {l this#loan() l->executiontime < loan->executiontime and if (l.return()->notempty) then loan->executiontime<l.return()->executiontime else true }->isempty Software Development Methodology 29
30 Case 2 : Verbanden tussen methodes (1) PSM 1 : Reïficatie van de events PSM 2 : Niet-reïficatie van de events uit te werken Software Development Methodology 30
31 Case 2 : Verbanden tussen methodes (2) Gegeven een klasse van bankrekeningen events om geld te storten, af te halen, over te schrijven Account + transfer(amount:moneyamount,dest:account):void + deposit(amount:moneyamount):void + withdraw(amount:moneyamount):void Abstracte methode Account + <abstract> transaction(amount:moneyamount):void + transfer(dest:account):void + deposit():void + withdraw():void Software Development Methodology 31
32 Inhoudstafel Motivatie Denkpistes Reïficatie van methodes Verbanden tussen methodes - Reïficatie van toestanden Complexe hiërarchieën Software Development Methodology 32
33 Hiërachieën Software Development Methodology 33
34 Property + constraint Context Account :: property MONEYAMOUNT balance Initial value: 0 Semantics: sum( (this#deposit())->amount union (-1)*(this#withdraw())->amount) ) Context Book Inv: balance > 0 Programmeren : hoe dwingen we de constraint af? Nominaal (precondities) Totaal Defensief (uitzonderingen) Op database niveau Software Development Methodology 34
Implementatie #-operator
Departement Wiskunde-Informatica Universiteit Antwerpen November 13, 2005 Book sample Book sample Tools Reïficatie Maak van de event method loan een method class Loan Non-reïficatie Genereer nieuwe properties
Nadere informatieVoorbeeld. public class BankRekening {
OCL Constraints Eigenschappen die op bepaalde momenten altijd voldaan moeten zijn Belangrijk voor bug-vrije programma s Contract tussen implementator & gebruiker Vier soorten Preconditie: conditie die
Nadere informatieHoofdstuk 9: Object Constraint language (OCL) Prof. Dr. Olga De Troyer. Constraints
Hoofdstuk 9: Object Constraint language (OCL) Prof. Dr. Olga De Troyer 2005 Prof Dr. O. De Troyer, pag. 1 Constraints UML s notatie is grafisch Goed voor het uitdrukken van structurele eigenschappen van
Nadere informatieDatastructuren 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 informatieH9: Klasse Ontwerp. Richtlijnen Specificaties Multiple inheritence
H9: Klasse Ontwerp Richtlijnen Specificaties Multiple inheritence SchetsPlus... doe ik het goed? 2 Hoe maak ik goede klassen? We gaan kijken naar: algemene ontwerp-richtlijnen software metric Complement:
Nadere informatie{ specificatie (contract) en toelichting }
Programmeren Blok A Drie aspecten van routines http://www.win.tue.nl/ wstomv/edu/2ip05/ College 5 Kees Hemerik Tom Verhoeff Technische Universiteit Eindhoven Faculteit Wiskunde en Informatica Software
Nadere informatieTentamen Formele Methoden voor Software Engineering (213520)
Tentamen Formele Methoden voor Software Engineering (213520) 15 april 2010, 8:45 12:15 uur. BELANGRIJK: geef op je tentamen duidelijk aan: je studierichting of je beide huiswerkopgaven gemaakt hebt, en
Nadere informatieProgrammeren Blok B. Onderwerpen. wstomv/edu/2ip05/ College 8. Tom Verhoeff
Programmeren Blok B Onderwerpen http://www.win.tue.nl/ wstomv/edu/2ip05/ College 8 Tom Verhoeff Technische Universiteit Eindhoven Faculteit Wiskunde en Informatica Software Engineering & Technology Verdelen
Nadere informatieTentamen Formele Methoden voor Software Engineering (213520)
Tentamen Formele Methoden voor Software Engineering (213520) 2 juli 2009, 13:30-17:00 uur. BELANGRIJK: geef op je tentamen duidelijk aan: je studierichting of je beide huiswerkopgaven gemaakt hebt, en
Nadere informatieProgrammeren 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 informatieISO Query By Example
ISO Query By Example Prof. dr. Paul De Bra Gebaseerd op: Database System Concepts, 5th Ed. QBE waarom nog een query taal? de relationele algebra en SQL geven niet alleen een specificatie van een query-resultaat,
Nadere informatieDatatypes 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 informatieOpmerkingen en vragen aan Ultieme vraag: Hoe beïnvloedt dit de winstkansen?
2IP05: Programmeren Blok A http://www.win.tue.nl/ wstomv/edu/2ip05/ 5 spelers, 2 dobbelstenen Probleem met dobbelspel College 1 Per ronde werpt elke speler 1 Kees Hemerik Tom Verhoeff Technische Universiteit
Nadere informatieProbleem met dobbelspel. 2IP05: Programmeren Blok A. 5 spelers,2 dobbelstenen. wstomv/edu/2ip05/ Per ronde werpt elke speler 1
2IP05: Programmeren Blok A http://www.win.tue.nl/ wstomv/edu/2ip05/ College 1 5 spelers,2 dobbelstenen Probleem met dobbelspel Per ronde werpt elke speler 1 Tom Verhoeff Technische Universiteit Eindhoven
Nadere informatieVoorbeeldtentamen Inleiding programmeren (IN1608WI), Oktober 2003, , Technische Universiteit Delft, Faculteit EWI, Afdeling 2.
Voorbeeldtentamen Inleiding programmeren (IN1608WI), Oktober 2003, 14.00-15.30, Technische Universiteit Delft, Faculteit EWI, Afdeling 2. Dit tentamen bestaat uit twee delen. Deel 1 (14.00-14.45, gesloten
Nadere informatieAanvullende toets Gameprogrammeren (INFOB1GP) Woensdag 24 december 2014, uur
Aanvullende toets Gameprogrammeren (INFOB1GP) Woensdag 24 december 2014, 13.30-15.30 uur Naam: Studentnummer: Het tentamen bestaat uit 4 opgaven. Opgaven 1 levert 8 punten op, opgave 2 levert 12 punten
Nadere informatieCollege Introductie
College 2016-2017 Introductie Doaitse Swierstra (Jeroen Bransen) Utrecht University September 13, 2016 Waarom is FP anders? in plaats van opdrachten die na elkaar moeten worden uitgevoerd, definiëren we
Nadere informatieHOOFDSTUK 3. Imperatief programmeren. 3.1 Stapsgewijs programmeren. 3.2 If Then Else. Module 4 Programmeren
HOOFDSTUK 3 3.1 Stapsgewijs programmeren De programmeertalen die tot nu toe genoemd zijn, zijn imperatieve of procedurele programmeertalen. is het stapsgewijs in code omschrijven wat een programma moet
Nadere informatieUitwerking 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 informatieOntwerp van Algoritmen: opgaven weken 3 en 4
0 Ontwerp van Algoritmen: opgaven weken 3 en 4 Voor alle volgende opgaven over programmaatjes geldt de spelregel: formuleer altijd eerst alle bewijsverplichtingen. selectie 45. (tail distribution)(prima
Nadere informatieTENTAMEN Programmeren 1 VOORBEELDUITWERKING
TENTAMEN Programmeren 1 vakcode: 213500 datum: 28 november 2002 tijd: 13:30 17:00 uur VOORBEELDUITWERKING Algemeen Bij dit tentamen mag gebruik worden gemaakt van het boek van Niño/Hosch, en van de handleiding
Nadere informatieConstraint satisfaction. Computationele Intelligentie. Voorbeelden. Een constraint satisfaction probleem. Constraint Satisfaction
Constraint satisfaction Computationele Intelligentie Constraint Satisfaction Een constraint satisfaction probleem (CSP) bestaat uit: een verzameling variabelen; een domein van waarden voor elke variabele;
Nadere informatieVakgroep 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 informatieProgrammeren 1 20 januari 2012 Prof. T. Schrijvers
Programmeren 1 20 januari 2012 Prof. T. Schrijvers Instructies Schrijf al je antwoorden op deze vragenbladen (op de plaats die daarvoor is voorzien). Geef ook je kladbladen af. Bij heel wat vragen moet
Nadere informatieInleiding Programmeren 2
Inleiding Programmeren 2 Gertjan van Noord November 26, 2018 Stof week 3 nogmaals Zelle hoofdstuk 8 en recursie Brookshear hoofdstuk 5: Algoritmes Datastructuren: tuples Een geheel andere manier om te
Nadere informatieDesign principes.
Design principes joost.vennekens@kuleuven.be Doelstelling Code die werkt doet wat klant wil betrouwbaar is gemakkelijk te veranderen is En dit ook blijft doen Software rot Rottende software geeft geurtjes
Nadere informatieIn BlueJ. Doe onderstaande met muis/menu s:
In BlueJ Doe onderstaande met muis/menu s: Download en unzip het bestand sklok-run.zip en open het in BlueJ Maak een Schaakklok-object Voer herstart() uit voor dit object Vraag de resterende tijd op voor
Nadere informatieALGORITME objectgeoriënteerd programmeren
ALGORITME objectgeoriënteerd programmeren Gunter Schillebeeckx 1 objectgeoriënteerd programmeren Object Klasse Instantie Eigenschap Methode Inkapseling Polymorfisme Overerving 2 Inleiding Kern Samenvatting
Nadere informatieTweede 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 informatieDesign principes.
Design principes joost.vennekens@kuleuven.be Motivatie Software projecten mislukken vaker Vaker dan bouwkunde Vaker dan EM Vaker dan Oorzaak? Omgaan met verandering Vereisten Technologie Externe systemen
Nadere informatieAPPLICATIEBOUW 3E COLLEGE: OBJECT GEORIËNTEERD PROGRAMMEREN, METHODEN, PARAMETERS, SCOPE VAN VARIABELEN. Onderdeel van SmartProducts
APPLICATIEBOUW 3E COLLEGE: OBJECT GEORIËNTEERD PROGRAMMEREN, METHODEN, PARAMETERS, SCOPE VAN VARIABELEN Onderdeel van SmartProducts INHOUD COLLEGE 3 Scope van variabelen {3.9} Class ontwerpen en maken,
Nadere informatieTentamen Object Georiënteerd Programmeren TI1200 30 januari 2013, 9.00-12.00 Afdeling SCT, Faculteit EWI, TU Delft
Tentamen Object Georiënteerd Programmeren TI1200 30 januari 2013, 9.00-12.00 Afdeling SCT, Faculteit EWI, TU Delft Bij dit tentamen mag je geen gebruik maken van hulpmiddelen zoals boek of slides. Dit
Nadere informatieVAN 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 informatieModelleren 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 informatiestart -> id (k (f c s) (g s c)) -> k (f c s) (g s c) -> f c s -> s c
Een Minimaal Formalisme om te Programmeren We hebben gezien dat Turing machines beschouwd kunnen worden als universele computers. D.w.z. dat iedere berekening met natuurlijke getallen die met een computer
Nadere informatieProgrammeermethoden. Recursie. week 11: november kosterswa/pm/
Programmeermethoden Recursie week 11: 21 25 november 2016 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 Pointers Derde programmeeropgave 1 Het spel Gomoku programmeren we als volgt: week 1: pointerpracticum,
Nadere informatieSemantiek (2IT40) Bas Luttik. HG 7.14 tel.: Hoorcollege 8 (7 juni 2007)
Bas Luttik s.p.luttik@tue.nl http://www.win.tue.nl/~luttik HG 7.14 tel.: 040 247 5152 Hoorcollege 8 (7 juni 2007) Functionele talen Idee: een programma definieert reeks (wiskundige) functies. Programma
Nadere informatieTentamen Formele Methoden voor Software Engineering (213520)
Tentamen Formele Methoden voor Software Engineering (213520) 16 april 2009, 9.00-12.30 uur. BELANGRIJK: geef op je tentamen duidelijk aan: je studierichting of je beide huiswerkopgaven gemaakt hebt, en
Nadere informatieDe keuzestructuur. Versie DD
De keuzestructuur Versie DD Tot nu toe Programma in rechte lijn = sequentie of opeenvolging Nieuw Vertakking in parcours = selectie of keuzestructuur Controlestructuren Opeenvolging = sequentie Keuze =
Nadere informatieModule 1 Programmeren
Module 1 Programmeren Programmeertalen 13 1.1 Inleiding 13 1.2 Programmeertalen in historisch perspectief 13 1.2.1 Machinecode 13 1.2.2 Assembleertalen (assembly) 14 1.2.3 Hogere programmeertalen 15 1.2.4
Nadere informatieModelleren en Programmeren: Prolog
Modelleren en Programmeren: Prolog Marijn Schraagen 8 januari 2016 Introductie Basiselementen Rekenen Recursie Introductie Prolog vs. Java Java is procedureel en imperatief Code beschrijft stap voor stap
Nadere informatieTentamen Objectgeorienteerd Programmeren TI februari Afdeling ST Faculteit EWI TU Delft
I ' Tentamen Objectgeorienteerd Programmeren TI 1200 1 februari 2012 9.00-12.00 Afdeling ST Faculteit EWI TU Delft Bij dit tentamen mag je geen gebruik maken van hulpmiddelen zoals boek of slides. Dit
Nadere informatieModelleren 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 informatieVAN HET PROGRAMMEREN. Inleiding. Het spiraalmodel. De programmeertaal. vervolgens de berekening van het totale bedrag, incl. BTW:
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 informatieProgrammeren 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 informatieObjectgeorï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 informatiepublic boolean equaldates() post: returns true iff there if the list contains at least two BirthDay objects with the same daynumber
Tentamen TI1310 Datastructuren en Algoritmen, 15 april 2011, 9.00-12.00 TU Delft, Faculteit EWI, Basiseenheid Software Engineering Bij het tentamen mag alleen de boeken van Goodrich en Tamassia worden
Nadere informatieDatabank - Basis 1. Inhoud. Computervaardigheden en Programmatie. Hoofdstuk 4 Databank - Basis. Terminologie. Navigeren door een Venster
4. 4. Inhoud rste BAC Toegepaste Biologische Wetenschappen Hoofdstuk 4 Databank Terminologie, Navigeren, Importeren Tabellen Records/Velden manipuleren Queries (Vragen) [Ook in SQL] sorteren filter volgens
Nadere informatiePython. Vraag 1: Expressies en types. Vraag 1 b: Types -Ingebouwde functies- Vraag 1 a 3/10/14
Python Vraag 1: Expressies en types Integrated Development Environment (IDE): Ø Wing 101 (gratis te downloaden op www.wingware.com) Oefeningen in de shell >> noemen we de prompt Python commando s = expressies
Nadere informatieTentamen in2705 Software Engineering
Tentamen in2705 Software Engineering Voorbeeld (bijna tweemaal te groot) U mag meenemen naar dit tentamen: Lethbridge, afdrukken PPT slides, afdrukken handouts. 1. De TU wil een nieuw systeem ontwikkelen
Nadere informatieAls een PSD selecties bevat, deelt de lijn van het programma zich op met de verschillende antwoorden op het vraagstuk.
HOOFDSTUK 3 3.1 Stapsgewijs programmeren In de vorige hoofdstukken zijn programmeertalen beschreven die imperatief zijn. is het stapsgewijs in code omschrijven wat een programma moet doen, net als een
Nadere informatieHonours projecten BSc Informatica: twee voorstellen
Honours projecten BSc Informatica: twee voorstellen mogelijk ook geschikt voor BSc Kunstmatige Intelligentie Alban Ponse section Theory of Computer Science Informatics Institute, University of Amsterdam
Nadere informatieSyntax- (compile), runtime- en logische fouten Binaire operatoren
Inhoud Syntax- (compile), runtime- en logische fouten Binaire operatoren Operaties op numerieke datatypen Evaluatie van expressies, bindingssterkte Assignment operaties en short-cut operatoren Controle
Nadere informatieDatastructuren 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 informatieNAAM: Programmeren 1 Examen 31/08/2011
Programmeren augustus 0 Prof. T. Schrijvers Instructies Schrijf al je antwoorden op deze vragenbladen (op de plaats die daarvoor is voorzien). Geef ook je kladbladen af. Bij heel wat vragen moet je zelf
Nadere informatieUitwerking Eerste deeltentamen Mobiel programmeren - versie 1 Vrijdag 23 december 2016, uur
Uitwerking Eerste deeltentamen Mobiel programmeren - versie 1 Vrijdag 23 december 2016, 11.00-13.00 uur 1. Een klasse is niet: (a) het type van een object (b) een groepje methoden (c) een groepje variabelen
Nadere informatieSoftware Engineering: SCRUM 2
Software Engineering: SCRUM 2 Schedule Generator Zjef Van de Poel, Alexander De Cock, Adam Cooman, Matthias Caenepeel Inhoud van de SCRUM Bespreking resultaten Iteratie 1 Doelstellingen Iteratie 2 Iteratie
Nadere informatieScala. 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 informatiecolleges recursieve datastructuren college 9 prioriteit van operatoren prioriteit in recursive descent parser
colleges recursieve datastructuren college 9 interpreteren: waarde van bomen bepalen transformeren: vorm van bomen veranderen parseren herkennen van expressie in de tekst herkennen van functies onderwerp
Nadere informatieMethode: Verdeel en heers
Programmeren Blok B Thema: Complexiteit beteugelen http://www.win.tue.nl/ wstomv/edu/ip05/ College Tom Verhoeff Technische Universiteit Eindhoven Faculteit Wiskunde en Informatica Software Engineering
Nadere informatieHerhaling. Instructie. Controle Structuur. Functie. Programmeren is het samen plaatsen van onderdelen
Herhaling Instructie Programmeren is het samen plaatsen van onderdelen Er bestaan 4 fundamentele stukken Instructie Controle structuur Functie Expressie Een instructie wordt uitgevoerd tijdens het uitvoeren
Nadere informatieNAAM: Programmeren 1 Examen 29/08/2012
Programmeren 29 augustus 202 Prof. T. Schrijvers Instructies Schrijf al je antwoorden op deze vragenbladen (op de plaats die daarvoor is voorzien). Geef ook je kladbladen af. Bij heel wat vragen moet je
Nadere informatieDie inputs worden op een gecontroleerde manier aangeboden door (test) stubs. De test driver zorgt voor de uiteindelijke uitvoering ervan.
Nota: Schrijf je antwoorden kort en bondig in de daartoe voorziene velden. De puntenverdeling is 2 punten per theorie-vraag en 8 punten per oefening. Het totaal is 40. Vraag 1. Er bestaan verschillende
Nadere informatieSysteem modellen. Topics covered
Systeem modellen Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 8 Slide 1 Topics covered Context models Behavioural models Data models Object models CASE workbenches Ian Sommerville 2004
Nadere informatieNoties 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 informatieInleiding Programmeren 2
Inleiding Programmeren 2 Gertjan van Noord November 28, 2016 Stof week 3 nogmaals Zelle hoofdstuk 8 en recursie Brookshear hoofdstuk 5: Algoritmes Datastructuren: tuples Een geheel andere manier om te
Nadere informatieArrays. Complexe datastructuren. Waarom arrays. Geen stijlvol programma:
Geen stijlvol programma: Complexe datastructuren Arrays vijf verschillende variabelen voor iets dat als één rij getallen bestempeld wordt; onbruikbaar wanneer het over meer getallen (bijvoorbeeld ) gaat.
Nadere informatie6,1. Samenvatting door een scholier 1809 woorden 28 oktober keer beoordeeld. Informatica
Samenvatting door een scholier 1809 woorden 28 oktober 2005 6,1 16 keer beoordeeld Vak Methode Informatica Turing informatica samenvatting. hst3: algoritme:een beschrijving van stappen die gedaan moeten
Nadere informatieOEFENINGEN PYTHON REEKS 1
OEFENINGEN PYTHON REEKS 1 Vraag 1: Python als een eenvoudige rekenmachine Python maakt gebruik van enkele vaak voorkomende (data)types. Zo zijn er integers die behoren tot de gehele getallen (VB: 3) en
Nadere informatieInhoud 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 informatieASRemote WebService. Via deze webservice kunt u:
ASRemote WebService De ASRemote WebService is een SOAP Webservice die softwarematige communicatie met Exact Globe mogelijk maakt vanaf een willekeurige locatie op het internet. Via deze webservice kunt
Nadere informatieChris de Kok 223548 TDI 3. Vak: Software Architectuur Datum: 21-01-2008 Docent: Fons van Kesteren
Chris de Kok 223548 TDI 3 Vak: Software Architectuur Datum: 21-01-2008 Docent: Fons van Kesteren Inhoud Inleiding... 3 Black box / White box... 3 XP... 3 SimpleTest... 3 Eclipse plugin... 4 GroupTest...
Nadere informatieZelftest Inleiding Programmeren
Zelftest Inleiding Programmeren Document: n0824test.fm 22/01/2013 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INLEIDING BIJ DE ZELFTEST INLEIDING PROGRAMMEREN Deze
Nadere informatieWat is FP? The Haskell School of Expression. Functies. Types 1+1=2. Iedere expressie (en waarde) heeft een type.
Wat is FP? The Haskell School of Expression Functioneel Programmeren Een andere manier om tegen programmeren aan te kijken Gebaseerd op het uitrekenen van expressies 1+1=2 Eenvoudig maar krachtig (modulair,
Nadere informatieProgrammeermethoden. Recursie. Walter Kosters. week 11: november kosterswa/pm/
Programmeermethoden Recursie Walter Kosters week 11: 20 24 november 2017 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 Vierde programmeeropgave 1 De Grote getallen programmeren we als volgt: week 1: pointerpracticum,
Nadere informatieTentamen Objectgeorienteerd Programmeren IN1205 Voorbeeld
Tentamen Objectgeorienteerd Programmeren IN1205 Voorbeeld Afdeling ST Faculteit EWI TU Delft Bij dit tentamen mag u gebruik maken van: Barnes, Object-Oriented Programming with Java en de Notitie Algoritmiek
Nadere informatieTENTAMEN 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 informatieUitwerking 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 informatieOvererving & 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 informatieTentamen Kunstmatige Intelligentie (INFOB2KI)
Tentamen Kunstmatige Intelligentie (INFOB2KI) 30 januari 2014 10:30-12:30 Vooraf Mobiele telefoons dienen uitgeschakeld te zijn. Het tentamen bestaat uit 7 opgaven; in totaal kunnen er 100 punten behaald
Nadere informatieVariabelen 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 informatieJava Programma structuur
Java Programma structuur public class Bla // div. statements public static void main(string argv[]) // meer spul Voortgezet Prog. voor KI, week 4:11 november 2002 1 Lijsten Voorbeelden 2, 3, 5, 7, 13 Jan,
Nadere informatie{ auteur, toelichting }
Programmeren Blok A Trilogie van (programmeer)talen http://www.win.tue.nl/ wstomv/edu/ip0/ College Syntaxis (vormleer): Hoe ziet t eruit, hoe schrijf je t? Tom Verhoeff Technische Universiteit Eindhoven
Nadere informatieOpgaven. Python Assessment
Opgaven Python Assessment Nijmegen - Utrecht www.atcomputing.nl Copyright 2015,2016 Versie: 1a Inleiding Met dit assessment kun je controleren of je voldoende parate kennis over Python hebt om te beginnen
Nadere informatieSQL Aantekeningen 3. Maarten de Rijke mdr@science.uva.nl. 22 mei 2003
SQL Aantekeningen 3 Maarten de Rijke mdr@science.uva.nl 22 mei 2003 Samenvatting In deze aflevering: het selecteren van tuples, operaties op strings, en aggregatie functies. Verder kijken we naar iets
Nadere informatiePresentatie Jaarproject. Nils De Moor Sam Verboven
Presentatie Jaarproject Nils De Moor Sam Verboven Story Driven Modelling Story Diagrams UML class / activity / colaboration diagrams Operatoren : - Diagram begint bij - Doorloopt activities (onderling
Nadere informatieUniversiteit 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 informatieSyntax van opdracht. opdracht. expressie. variabele. = expressie ; klasse naam. methode naam. property naam += object
Syntax van opdracht opdracht klasse naam methode naam ( expressie ) ; object expressie. property naam +=, variabele = expressie ; Static gewone methoden Bewerken een object Aanroep: object. methode ( )
Nadere informatieInhoudsopgave. 1 Inleiding Situering Probleem beschrijving Wat is OCL Motivatie Doelstellingen...
Dankwoord Ik wil alle mensen bedanken die rechtstreeks of onrechtstreeks hebben meegewerkt aan het tot stand brengen van deze thesis. In de eerste plaats gaat mijn dank naar mijn ouders die deze studies
Nadere informatieNaam:... INFO / WIS-INF / ASIB / IAJ. Theorie
Theorie Beantwoord onderstaande vragen (elke vraag staat op 3 punten) door de antwoordzinnen KORT aan te vullen. 1. Wat doe je wanneer je de risico's projecteert (afschat)? Welke categorieën van risico's
Nadere informatieREEKS I. Zaterdag 6 november 2010, 9u
TEST INFORMATICA 1STE BACHELOR IN DE INGENIEURSWETENSCHAPPEN - ACADEMIEJAAR 2010-2011 REEKS I Zaterdag 6 november 2010, 9u NAAM :... VRAAG 1: MINSTENS [5 PUNTEN] Schrijf een methode minstens(), met twee
Nadere informatieVoorbeeld: Simulatie van bewegende deeltjes
Voorbeeld: Simulatie van bewegende deeltjes Simulatie - object Ruimte - objecten Deeltje - objecten Button - objecten Simulatie Samenhang van objecten sim geërfd van Form stap zelf gedeclareerd auto r1
Nadere informatieLekker snel XML met SQL (.nl)
Lekker snel met SQL (.nl In steeds meer opdrachten kom je als requirement tegen. Omdat het lekker makkelijk is of omdat de interface die je moet aanspreken het vereist. Dit is zeker het geval wanneer je
Nadere informatieInformatica. Deel II: les 2. Leibniz - erven - digitaal. Jan Lemeire Informatica deel II februari mei Parallel Systems: Introduction
Informatica Deel II: les 2 Leibniz - erven - digitaal Jan Lemeire Informatica deel II februari mei 2013 Parallel Systems: Introduction Leibniz 1646 1716 Jan Lemeire Pag. 2 / 48 Calculemus! Berechnen wir!
Nadere informatieVoortgezet Prog. voor KI
Voortgezet Prog. voor KI Docent: Michael Wilkinson IWI 142 tel. 050-3638140 (secr. 3633939) Frank Brokken RC 352 tel. 050-3633688 Voorkennis: Inleiding Programmeren voor KI (nieuwe stijl) Stof: Practicum
Nadere informatieE-Basic. E-Studio. E-Run Real-Time Experiment Generator. E-Merge. E-DataAid Spreadsheet Application for E-Prime Data Files
E-Studio Graphical Design Environment E-Basic Full Scripting Language E-Run Real-Time Experiment Generator E-Merge Data Merging Utility E-DataAid Spreadsheet Application for E-Prime Data Files E-Studio
Nadere informatievoegtoe: eerst methode bevat gebruiken, alleen toevoegen als bevat() false is
PROEF-Tentamen Inleiding programmeren (IN1608WI), X januari 2010, 9.00-11.00, Technische Universiteit Delft, Faculteit EWI, Afdeling 2. Open boek tentamen: bij het tentamen mag alleen gebruik worden gemaakt
Nadere informatieUitwerkingen 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 informatieProgrammeren 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 informatieDeel I Hoofdstuk 4: Modelleren van Toestand
Deel I Hoofdstuk 4: Modelleren van Toestand 2005 Prof Dr. O. De Troyer Toestandsmodel pag. 1 Berichten of boodschappen OO is gebaseerd op hoe de reële wereld werkt 2005 Prof. Dr. O. De Troyer Toestandsmodel
Nadere informatie