Project documentatie Project Expo

Maat: px
Weergave met pagina beginnen:

Download "Project documentatie Project Expo"

Transcriptie

1 Project documentatie Project Expo Klas: IP110 Groep:3 Groepsleden: Leonard Breitkopf Nander Konijn Onno van Gijssel Contactgegevens: 1

2 Inhoudsopgave Inhoudsopgave... 2 Inleiding... 3 De doelgroepsanalyse... 4 Het storyboard... 7 Functioneel ontwerp Technisch ontwerp

3 Inleiding Hierbij leggen wij onze projectdocumentatie van project EXPO aan u voor. Hierin zullen wij beschrijven hoe wij tijdens dit project te werk zijn gegaan. Wij zullen de volgende stappen beschrijven met daarin de aanpak en werkwijze: De doelgroep analyse Het storyboard Functioneel ontwerp Technisch ontwerp 3

4 De doelgroep analyse Voor het project Expo hebben wij een van de volgende sectoren toegewezen gekregen: Handel Industrie Zorg Onderwijs Zakelijke dienstverlening Overheid Hiervan hebben wij de sector zorg toegewezen gekregen. Deze sector is een van de belangrijkste sectoren in een land. Iedereen heeft ooit wel eens te maken gehad met een van de faciliteiten van deze sector. Het ziekenhuis, De huisarts of de apotheek. Iedereen in deze sector zorgt voor het welzijn van de patiënten en klanten die meestal noodzakelijk een bezoek moeten brengen. Binnen onze sector hebben we twee branches gekozen: Gezondheidszorg Doordat de diversiteit van een ziekenhuis erg hoog is, is dit een goede plek om onze creativiteit en expertise te uiten. Er kan veel worden verbeterd voor de patiënten en het personeel zelf. Maatschappelijke dienstverlening In de maatschappelijke dienstverlening is veel diversiteit zoals slachtofferhulp of mantelzorg. In veel van deze soorten maatschappelijke dienstverlening kan nog veel worden verbeterd. 4

5 Binnen de branche gezondheidszorg hebben wij gekozen voor de volgende organisaties. Academisch Medisch Centrum Amsterdam VU Medisch Centrum Leids Universitair Medisch Centrum Wij hebben voor deze organisaties gekozen omdat dit alle drie universitaire ziekenhuizen zijn. Hierdoor zal de technologie steeds verbeteren en uitbreiden binnen het ziekenhuis. Binnen de branche maatschappelijke dienstverlening hebben wij gekozen voor de volgende organisaties. Nursing een centrum voor ouderenzorg Mantelzorgcentrum Slachtofferhulp Nederland Deze organisaties zetten zich in voor maatschappelijke dienstverlening. Veel van dit soort organisaties kunnen wel verbetering gebruiken in de ICT hierbij zou ITopia een goede uitkomst bieden. Wij hebben voor onze MME gekozen voor ziekenhuizen. Binnen het ziekenhuis hebben we de volgende doelgroepen: Directeuren en managers Klanten/patiënten De directeuren en managers willen het ziekenhuis zo klantvriendelijk mogelijk maken. Maar ze willen ook dat dit niet teveel geld gaat kosten. De klanten willen altijd zo snel en vriendelijk mogelijk geholpen worden. Wij willen voor onze MME een systeem ontwerpen wat de behoeften van beide doelgroepen tegoedkomt. 5

6 Personalia: Sander de Ruiter Sander de Ruiter is manager in het Vu medisch centrum. Hij is manager personeelszaken dus moet ervoor zorgen dat alle klanten op tijd worden geholpen door zijn personeel en zo goed mogelijk. Dit doet hij door Mensen aan te nemen die klantgericht zijn en graag bijdragen aan de gezondheid van de medemens. Sander is 34 jaar en heeft naast zijn werk ook een druk sociaal leven. Hij heeft een vrouw genaamd Bernadette zij is 32 jaar. Samen hebben ze 2 kinderen, Constantijn is 16 jaar en zit op het Jac P. Thijsse college. Gijsbertha is 11 en zit nog op de basisschool. Sander heeft een goed betaalde baan in het ziekenhuis en rijdt in een Porsche Panamera waar zijn hele gezin inpast. Sander heeft voor zijn werk veel communicatieve vaardigheden nodig. Dit oefent hij ook in zijn vrije tijd bij de basketbalvereniging als trainer. Hans de Vries Hans de Vries is werkt in Academisch medisch centrum Amsterdam. Hans is daar project manager. Verschillende projecten in het ziekenhuis worden door Hans geleid. Zoals de verbouwing van de afdeling radiologie. Hier zorgt Hans ervoor dat alles er praktisch mogelijk word ingericht en het project op tijd af komt. Hans is 26 jaar en woont in Zandvoort. Hij heeft sinds een paar jaar een vriendin genaamd Mieke, Mieke is 25 jaar. Hans sport in het weekend graag en zit op de lokale voetbalclub. Hans gaat iedere dag met de auto naar zijn werk. Hij rijdt in een Citroen Xantia. Hans moet ook in zijn vrije tijd goed bereikbaar zijn voor zijn projecten daarom heeft hij altijd een mobiel van de zaak op zak. Anne Bakker Anne Bakker is al een paar jaar patiënt van het VU medisch centrum. Anne heeft last van haar hart en moet om de 2 weken op controle. Anne vindt het fijn in het ziekenhuis als ze snel geholpen word zodat ze meteen naar haar afspraak kan. Dit komt nog niet vaak voor dus ze vindt dat dit nog goed verbeterd kan worden. Anne kan vanwege haar problemen geen zwaar werk doen en werkt dus niet heel veel. Anne werkt als oppas bij andere mensen thuis die het druk hebben. Ze heeft veel plezier in het oppassen en dit geeft haar veel afleiding. Anne is 48 jaar en getrouwd met haar man Patrick van 47 jaar. Zelf hebben ze geen kinderen. 6

7 Het storyboard 7

8 8

9 In ons storyboard kan je heel simpel zien hoe onze multimedia experience werkt. Plaatje 1 is de stand als er niemand binnen is. Plaatje 2 is de bewegingssensor afgebeeld als iemand daardoor heen loopt kom je bij het menu zoals afgebeeld in plaatje 3. Plaatje 4 is de booth van boven afgebeeld met de dingen die erop staan en erin zijn verwerkt. Plaatje 5 is wat er gebeurd als er een van de nfc kaarten voor de reader wordt gehouden. En plaatje 6 is weer het menu als deze gereset wordt door een nfc kaart. 9

10 Functioneel ontwerp De Stand van onze multimedia experience zal bestaan uit 2 beamers aangestuurd door 2 laptops. Op een van de beamers zal een reclame filmpje constant lopen zolang er niemand in de stand is. Zodra er iemand de stand inloopt word het reclame filmpje gestopt en zal het menu van onze multimedia experience verschijnen. Dit zal gebeuren door middel van een bewegingssensor, deze zal detecteren als iemand de stand binnenloopt en een commando aan de computer doorgeven dat deze de multimedia experience in het menu zal zetten. Vervolgens zal er een menu verschijnen met 5 opties, deze opties staan allemaal voor een business unit. De namen van de business units zelf zullen niet op het scherm verschijnen maar een klantvriendelijke naam. Op het linker scherm zijn 3 opties te zien en rechterscherm 2 optiesmet daaronder het ITopia logo. De keuze tussen de verschillende opties zal worden gemaakt door een nfc kaart. Deze staan op een tafel in het midden van de stand in een daarvoor bestemd rekje. Voor iedere business unit is een aparte nfc kaart. Onder deze tafel zal een nfc reader bevestigd worden. De nfc kaart van de gewenste business unit zal alleen boven het stuk tafel gehouden hoeven worden waar de nfc reader onder zit en er zal informatie en/of een filmpje over de business unit op de schermen komen. Er zal ook een neutrale nfc kaart zijn waarbij de multimedia experience gereset zal worden. 10

11 Technisch ontwerp Er waren twee mogelijke keuzes gepresenteerd door teamleden. De eerste was om het geheel te gaan bouwen in een Java omgeving met een interface op basis van Swing en de media presentatie op basis van het Java Media Framework. Dit idee werd gerivaliseerd door een ietwat meer ambitieus plan. Dit plan betrok drie programmeertalen en één interface taal bij de bouw van het project. Doordat dit plan veel ambitieuzer en dus ook veel moeilijker zou zijn was niet gelijk iedereen voor dit plan. Toch is er uiteindelijk gekozen voor het inzetten van dit plan omdat het resultaat gewoonweg veel mooier zou zijn. Wij hebben gebruik gemaakt van 2 Phidgets. Beide Phidgets worden uitgelezen door middel van het gebruik van Java. De data word dan direct gebruikt en er word een event via het http-protocol naar de kern van het systeem gestuurd. De code achter het proces van de Phidgets word in bijlage 1.1, 1.2, 1.3 laten zien en ook verhelderd. In de kern, die gebaseerd is op de taal C# en techniek MVC 3, word het event dan weer klaar gemaakt voor het verzenden naar de web clients. Het word verzonden door een eventstream naar de clients toe, zodat de clients het kunnen oppakken als server sent events, welke in de nieuwe html 5 standaard zijn geïmplementeerd. De code achter de kern word in bijlage 2.1, 2.2, 2.3 en 2.4 laten zien en verhelderd. De clients weten dan wat er moet gebeuren met welke events en zorgen ervoor dat de aangevraagde onderdelen worden gestart. Dit kan dus betekenen dat de reclameloop word beëindigt of dat er een business unit presentatie word gestart. De clients zijn gebaseerd op JavaScript voor de communicatie met de kern en html5 en CSS voor het presenteren van de verschillende onderdelen. De JavaScript & interface code worden in bijlage 3.1 laten zien en verhelderd. 11

12 Bijlage 1.1 Auteur Code: Nander Konijn Taal: Java import com.phidgets.*; import com.phidgets.event.*; import EXPO.Controller.*; public class Phidgets public static final void main(string args[]) throws Exception RFIDPhidget rfid; EXPOController expocontroller = new EXPOController(); rfid = new RFIDPhidget(); TagGainListener tgl = new TagGainListener(); public void taggained(taggainevent tag) if(tag.getvalue().equals("1e00acf06b")) System.out.println("SE"); expocontroller.startse(); if(tag.getvalue().equals("1e00ad42ed")) System.out.println("SNE"); expocontroller.startsne(); else if(tag.getvalue().equals("1e00ad2f48")) System.out.println("TC"); expocontroller.starttc(); else if(tag.getvalue().equals("1e00ad37be")) System.out.println("GD"); expocontroller.startgd(); else if(tag.getvalue().equals("1e00ad2b5e")) System.out.println("HCD"); expocontroller.starthcd(); else if(tag.getvalue().equals("1e00ad4796")) System.out.println("ITM"); expocontroller.startitm(); 12

13 ; rfid.addattachlistener(new AttachListener() public void attached(attachevent phidget) Try ((RFIDPhidget)phidget.getSource()).setAntennaOn(true); ((RFIDPhidget)phidget.getSource()).setLEDOn(true); catch (PhidgetException ex) System.out.println("attachment of " + phidget); ); rfid.adddetachlistener(new DetachListener() public void detached(detachevent phidget) System.out.println("detachment of " + phidget); ); rfid.adderrorlistener(new ErrorListener() public void error(errorevent ee) System.out.println("error event for " + ee); ); rfid.addtaggainlistener(tgl); rfid.addtaglosslistener(new TagLossListener() public void taglost(taglossevent tag) System.out.println(tag); ); 13

14 rfid.addoutputchangelistener(new OutputChangeListener() public void outputchanged(outputchangeevent tag) System.out.println(tag); ); rfid.openany(); System.out.println("waiting for RFID attachment..."); rfid.waitforattachment(); System.in.read(); rfid.close(); rfid = null; System.out.println("Done"); if (false) System.out.println("wait for finalization..."); System.gc(); In dit stuk code word laten zien hoe de tags van de verschillende business units worden uitgelezen uit de scanner en daarna worden doorgegeven aan de EXPO Controller, die in bijlage 1.2 word verhelderd. Dit gebeurd door middel van het gebruik van events die de phidget21 jar blootstellen voor het gebruik met de Phidgets. 14

15 Bijlage 1.2 Auteur Code: Leonard Breitkopf Taal: Java import com.sun.org.apache.xerces.internal.impl.dv.util.base64; import flexjson.*; import java.io.*; import java.net.*; import java.security.*; public class EXPOController private String ServerName = " private String token; private JSONDeserializer<StandardResult> serializer = new JSONDeserializer<>(); public EXPOController(String ServerName, String HandlerName) throws Throwable this.servername = " + ServerName + "/" + HandlerName + "/"; try SessionResult SessRes = (new JSONDeserializer<SessionResult>()).deserialize( (new BufferedReader(new InputStreamReader((new URL(ServerName + "create/" + Base64.encode(MessageDigest.getInstance("hmacMD5").digest(("EXPO ").getBytes("ASCII"))) ).openstream()))).readline())); if (SessRes.Action) this.token = SessRes.Token; else throw new Exception(); catch (Exception E) throw new ControllerException("The action was unsuccessfull."); 15

16 public EXPOController() throws Throwable try SessionResult SessRes = (new JSONDeserializer<SessionResult>()).deserialize( (new BufferedReader(new InputStreamReader((new URL(ServerName + "create/" + Base64.encode(MessageDigest.getInstance("hmacMD5").digest(("EXPO ").getBytes("ASCII"))) ).openstream()))).readline())); if (SessRes.Action) this.token = SessRes.Token; else throw new Exception(); catch (Exception E) throw new ControllerException("The action was unsuccessfull."); public void StartLoop() throws Throwable try StandardResult response = serializer.deserialize((new BufferedReader(new InputStreamReader(( new URL(ServerName + "startloop/" + token)).openstream()))).readline()); if (!response.action) throw new ControllerException("The action was unsuccessfull."); catch (Exception E) throw new Exception("An exception has occured on runtime."); 16

17 public void ExitLoop() throws Throwable try StandardResult response = serializer.deserialize((new BufferedReader(new InputStreamReader(( new URL(ServerName + "exitloop/" + token)).openstream()))).readline()); if (!response.action) throw new ControllerException("The action was unsuccessfull."); catch (Exception E) throw new Exception("An exception has occured on runtime."); public void StartSE() throws Throwable try StandardResult response = serializer.deserialize((new BufferedReader(new InputStreamReader(( new URL(ServerName + "startse/" + token)).openstream()))).readline()); if (!response.action) throw new ControllerException("The action was unsuccessfull.");\ catch (Exception E) throw new Exception("An exception has occured on runtime."); public void StartITM() throws Throwable try StandardResult response = serializer.deserialize((new BufferedReader(new InputStreamReader(( new URL(ServerName + "startitm/" + token)).openstream()))).readline()); if (!response.action) throw new ControllerException("The action was unsuccessfull."); catch (Exception E) throw new Exception("An exception has occured on runtime."); 17

18 public void StartSNE() throws Throwable try StandardResult response = serializer.deserialize((new BufferedReader(new InputStreamReader(( new URL(ServerName + "startsne/" + token)).openstream()))).readline()); if (!response.action) throw new ControllerException("The action was unsuccessfull."); catch (Exception E) throw new Exception("An exception has occured on runtime."); public void StartHCD() throws Throwable try StandardResult response = serializer.deserialize((new BufferedReader(new InputStreamReader(( new URL(ServerName + "starthcd/" + token)).openstream()))).readline()); if (!response.action) throw new ControllerException("The action was unsuccessfull."); catch (Exception E) throw new Exception("An exception has occured on runtime."); public void StartGD() throws Throwable try StandardResult response = serializer.deserialize((new BufferedReader(new InputStreamReader(( new URL(ServerName + "startgd/" + token)).openstream()))).readline()); if (!response.action) throw new ControllerException("The action was unsuccessfull."); catch (Exception E) throw new Exception("An exception has occured on runtime."); 18

19 public void StartTC() throws Throwable try StandardResult response = serializer.deserialize((new BufferedReader(new InputStreamReader(( new URL(ServerName + "starttc/" + token)).openstream()))).readline()); if (!response.action) throw new ControllerException("The action was unsuccessfull."); catch (Exception E) throw new Exception("An exception has occured on runtime."); private class StandardResult public boolean Action; private class SessionResult public boolean Action; public String Token; Dit is de EXPO Controller het word ingezet als intermediair tussen de kern en de code die de Phidgets afhandelt. Dit is zo opgezet om verwarring te voorkomen en eventuele problemen te voorkomen. Deze code zorgt ervoor dat op de instantiëring van een nieuw object van het type EXPOController er een sessie word aangemaakt op de server waaraan dan later de clients weer kunnen hangen om gebruik te maken van de events binnen de sessie. Uiteindelijk na het instantiëren kan er eenvoudig een event gestuurd worden door het simpelweg aanroepen van de corresponderende functie. 19

20 Bijlage 1.3 Auteur Code: Leonard Breitkopf Taal: Java public class ControllerException extends Throwable public String Message; public ControllerException(String Message) this.message = Message; Deze class ter ondersteuning van de EXPOController class. Het zorgt ervoor dat de gebruiker eenvoudig kan zien welke fout er is ontstaan tijdens het uitvoeren van de code van EXPOController. 20

21 Bijlage 2.1 Auteur Code: Leonard Breitkopf Taal: C#.Net using System; using System.Collections.Generic; using System.Linq; using System.Threading; using System.Web; namespace Project.EXPO public class SessionResult public bool Action get; set; public string SessionToken get; set; public class StandardResult public bool Action get; set; public class EventResult public string Event get; set; public string Data get; set; public class SessionInput public bool leftright get; set; public string token get; set; public class SendSession public string Token get; set; public bool LeftFilled get; set; public bool RightFilled get; set; 21

22 public class SessionWrap public string Event get; set; public string Data get; set; public bool LeftFilled get; set; public bool RightFilled get; set; public Dictionary<int, ManualResetEvent> EventPool = new Dictionary<int, ManualResetEvent>(); Dit zijn de types die gebruikt zijn tijdens het opzetten van de omgeving van de kern. Deze types worden gebruikt voor serialisatie of voor het vast houden van andere objecten. 22

23 Bijlage 2.2 Auteur Code: Leonard Breitkopf Taal: C#.Net using System; using System.Collections.Generic; using System.Linq; using System.Threading; using System.Web; namespace Project.EXPO public class Collective public static Dictionary<string, SessionWrap> SessionPool = new Dictionary<string, SessionWrap>(); Dit object word gebruikt om de verschillende sessies in te bewaren tijdens het gebruik van de kern. 23

24 Bijlage 2.3 Auteur Code: Leonard Breitkopf Taal: C#.Net using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace Project.EXPO public class ServerSentEventResult : ActionResult public delegate string GetContent(); public GetContent Content get; set; public int Version get; set; public override void ExecuteResult(ControllerContext context) if (context == null) throw new ArgumentNullException("context"); if (this.content!= null) HttpResponseBase response = context.httpcontext.response; response.contenttype = "text/event-stream"; response.bufferoutput = false; response.charset = null; 24

25 string[] newstrings = context.httpcontext.request.headers.getvalues("last-event-id"); if (newstrings == null newstrings[0]!= this.version.tostring()) try response.write("retry:250\n"); response.write(string.format("id:0\n", this.version)); response.write(string.format("data:0\n\n", this.content())); response.end(); catch (HttpException e) else response.write(string.empty); Dit zorgt ervoor dat de code in de EventController leesbaar blijft en het zorgt ervoor dat er makkelijker gebruik gemaakt kan worden van de omgeving doordat je meer overzicht behoud. Dit stuk zorgt eigenlijk alleen voor het prepareren van de data en streams voor het verzenden van de events. 25

26 Bijlage 2.4 Auteur Code: Leonard Breitkopf Taal: C#.Net using System; using System.Collections.Generic; using System.Linq; using System.Security.Cryptography; using System.Threading; using System.Web; using System.Web.Mvc; using System.Text; using System.Web.Script.Serialization; namespace Project.EXPO.Controllers public class EventController : Controller public JavaScriptSerializer Serializer = new JavaScriptSerializer(); public ActionResult Index() return Content("Error: Call the event handler with the appropriate parameters."); #region "Client Send Events" public ActionResult Create(string verifier) if (verifier == Convert.ToBase64String((new HMACMD5()).ComputeHash(Encoding.ASCII.GetBytes("EXPO ")))) String token = Convert.ToBase64String((new HMACMD5()).ComputeHash(Encoding.ASCII.GetBytes((new Random()).Next(10000, ).ToString()))); Collective.SessionPool.Add(token, new SessionWrap()); return Content(Serializer.Serialize(new SessionResult() Action = true, SessionToken = token )); else return Content(Serializer.Serialize(new StandardResult() Action = false )); public ActionResult StartLoop(string token) 26

27 try Collective.SessionPool[token].Event = "onstartloop"; Collective.SessionPool[token].Data = "true"; foreach (KeyValuePair<int, ManualResetEvent> E in Collective.SessionPool[token].EventPool) E.Value.Set(); return Content(Serializer.Serialize(new StandardResult() Action = true )); catch (Exception e) return Content(Serializer.Serialize(new StandardResult() Action = false )); public ActionResult ExitLoop(string token) try Collective.SessionPool[token].Event = "onexitloop"; Collective.SessionPool[token].Data = "true"; foreach (KeyValuePair<int, ManualResetEvent> E in Collective.SessionPool[token].EventPool) E.Value.Set(); return Content(Serializer.Serialize(new StandardResult() Action = true )); catch (Exception e) return Content(Serializer.Serialize(new StandardResult() Action = false )); public ActionResult StartSE(string token) try Collective.SessionPool[token].Event = "onstartse"; Collective.SessionPool[token].Data = "true"; foreach (KeyValuePair<int, ManualResetEvent> E in Collective.SessionPool[token].EventPool) E.Value.Set(); return Content(Serializer.Serialize(new StandardResult() Action = true )); catch (Exception e) return Content(Serializer.Serialize(new StandardResult() Action = false )); 27

28 public ActionResult StartITM(string token) try Collective.SessionPool[token].Event = "onstartitm"; Collective.SessionPool[token].Data = "true"; foreach (KeyValuePair<int, ManualResetEvent> E in Collective.SessionPool[token].EventPool) E.Value.Set(); return Content(Serializer.Serialize(new StandardResult() Action = true )); catch (Exception e) return Content(Serializer.Serialize(new StandardResult() Action = false )); public ActionResult StartSNE(string token) try Collective.SessionPool[token].Event = "onstartsne"; Collective.SessionPool[token].Data = "true"; foreach (KeyValuePair<int, ManualResetEvent> E in Collective.SessionPool[token].EventPool) E.Value.Set(); return Content(Serializer.Serialize(new StandardResult() Action = true )); catch (Exception e) return Content(Serializer.Serialize(new StandardResult() Action = false )); public ActionResult StartHCD(string token) try Collective.SessionPool[token].Event = "onstarthcd"; Collective.SessionPool[token].Data = "true"; foreach (KeyValuePair<int, ManualResetEvent> E in Collective.SessionPool[token].EventPool) E.Value.Set(); 28

29 return Content(Serializer.Serialize(new StandardResult() Action = true )); catch (Exception e) return Content(Serializer.Serialize(new StandardResult() Action = false )); public ActionResult StartGD(string token) try Collective.SessionPool[token].Event = "onstartgd"; Collective.SessionPool[token].Data = "true"; foreach (KeyValuePair<int, ManualResetEvent> E in Collective.SessionPool[token].EventPool) E.Value.Set(); return Content(Serializer.Serialize(new StandardResult() Action = true )); catch (Exception e) return Content(Serializer.Serialize(new StandardResult() Action = false )); public ActionResult StartTC(string token) try Collective.SessionPool[token].Event = "onstarttc"; Collective.SessionPool[token].Data = "true"; foreach (KeyValuePair<int, ManualResetEvent> E in Collective.SessionPool[token].EventPool) E.Value.Set(); return Content(Serializer.Serialize(new StandardResult() Action = true )); catch (Exception e) return Content(Serializer.Serialize(new StandardResult() Action = false )); #endregion #region "Server Sent Events" public ActionResult Hook(string token) try 29

30 ManualResetEvent Event = new ManualResetEvent(false); int EID = (new Random()).Next(100, ); Collective.SessionPool[token].EventPool.Add(EID, Event); Event.WaitOne(); Collective.SessionPool[token].EventPool.Remove(EID); return new ServerSentEventResult() Content = () => return Serializer.Serialize(new EventResult() Data = Collective.SessionPool[token].Data, Event = Collective.SessionPool[token].Event );, Version = (new Random()).Next(100, ) ; catch (Exception e) return Content("Error: An error has occured on the hooked thread. Re-hook to try again."); public ActionResult SetSession(string input) try SessionInput SessIn = Serializer.Deserialize<SessionInput>(input); if (SessIn.leftRight) Collective.SessionPool[SessIn.token].RightFilled = true; else Collective.SessionPool[SessIn.token].LeftFilled = true; return Content(Serializer.Serialize(new StandardResult() Action = true )); catch (Exception e) return Content(Serializer.Serialize(new StandardResult() Action = false )); public ActionResult GetSessions() List<SendSession> Temp = new List<SendSession>(); foreach (KeyValuePair<string, SessionWrap> E in Collective.SessionPool) if (E.Value.LeftFilled == false E.Value.RightFilled == false) Temp.Add(new SendSession() Token = E.Key, LeftFilled = E.Value.LeftFilled, RightFilled = E.Value.RightFilled ); 30

31 return Content(Serializer.Serialize(Temp.ToArray())); #endregion Dit is waar het echte werk gebeurt. Hierin worden de events van de Phidgets opgevangen en daarna weer doorgestuurd naar de clients. Alle data komt hier binnen als JSON en word ook weer verzonden als JSON. Dit zorgt ervoor dat de JavaScript omgeving minder ingewikkeld word. 31

32 Bijlage 3.1 Auteur Code: Leonard Breitkopf Taal: JavaScript function EventHandler(sessionToken) var registeredevents = new Array(); this.registerevent = function (name, e) registeredevents.push(new keyvaluepair(name, e)); ; this.startlistener = function () var esource = new EventSource('event/hook/' + sessiontoken); esource.onmessage = function (e) var data = JSON.parse(e.data); if (data.data == 'true') for (e in registeredevents) e = registeredevents[e]; if (e.key == data.event) e.value(); ; esource.onopen = function () console.log('connection is open.'); ; ; this.setsessiontoken = function (leftright, token) var req = new XMLHttpRequest(); req.open('get', 'event/setsession/' + JSON.stringify(new tokenresult(leftright, token)), false); req.send(); if (JSON.parse(req.responseText()).Action == true) sessiontoken = token; return true; else return false; ; 32

33 this.getavailablesessions = function () var req = new XMLHttpRequest(); req.open('get', 'event/getsessions', false); req.send(); return JSON.parse(req.responseText()); ; function keyvaluepair(key, value) this.key = key; this.value = value; ; function tokenresult(leftright, token) this.leftright = leftright; this.token = token; ; ; window.eventhandler = new EventHandler(''); Dit zorgt ervoor dat je de events in JavaScript kunt opvangen en eenvoudig mee kunt omgaan in de omgeving. Dit systeem maakt gebruik van HTML 5. Ook kun je hiermee de client aan een sessie in de kern hangen en aangeven of het het linker of het rechter scherm is waar het om gaat. 33

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

PROJECT EXPO PROJECTDOCUMENT

PROJECT EXPO PROJECTDOCUMENT PROJECT EXPO PROJECTDOCUMENT Auteur(s): Bas Aalders, Daryl Dekking, Dion Kruijswijk, Thomas de Luca, Tom Hoogeveen, Koen Veelenturf Schrijver Dion Kruijswijk, Koen Veelenturf Versie: 0.4 Status: Afronding

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

ASP.NET Test 2009-2010. Jan Van Ryckeghem

ASP.NET Test 2009-2010. Jan Van Ryckeghem ASP.NET Test 2009-2010 Jan Van Ryckeghem Inhoud Exceptionhandling H4... 3 Try Catch slide 25... 3 Error pagina slide 29... 3 Error.aspx... 3 Error.aspx.cs... 4 Web.config... 4 Logbestand aanmaken... 4

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

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

Universiteit van Amsterdam FNWI. Voorbeeld van tussentoets Inleiding programmeren

Universiteit van Amsterdam FNWI. Voorbeeld van tussentoets Inleiding programmeren Universiteit van Amsterdam FNWI Voorbeeld van tussentoets Inleiding programmeren Opgave 1: Wat is de uitvoer van dit programma? public class Opgave { static int i = 0 ; static int j = 1 ; int i = 1 ; int

Nadere informatie

Kleine cursus PHP5. Auteur: Raymond Moesker

Kleine cursus PHP5. Auteur: Raymond Moesker Kleine cursus PHP5 Auteur: Raymond Moesker Kleine cursus PHP PHP is platform en CPU onafhankelijk, open source, snel, heeft een grote userbase, het is object georiënteerd, het wordt omarmd door grote bedrijven

Nadere informatie

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

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

MVC BASICS 2. Kevin Picalausa

MVC BASICS 2. Kevin Picalausa MVC BASICS 2 Kevin Picalausa 1 Forms 2 Action en Method Action Vertelt de Browser naar waar de form data (informatie) door te zenden. URL kan relatief of absoluut zijn. Method De manier waarop de form

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

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

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

Javascript oefenblad 1

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

Nadere informatie

Modelleren en Programmeren

Modelleren en Programmeren Modelleren en Programmeren Jeroen Bransen 18 december 2015 Overerving (inheritance) Constructors Overriding Inheritance demo Exceptions Zelf exceptions veroorzaken Overerving (inheritance) 2-dimensionaal

Nadere informatie

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

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

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

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

Programmeren in Java 3

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

Nadere informatie

Eindtoets XML: Theorie en toepassingen

Eindtoets XML: Theorie en toepassingen Eindtoets XML: Theorie en toepassingen Deze eindtoets geeft een indruk, niet meer en niet minder, van mogelijke tentamenvragen. De spreiding over verschillende onderwerpen zal nooit bij elk tentamen hetzelfde

Nadere informatie

Een fragment wordt afgeleid van de basis klasse "Fragment".

Een fragment wordt afgeleid van de basis klasse Fragment. Android fragmenten 1/5 Fragmenten Klasse Een fragment wordt afgeleid van de basis klasse "Fragment". package com.android.cursustekst; import java.text.simpledateformat; import java.util.arraylist; import

Nadere informatie

Teamhandleiding DOMjudge (versie 2.2.0muKP) 31 mei 2008

Teamhandleiding DOMjudge (versie 2.2.0muKP) 31 mei 2008 judge Teamhandleiding DOMjudge (versie..0mukp) 31 mei 008 /\ DOM DOM judge Inhoudsopgave 1 Inleiding Samenvatting.1 Inlezen en wegschrijven............................... Insturen van oplossingen...............................3

Nadere informatie

Uitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, 13.30 15.30 uur

Uitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, 13.30 15.30 uur Uitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, 13.30 15.30 uur 1. deze opgave telt voor 30% van het totaal. Schrijf een compleet programma, dat door de gebruiker vanaf

Nadere informatie

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

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

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

Dit kan gebruikt worden in zowel een ASP.NET web applicatie als een desktop applicatie.

Dit kan gebruikt worden in zowel een ASP.NET web applicatie als een desktop applicatie. Introductie Dit artikel laat zien hoe je een Image in een C# applicatie kan opslaan in een database en het kan ophalen uit de database om het te laten zien. Voor de database gebruiken we MS SQL maar voor

Nadere informatie

Tentamen Object Georiënteerd Programmeren TI1200 30 januari 2013, 9.00-12.00 Afdeling SCT, Faculteit EWI, TU Delft

Tentamen Object Georiënteerd Programmeren TI1200 30 januari 2013, 9.00-12.00 Afdeling SCT, Faculteit EWI, TU Delft Tentamen Object Georiënteerd Programmeren TI1200 30 januari 2013, 9.00-12.00 Afdeling SCT, Faculteit EWI, TU Delft Bij dit tentamen mag je geen gebruik maken van hulpmiddelen zoals boek of slides. Dit

Nadere informatie

Game of Life in Java

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

Nadere informatie

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

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

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

Deel 1 : Gesloten Boek

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

Nadere informatie

Een stoomcursus door Edgar de Graaf, november 2006

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

Nadere informatie

Les 9: formulier controle met javascript.

Les 9: formulier controle met javascript. Les 9: formulier controle met javascript. Javascript is erg veel gebruikt bij internet toepassingen. In tegenstelling tot PHP, wat een server side scripting is, is java client side scripting. Dwz, niet

Nadere informatie

Aquo Domeintabellen Services (Aquo DS) Handleiding Webservice

Aquo Domeintabellen Services (Aquo DS) Handleiding Webservice Aquo Domeintabellen Services (Aquo DS) Handleiding Webservice handleiding voor de programmeur Auteur: Informatiehuis Water Documentbeheer Wijzigingshistorie Datum Versie Auteur Wijziging Aat van den Heuvel

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

Keuzeverslag. Mijn keuze is [IT Management]

Keuzeverslag. Mijn keuze is [IT Management] Keuzeverslag Mijn keuze is [IT Management] Studentnaam : Onno van Gijssel Studentnummer : 500664958 Klas : IP110 Emailadres : onno.van.gijssel@hva.nl Datum : 01-11-2012 Inhoudsopgave Inhoudsopgave... 1

Nadere informatie

AJAX (XMLHttpRequest)

AJAX (XMLHttpRequest) AJAX (XMLHttpRequest) Ajax is hot. De meesten die met webdesign bezig zijn hebben er wel al van gehoord, veronderstel ik. Voor diegenen die er nog niet van hoorden, of nog niet mee werkten volgt hier een

Nadere informatie

Aanvullende toets Gameprogrammeren Woensdag 5 januari 2011, uur

Aanvullende toets Gameprogrammeren Woensdag 5 januari 2011, uur Dit tentamen is in elektronische vorm beschikbaar gemaakt door de TBC van A Eskwadraat. A Eskwadraat kan niet aansprakelijk worden gesteld voor de gevolgen van eventuele fouten in dit tentamen. Aanvullende

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

INFITT01 Internettechnologie WEEK 2

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

Nadere informatie

Dynamische webapplicaties in Java

Dynamische webapplicaties in Java Dynamische webapplicaties in Java October 7, 2006 In java is het mogelijk dynamische webpagina s te implementeren. De code om de dynamische gegevens te genereren staat in servlets of Java Server Pages

Nadere informatie

API...1 Identificatie...1 Opties...2 Acties...3 Webserver...6 Heartbeat...6 Buffer groottes...8

API...1 Identificatie...1 Opties...2 Acties...3 Webserver...6 Heartbeat...6 Buffer groottes...8 API API...1 Identificatie...1 Opties...2 Acties...3 Webserver...6 Heartbeat...6 Buffer groottes...8 Identificatie Alle programma's communiceren met elkaar door gebruik te maken van JSON objecten. Het normale

Nadere informatie

Dynamische gebruikersbeslissingen in SAP Workflow

Dynamische gebruikersbeslissingen in SAP Workflow Dynamische gebruikersbeslissingen in SAP Workflow Inleiding Een gebruikersbeslissing in een SAP Workflow definitie biedt de mogelijkheid om een optiescherm aan de gebruiker aan te bieden. Hiermee kan de

Nadere informatie

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

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

Nadere informatie

Tentamen Objectgeorienteerd Programmeren IN1205 Voorbeeld

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

Nadere informatie

Uitwerking Eerste deeltentamen Mobiel programmeren - versie 1 Vrijdag 23 december 2016, uur

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

Dynamische Websites. Week 10

Dynamische Websites. Week 10 Dynamische Websites Week 10 INFO Feedback vraag het in de labo s als je feedback wilt op je code Lessen op 5/12 en 12/12 om 17.15 op 19/12 om 11.00 KLEURENCODE GROEN = zelf kunnen schrijven PAARS = code

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

Programmeren 1 20 januari 2012 Prof. T. Schrijvers

Programmeren 1 20 januari 2012 Prof. T. Schrijvers Programmeren 1 20 januari 2012 Prof. T. Schrijvers Instructies Schrijf al je antwoorden op deze vragenbladen (op de plaats die daarvoor is voorzien). Geef ook je kladbladen af. Bij heel wat vragen moet

Nadere informatie

http://www.liacs.nl/home/kosters/java/

http://www.liacs.nl/home/kosters/java/ sheets Programmeren 1 Java college 2, Walter Kosters De sheets zijn gebaseerd op de hoofdstukken 2 tot en met 6 van: D. Bell en M. Parr, Java voor studenten, Prentice Hall, 2002 http://www.liacs.nl/home/kosters/java/

Nadere informatie

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

Elementary Data Structures 3

Elementary Data Structures 3 Elementary Data Structures 3 Ferd van Odenhoven Fontys Hogeschool voor Techniek en Logistiek Venlo Software Engineering 29 september 2014 ODE/FHTBM Elementary Data Structures 3 29 september 2014 1/14 Meer

Nadere informatie

NAAM: Programmeren 1 Examen 29/08/2012

NAAM: Programmeren 1 Examen 29/08/2012 Programmeren 29 augustus 202 Prof. T. Schrijvers Instructies Schrijf al je antwoorden op deze vragenbladen (op de plaats die daarvoor is voorzien). Geef ook je kladbladen af. Bij heel wat vragen moet je

Nadere informatie

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

APPLICATIEBOUW 3E COLLEGE: OBJECT GEORIËNTEERD PROGRAMMEREN, METHODEN, PARAMETERS, SCOPE VAN VARIABELEN. Onderdeel van SmartProducts

APPLICATIEBOUW 3E COLLEGE: OBJECT GEORIËNTEERD PROGRAMMEREN, METHODEN, PARAMETERS, SCOPE VAN VARIABELEN. Onderdeel van SmartProducts APPLICATIEBOUW 3E COLLEGE: OBJECT GEORIËNTEERD PROGRAMMEREN, METHODEN, PARAMETERS, SCOPE VAN VARIABELEN Onderdeel van SmartProducts INHOUD COLLEGE 3 Scope van variabelen {3.9} Class ontwerpen en maken,

Nadere informatie

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

Implementatie AssurePay ASP.NET. ideal

Implementatie AssurePay ASP.NET. ideal Implementatie AssurePay ASP.NET ideal Implementatie AssurePay ASP.NET 2 van 11 Inhoudsopgave Microsoft ASP.NET... 3 Classic ASP... 9 Implementatie AssurePay ASP.NET 3 van 11 Microsoft ASP.NET Implementeren

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

Presentatie Michiel. Informaticastage najaar 2004

Presentatie Michiel. Informaticastage najaar 2004 Presentatie Michiel michielborkent@gmail.com Informaticastage najaar 2004 Inhoud presentatie: Wie ben ik? Over mijn stage Informatie over Lisp Wie/wat ben ik? Student Technische Informatica, Universiteit

Nadere informatie

Externe pagina s integreren in InSite en OutSite

Externe pagina s integreren in InSite en OutSite Externe pagina s integreren in InSite en OutSite Document-versie: 1.1 Datum: 04-10-2013 2013 AFAS Software Leusden Niets uit deze uitgave mag verveelvoudigd worden en/of openbaar gemaakt worden door middel

Nadere informatie

Katholieke Hogeschool Kempen ASP

Katholieke Hogeschool Kempen ASP Katholieke Hogeschool Kempen Campus Geel Departement Handelswetenschappen en Bedrijfskunde 3de jaar Toegepaste Informatica ASP www.projectchatroom.be Yorkim Parmentier 3TI4 Andy Geluykens 3TI4 Academiejaar

Nadere informatie

Design patterns.

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

Nadere informatie

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

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

Lessen Java: Reeks 3. David Blinder Jan G. Cornelis

Lessen Java: Reeks 3. David Blinder Jan G. Cornelis Lessen Java: Reeks 3 David Blinder Jan G. Cornelis Vraag 0: Gebruik van de Debugger Syntax errors: fouten door verkeerd gebruik van Javacommandos code zal niet compileren. Locatie van de fout is bijna

Nadere informatie

Inleiding Software Engineering! Unit Testing, Contracten, Debugger! 13 Februari 2014!

Inleiding Software Engineering! Unit Testing, Contracten, Debugger! 13 Februari 2014! Inleiding Software Engineering Unit Testing, Contracten, Debugger 13 Februari 2014 Beknopte info over Unit Testing en Contracten kan je vinden op het einde van dit document. Eclipse beschikt over een handige

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

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

Deeltentamen Grammatica s en ontleden 22 december 2005

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

Nadere informatie

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

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

Technisch ontwerp. Projectteam 6. Project "Web Essentials" 02 april 2009. Versie 2.1.0

Technisch ontwerp. Projectteam 6. Project Web Essentials 02 april 2009. Versie 2.1.0 Projectteam 6 Faculteit Natuur en Techniek Hogeschool Utrecht Projectleider: Hans Allis, hans.allis@student.hu.nl Technisch ontwerp Project "Web Essentials" 02 april 2009 Versie 2.1.0 Teamleden: Armin

Nadere informatie

Programmeren 1 23 januari 2013 Prof. T. Schrijvers

Programmeren 1 23 januari 2013 Prof. T. Schrijvers Programmeren 1 23 januari 2013 Prof. T. Schrijvers Instructies Schrijf al je antwoorden op deze vragenbladen (op de plaats die daarvoor is voorzien). Geef ook je kladbladen af. Bij heel wat vragen moet

Nadere informatie

INFITT01 - Internettechnologie WEEK 8

INFITT01 - Internettechnologie WEEK 8 INFITT01 - Internettechnologie WEEK 8 Programma Databases (JDBC, JNDI, ORM, JPA) MVC & Spring/Struts EJB Databases Veel web applicaties moeten informatie over langere tijd op kunnen slaan. Een voor de

Nadere informatie

Verslag. Projectteam: 107 Datum: 16 oktober 2008 Project leden: Lennard Fonteijn Harish Marhe Nicoletta Saba Turgay Saruhan Robin Tummers

Verslag. Projectteam: 107 Datum: 16 oktober 2008 Project leden: Lennard Fonteijn Harish Marhe Nicoletta Saba Turgay Saruhan Robin Tummers Verslag SE Projectteam: 107 Datum: 16 oktober 2008 Project leden: Lennard Fonteijn Harish Marhe Nicoletta Saba Turgay Saruhan Robin Tummers In dit verslag zullen wij een beschrijving geven, over welke

Nadere informatie

Voorbeeldtentamen Inleiding programmeren (IN1608WI), Oktober 2003, , Technische Universiteit Delft, Faculteit EWI, Afdeling 2.

Voorbeeldtentamen Inleiding programmeren (IN1608WI), Oktober 2003, , Technische Universiteit Delft, Faculteit EWI, Afdeling 2. Voorbeeldtentamen Inleiding programmeren (IN1608WI), Oktober 2003, 14.00-15.30, Technische Universiteit Delft, Faculteit EWI, Afdeling 2. Dit tentamen bestaat uit twee delen. Deel 1 (14.00-14.45, gesloten

Nadere informatie

Design patterns Startbijeenkomst

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

Nadere informatie

Modelleren en Programmeren

Modelleren en Programmeren Modelleren en Programmeren Jeroen Bransen 16 december 2015 Tentamen Case study: Automatische taalherkenning Modelleren Specificeren Implementeren Modelleren Implementeren Tentamen Tentamen Vrijdag 22 januari

Nadere informatie

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

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

Nadere informatie

public Paneel() { knop = new JButton( Klik ); knop.addactionlistener( new KnopHandler() ); tekstvak = new JTextField(10); add(knop); add(tekstvak);

public Paneel() { knop = new JButton( Klik ); knop.addactionlistener( new KnopHandler() ); tekstvak = new JTextField(10); add(knop); add(tekstvak); Vaknaam: Programmeren I (Java) - Tentamen Module: 2 Datum/Tijd: 17 mrt 2015 / 18.30 20:30 Richting: ICT Code: IC011 Docent: E. Lieuw Boeken en aantekeningen NIET toegestaan. Kladpapier is wel toegestaan.

Nadere informatie

Tentamen Objectgeorienteerd Programmeren

Tentamen Objectgeorienteerd Programmeren Tentamen Objectgeorienteerd Programmeren 5082IMOP6Y maandag 16 november 2015 13:00 15:00 Schrijf je naam en studentnummer op de regel hieronder. Sla deze pagina niet om tot de surveillant vertelt dat het

Nadere informatie

NHibernate als ORM oplossing

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

Nadere informatie

Java Programma structuur

Java 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

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

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

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

eerste voorbeelden in Java

eerste voorbeelden in Java Beginselen van programmeren 2 eerste voorbeelden in Java vereisten: een editor: om programma in te tikken en te bewaren een Java compiler: zet ingetikte (bron-) programma om naar byte-code een Java Virtuele

Nadere informatie

Tentamen Objectgeorienteerd Programmeren TI februari Afdeling ST Faculteit EWI TU Delft

Tentamen Objectgeorienteerd Programmeren TI februari Afdeling ST Faculteit EWI TU Delft I ' Tentamen Objectgeorienteerd Programmeren TI 1200 1 februari 2012 9.00-12.00 Afdeling ST Faculteit EWI TU Delft Bij dit tentamen mag je geen gebruik maken van hulpmiddelen zoals boek of slides. Dit

Nadere informatie

Zelftest Inleiding Programmeren

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

Nadere informatie

Opdrachtformulering (pagina 3 van 7)

Opdrachtformulering (pagina 3 van 7) Afstudeerovereenkomst van Tim Wils Bijlage 1 Opdrachtformulering (pagina 3 van 7) Dit project betreft een eigen framework (soort API) waarmee relatief gemakkelijk en in korte tijd eindproducten opgezet

Nadere informatie

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

Nadere informatie

Uitwerking Eerste deeltentamen Mobiel programmeren - versie 1 Vrijdag 21 december 2018, uur

Uitwerking Eerste deeltentamen Mobiel programmeren - versie 1 Vrijdag 21 december 2018, uur Uitwerking Eerste deeltentamen Mobiel programmeren - versie 1 Vrijdag 21 december 2018, 8.30 10.30 uur 1. Gegeven zijn de integer variabele x en de string variabele s. Welke van de volgende uitspraken

Nadere informatie

Voortgezet Prog. voor KI

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