Streams, Formatters en Serialization in.net (Tutorial gebaseerd op tutorials van Richard Grimes, het MSDN en anderen)
|
|
- Melissa de Groot
- 5 jaren geleden
- Aantal bezoeken:
Transcriptie
1 Streams, Formatters en Serialization in.net (Tutorial gebaseerd op tutorials van Richard Grimes, het MSDN en anderen) In deze tutorial ga ik in op het gebruik van Streams, Formatters en Serialization. We starten met de abstracte klasse Stream, waarop alle concrete streams gebaseerd zijn, maar ik ga eerst over enkele technieken en wat theorie voor ik het daadwerkelijk over enkele concrete stream klassen ga hebben. 1. De namespace System.IO en de abstracte klasse Stream. Om gebruik te maken van streams moeten we een referentie toevoegen naar de namespace System.IO. using System.IO; Deze namespace bevat onder andere de abstracte klasse Stream, dewelke de mogelijkheden definieert die een concrete stream klasse nodig heeft. De Stream klasse heeft properties die bepalen wat je kan doen met een bepaalde stream, informatie omtrent de stream (zoals lengte, huidige positie in de stream, etc.) en methoden om bytes of arrays van bytes te lezen en te schrijven. Volgend voorbeeld demonstreert het gebruik van een Stream object. We verkrijgen een stream (als voorbeeld) via de methoden GetOutputStream en GetInputStream om respectievelijk te schrijven naar en te lezen van een stream. //Bytes schrijven naar een stream Stream output = GetOutputStream(); byte[ ] outbuf = new byte[5]{20,21,22,23,24}; output.write(outbuf, 0, outbuf.length); output.close(); //Bytes lezen van een stream Stream input = GetInputStream(); byte[ ] inbuf = new byte[(int)instr.length]; input.read(inbuf, 0, inbuf.length); input.close(); In bovenstaande code kunnen de streams output en input om het even welk type stream zijn, bvb. een FileStream, een NetworkStream of een ander type stream. (vervolgt)
2 NOOT (belangrijk!!!): Omdat streams meestal gebufferd werken (bvb. FileStream), is het noodzakelijk de stream te flushen na gebruik. Dat kan via de methode Flush van een stream, maar er wordt ook automatisch een flush uitgevoerd bij het afsluiten van je stream via de methode Close. Het is dus belangrijk dat je na gebruik van een stream de methode Close aanroept (of Flush wanneer je de stream nog wenst te gebruiken). Als je dit niet doet, zal de buffer pas geflushed worden wanneer de garbage collector het object als verwijderbaar detecteert, en verwijdert uit het geheugen, maar dat kan om het even wanneer zijn, en is dus zeker geen good practice. Ook zal het bestand in gebruik blijven totdat de stream gesloten wordt (Close), waardoor het niet toegankelijk is voor verder gebruik (Tenzij anders ingesteld, bij de parameters voor je stream).
3 2. Bytes? Chars? Strings? Tekst schrijven naar een stream. Bytes, chars en strings zijn natuurlijk niet gelijk aan elkaar (anders zouden deze 3 verschillende datatypes niet bestaan natuurlijk). Byte Æ 1 byte (duh -). Char Æ 2 unicode bytes. StringÆ Is een object (reference type), bevat o.a. een serie unicode characters. Streams schrijven gegevens typisch weg als bytes. We moeten dus een manier hebben om onze chars te converteren naar bytes en onze strings te converteren naar een byte array. Het mag voor zich spreken dat het.net framework deze mogelijkheid aanbiedt. Er is een ASCII Encoding klasse beschikbaar via de System.Text namespace. Using System.Text;... string str = "Hello world"; byte[ ] b = new byte[str.length]; Encoding.ASCII.GetBytes(str.ToCharArray(), 0, str.length, b, 0); Een string object heeft de methode ToCharArray, dewelke een char array teruggeeft met de unicode chars van de string. Een string heeft ook een property Length, waarmee we weten uit hoeveel characters de string bestaat. Via de Encoding.ASCII klasse uit de System.Text namespace kunnen we de character array van een string omzetten naar een byte array, die we dan wel kunnen wegschrijven naar een stream. (Zie MSDN voor de methoden en overloads) Ook het omgekeerde is mogelijk natuurlijk (een byte array omzetten naar een string): byte[ ] buf = new byte[11]{72,101,108,108,111,32,119,111,114,108,100}; string str; str = System.Text.Encoding.ASCII.GetString(buf); String str zal de tekst Hello world bevatten.
4 3. Readers en Writers Misschien vinden jullie het al wat omslachtig om eerst conversies te moeten doen vooraleer je de gegevens kan wegschrijven Wel, dat is ook zo, maar je moet er rekening mee houden dat ik tot nu toe het lezen en schrijven van gegevens naar een stream, geïnstancieerd van de abstracte klasse Stream demonstreerde. De ontwerpers van het.net framework zorgden er echter wel voor dat er enkele andere klassen beschikbaar zijn, die de mogelijkheid geven om wel rechtstreeks strings en chars (en andere data types) weg te schrijven naar een stream. Deze klassen breiden als het ware de mogelijkheden van het werken met een stream uit. Zo zijn er de klassen BinaryReader, BinaryWriter, StreamReader en StreamWriter. Typisch nemen deze klassen een stream als parameter voor hun constructor, maar je kan bij de StreamReader en StreamWriter klassen ook een bestandspath opgeven als parameter aan de constructor, waarbij dan automatisch de stream gecreëerd wordt (BinaryReader en BinaryWriter nemen enkel een stream als parameter, geen filepath). Omdat ik het pas later in deze tutorial heb over de concrete stream klassen, geef ik hier enkel een codevoorbeeld omtrent de StreamReader en StreamWriter klassen. //Schrijven naar bestand StreamWriter sw = new StreamWriter("test.txt", false, Encoding.ASCII); sw.writeline("hello world"); sw.close(); //Terug lezen van bestand StreamReader sr = new StreamReader("test.txt", Encoding.ASCII); string input = sr.readline(); sr.close(); //Resultaat in messagebox MessageBox.Show( input ); Er zijn verscheidene constructors voor deze 2 klassen, één voor ieder zijn noden -. Bovenstaande demonstratiecode is heel simpel, en zou voor zich moeten spreken. De parameter false voor de StreamWriter constructor zet append op false voor dit object. Er wordt een string geschreven naar het bestand test.txt via een instantie van de klasse StreamWriter, en deze wordt terug uitgelezen via een instantie van de klasse StreamReader. Daarna wordt de gelezen string in een MessageBox weergegeven.
5 Noot: Via StreamWriter kan je naast strings ook value types (int, double, decimal, ) wegschrijven naar een stream (en via StreamReader terug uitlezen). Kijk hiervoor naar de overloaded methoden Write en Read van deze klassen.
6 4. Formatters Wat hebben we tot nu toe gezien? We kunnen reeds simpele gegevens (hoofdzakelijk strings en value types) wegschrijven naar en lezen van een stream. Dit is heel bruikbaar voor simpele testjes, of zelfs voor het werken met een log bestand, maar in de praktijk gebeurt het meer dat er objecten worden weggeschreven naar een stream. Eventueel zou je dit kunnen omzeilen via de methode ToString van een object, en bij het terug inlezen van een object zou je een constructor die deze string kan parsen kunnen gebruiken, maar er is een efficiëntere methode. Wat we gaan doen, wordt Object Serialization genoemd (I/O met objecten). Dit gebeurt in samenwerking met een Formatter. Object Serialization serialiseert een object naar een bytestream, en we leerden reeds dat streams gebaseerd zijn op het lezen en schrijven van bytes. Om een klasse serialiseerbaar te maken, moet je de statement [Serializable] voor de klassedefinitie plaatsen. (Als je in de MSDN informatie naleest omtrent verschillende klassen, is meestal ook vermeld of je een bepaalde klasse kan serialiseren). Een voorbeeldklasse Point : [Serializable] public class Point { private double xval; private double yval; [NonSerialized] private double len = 0; public Point(int x, int y) { xval = x; yval = y; } public double x{get{return xval;}} public double y{get{return xval;}} public double Length { get { if (len == 0) len = Math.Sqrt(x*x + y*y); return len; } } }
7 Door de statement Serializable weet de compiler dat desbetreffende klasse serialiseerbaar is. Let op het field [NonSerialized] private double len = 0;, wegens het statement NonSerialized zal dit field niet opgenomen worden in het geserializeerd object. Deze nonserialized fields gaan een waarde null meekrijgen bij het serializeren, afhankelijk van hun datatype, bijvoorbeeld 0 voor een integer, en null voor een reference. Laat ons nu een demonstreren hoe een object geserializeerd wordt naar een stream (we maken gebruik van bovenstaande klasse Point, stm is de stream voor volgend voorbeeld) : Point p1 = new Point(1, 2); Point p2 = new Point(3, 4); Point p3 = new Point(5, 6); BinaryFormatter bf = new BinaryFormatter(); bf.serialize(stm, p1); bf.serialize(stm, p2); bf.serialize(stm, p3); str.close(); Je kan dus gebruik maken van een BinaryFormatter object, en via zijn methode Serialize kan je je object serializeren op een stream. Omgekeerd is even simpel, je deserializeert de objecten van een stream: Point p4, p5, p6; p4 = (Point)bf.Deserialize(str); p5 = (Point)bf.Deserialize(str); p6 = (Point)bf.Deserialize(str); De methode deserialize creëert een instantie van het geserialiseerde object, waarbij alle geserialiseerde fields geïnitialiseerd worden naar de opgeslagen waarde. De nonserialised fields gaan op hun null waarde ingesteld worden. Noot: De BinaryFormatter krijgt volle toegang tot private fields, waardoor je je daar geen zorgen om hoeft te maken - Fantastisch niet!? Noot: Hoe kan deserialize nu weten welk type klasse hij moet instanciëren? Er wordt naast de objectgegevens ook wat informatie omtrent de klasse van het object weggeschreven. Dit wordt bepaald door de klasse SerializationInfo.
8 5. Streams Eindelijk ga ik het hebben over streams. Vergis je echter niet, de technieken beschreven bij de vorige hoofdstukjes van deze tutorial zijn heel belangrijk. Je dient die te kennen om correct te werken met streams. De Stream klasse is abstract, nu gaan we het hebben over concrete stream klassen, die afgeleid zijn van de Stream klasse. De manier waarop je een stream aanmaakt verschilt van stream klasse tot stream klasse. Met volgende code kan je bijvoorbeeld een FileStream verkrijgen: File.OpenRead("sourcefile.txt"); Noot: OpenRead is een statische methode van de klasse File, die beschikbaar is van de System.IO namespace. Deze klasse File bevat nog meer van deze heel interessante mogelijkheden, zoals File.Exissts om te checken of een bestand bestaat, enzovoort... Wederom: Zie de MSDN voor meer informatie. In samenwerking met de eerder besproken StreamReader klasse kunnen we als volgt werken: StreamReader input; input = new StreamReader( File.OpenRead("test.txt") ); En om te schrijven naar een bestand : StreamWriter write; write = new StreamWriter( File.OpenWrite("destfile.txt") ); Oefening: Nu zou je het vorige voorbeeld, waarbij we Hello World schrijven naar bestand en nadien terug uitlezen met weergave in een messagebox, zelf moeten kunnen aanpassen zodat die werkt met een FileStream. (vervolgt)
9 Je weet nu dat sommige methoden je een stream kunnen teruggeven (als return value). Je kan streams natuurlijk ook zelf definiëren. In volgend voorbeeld definiëren we zelf een FileStream om te lezen uit een bestand: FileStream f = new FileStream( test.txt, FileMode.Open, FileAccess.Read, FileShare.Read); Voor de verschillende overloads van de constructors van de stream klassen kijk je best in de MSDN. Verschillende types streams: Ik ga nog even heel kort in op enkele van de belangrijkste stream klassen: FileStream : Gebufferde stream om te lezen van en schrijven naar bestanden. NetworkStream : Ongebufferde stream om gegevens te verzenden tussen meerdere computers op via een netwerk. MemoryStream : Gegevens kunnen opgeslagen worden in het computergeheugen. BufferedStream : Hiermee kan je ongebufferde streams gebufferd laten werken. PS: In de volgende tutorial, namelijk networkstreams, gaan we een pong spelletje maken voor 2 spelers in een netwerk. Hierbij gaan we object serialization gebruiken op een NetworkStream om de positie van de tegenspeler (en het balletje) op het speelveld te communiceren tussen de 2 applicaties. Veel plezier. Kris.
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 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 informatieLezen van en schrijven naar het Windows Registry
Lezen van en schrijven naar het Windows Registry 1. Inleiding Ik ga uit van de veronderstelling dat je wel zo ongeveer weet wat het Registry is bij het windows besturingssysteem. Als je het niet weet,
Nadere informatieEen 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 informatieZelftest 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 informatieFile Uploads met standaard ASP.NET
File Uploads met standaard ASP.NET In deze tutorial gaan we een aspx pagina maken (met codebehind), waarmee je een bestand kan uploaden naar de webserver. Noot: de hier beschreven code gaat niet in op
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 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 informatieWerken met ActiveX (COM) componenten in.net
Werken met ActiveX (COM) componenten in.net 1. Inleiding In de pre-net dagen werd gebruik gemaakt van COM (of ActiveX) objecten, gelijkaardig aan hoe we nu een Windows Control Library of Web Control Library
Nadere informatieVisual Basic.NET. Visual Basic.NET. M. den Besten 0.3 VB. NET
Visual Basic.NET M. den Besten 0.3 VB. NET Inhoud Voorwoord Deel 1 Visual Basic.NET 1.1 Inleiding...13 1.2 De programmeertaal Visual Basic.NET...14 1.3 Microsoft Visual Basic 2010 Express Edition...15
Nadere informatieHOGESCHOOL VAN AMSTERDAM Informatica Opleiding. CPP 1 van 10
CPP 1 van 10 ADSdt 1-2009 TENTAMENVOORBLAD Voor aanvang van het tentamen s.v.p. de tentamengegevens goed doorlezen om eventuele misverstanden te voorkomen!! Naam student : Studentnummer : Groep : Studieonderdeel
Nadere informatievbg.vbnet.beginner Omgaan met files en directories binnen Visual Basic.NET
In Visual Basic 6 was het werken met bestanden en mappen niet altijd even vriendelijk. Met de komst van het FileSystemObject binnen de Microsoft Scripting Runtime library werd het al veel beter. Het.NET
Nadere 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 informatieINLEIDING... 1 AFSPRAKEN... 2 INHOUDSOPGAVE...
Inhoudsopgave INLEIDING... 1 AFSPRAKEN... 2 INHOUDSOPGAVE... 3 1 OOP EN.NET... 11 1.1 Inleiding... 11 1.2 Kwaliteit van een programma... 11 1.2.1 Correctheid en bruikbaarheid... 11 1.2.2 Robuustheid...
Nadere 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 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 informatieKleine 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 informatieTeamhandleiding 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 informatieInformatica. Objectgeörienteerd leren programmeren. Van de theorie met BlueJ tot een spelletje met Greenfoot... Bert Van den Abbeele
Informatica Objectgeörienteerd leren programmeren Van de theorie met BlueJ tot een spelletje met Greenfoot... Bert Van den Abbeele http://creativecommons.org/licenses/by-nc-nd/3.0/legalcode Objectgeörienteerd
Nadere informatieObjectgeoriënteerd programmeren in Java 1
Objectgeoriënteerd programmeren in Java 1 CPP Javaprogrammeur Bijeenkomst 3 Leereenheden 7, 8, 9 De Java API Java bevat een grote bibliotheek standaardklassen: de Java API Voorbeelden java.lang basisklassen
Nadere informatieUitwerking Derde deeltentamen Imperatief programmeren Vrijdag 8 november 2013, uur
1 Uitwerking Derde deeltentamen Imperatief programmeren Vrijdag 8 november 2013, 8.30 10.30 uur 1. Voor elk punt (x, y) van het platte vlak, waarbij x en y reële getallen zijn, kan een bijbehorend getal
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 informatieLabo 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 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 informatieIn de tweede regel plaatsen we in het gereserveerde stukje geheugen een getal.
4. Array s Een array is een geïndexeerde variabele. Deze zin zal de nodig vragen oproepen, waarop enige uitleg van toepassing is. Met variabelen hebben we al kennis gemaakt. In een variabele kun je iets
Nadere informatieIngebouwde 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 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 informatieDOMjudge 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 informatieAanvullende 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 informatieUitwerking 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 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 informatieOm de libraries te kunnen gebruiken, moet de programmeur (een deel van) zijn programma in C/C++ schrijven.
1 Inleiding tot.net Software werd en wordt meestal geschreven in C of C++. De broncode van een C/C++ programma wordt dan gecompileerd naar machine code, die eventueel nog gelinkt wordt met machine code
Nadere informatieSQL datadefinitietaal
SQL datadefinitietaal We kunnen er het schema van de database mee bepalen: metadata toevoegen, wijzigen en verwijderen uit een database. Basiscommando's: CREATE : toevoegen van metagegevens DROP : verwijderen
Nadere informatieProgrammeren in C# Samenvatting van C#
Programmeren in C# Samenvatting van C# Proceduraal Programmeren Functies (O: void + return, I: referentie of value) Arrays, Lijsten Lussen (for, while, do while) Condities, if-else, switch Variabelen,
Nadere informatieHoofdstuk 1: Inleiding. Hoofdstuk 2: Klassen en objecten Datahiding: afschermen van implementatiedetails. Naar de buitenwereld toe enkel interfaces.
Hoofdstuk 1: Inleiding Objectoriëntatie: 1. Objecten & klassen: samenwerking van componenten om bepaald doel te bereiken; herbruikbaarheid. 2. Encapsulation: afschermen gedragingen en kenmerken van de
Nadere 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 informatieUitwerkingen 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 informatieTentamen 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 informatieProject Software Engineering XML parser: Parsen van een xml CD catalogus
Project Software Engineering XML parser: Parsen van een xml CD catalogus Brent van Bladel brent.vanbladel@uantwerpen.be February 16, 2017 XML (Extensible Markup Language) is een taal waarmee we op een
Nadere informatieDeel 1: Arduino kennismaking. Wat is een microcontroller, structuur van een programma, syntax,
Deel 1: Arduino kennismaking Wat is een microcontroller, structuur van een programma, syntax, Wat is een microcontroller Wat is een microcontroller? Microcontroller = kleine dedicated computer. - Beperkt
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 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 informatieNHibernate 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 informatieUitwerking Aanvullend tentamen Imperatief programmeren Maandag 14 maart 2011, uur
Uitwerking Aanvullend tentamen Imperatief programmeren Maandag 14 maart 2011, 9.00 12.00 uur 1. Voor de implementatie van het spel Reversi schrijft iemand de volgende klasse. Het speelbord wordt gerepresenteerd
Nadere informatieEen typisch programma in C en C++ bestaat uit een aantal onderdelen:
Eerste stappen in C. Een typisch programma in C en C++ bestaat uit een aantal onderdelen: /* Alles wat op meerdere lijnen staat zoals hier is commentaar. */ // Dit is commentaar op 1 lijn. Geldig tot einde
Nadere informatieVisual Studio NET Framework 2.0. campinia media vzw
Visual Studio 2005 -.NET Framework 2.0 campinia media vzw Frans, Roger Visual Basic 2005 2/2 / Roger Frans; Geel: Campinia Media vzw, 2006-1ste druk oktober 2006; 250 p; index; 25,5 cm; gelijmd. ISBN:
Nadere informatieJava spiekbrief. Commentaar. Definitie van een methode. Types. Variabelendeclaratie. Definitie van een klasse. Namen. Definitie van een veld
Java spiekbrief Commentaar Dient enkel voor de menselijke lezer. // tot het einde van de lijn /* Dit type commentaar kan gerust meerdere lijnen beslaan. */ /** En deze speciale vorm wordt gebruikt voor
Nadere informatieOnline c++ leren programmeren:
Online c++ leren programmeren: Inhoud 1)Waar vind ik een c++ compiler?... 2 2)Hoe start ik een programma in c++?... 2 3)Een eerste c++ programma:... 3 Een eerste programma schrijven:... 3 Mijn eerste programma
Nadere informatieSYNTRA-WEST. Initiatiecursus JAVA. Deel
SYNTRA-WEST Initiatiecursus JAVA Deel Syntra-West Syntra-West (vroeger Vormingsinstituut West-Vlaanderen) Doorniksesteenweg 220 8500 Kortrijk Tel. 056/26.02.00 Fax 056/22.81.07 i Inhoudsopgave SYNTRA-WEST...
Nadere informatieProgrammeren in C++ (deel 1)
FHT&L MODULE BESCHRIJVING Programmeren in C++ (deel 1) PRO4 Samenstelling: Cees van Tilborg, Thijs Dorssers Datum: september 2011 Versie: 1h Titel: Programmeren in C++ Identificatie Progresscode: PRO4
Nadere informatieJava spiekbrief. Commentaar. Definitie van een methode. Types. Variabelendeclaratie. Definitie van een klasse. Namen. Definitie van een veld
Java spiekbrief Commentaar Dient enkel voor de menselijke lezer. // tot het einde van de lijn /* Dit type commentaar kan gerust meerdere lijnen beslaan. */ /** En deze speciale vorm wordt gebruikt voor
Nadere informatieUitwerking Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 6 november 2015, 11.00-13.00 uur
Uitwerking Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 6 november 2015, 11.00-13.00 uur Schrijf op elk ingeleverd blad je naam. Schrijf op het eerste blad ook je studentnummer en het
Nadere informatieDerde deeltentamen Imperatief programmeren - versie 1 Vrijdag 6 november 2015, uur
Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 6 november 2015, 11.00-13.00 uur Schrijf op elk ingeleverd blad je naam. Schrijf op het eerste blad ook je studentnummer en het aantal ingeleverde
Nadere informatieFUN12. Dictaat C# klassen en collecties versie februari 2015
FUN12 Dictaat C# klassen en collecties versie februari 2015 INHOUD 1. Inleiding... 3 2. Klassen... 4 2.1. Klassen gebruiken... 4 2.2. Zelf klassen maken... 5 2.3. Je klasse als string... 6 2.4. Voorbeelden...
Nadere informatieTentamen 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 informatieDerde deeltentamen Imperatief programmeren - versie 1 Vrijdag 11 november 2016, uur
Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 11 november 2016, 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 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 informatieDerde deeltentamen Gameprogrammeren Vrijdag 7 november 2014, uur
Naam: Derde deeltentamen Gameprogrammeren Vrijdag 7 november 2014, 11.00-13.00 uur Studentnummer: Het tentamen bestaat uit 3 opgaven. Opgaven 1 levert 20 punten op, opgave 2 levert 10 punten op, en opgave
Nadere informatieUitwerkingen. Python Assessment
Uitwerkingen Python Assessment Nijmegen - Utrecht www.atcomputing.nl Copyright 2015,2016 Versie: 1a Uitwer king 1: Elementairedatatypes 1.a Een string bevat tekst in de vorm van Unicode characters, terwijl
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 informatieDit 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 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 informatieNo part of this book may be reproduced in any form, by print, photoprint, microfilm or any other means without written permission of the publisher.
Frans, Roger Visual Basic.NET 2/2 / Roger Frans; Geel: Campinia Media vzw, 2004; 231 p; index; 25,5 cm; gelijmd. ISBN: 90.356.1192.6; NUGI 854; UDC 681.3.06 Wettelijk depot België: D/2004/3941/9 Campinia
Nadere informatieMSX Computer & Club Magazine nummer 69 - augustus 1994 Arno Dekker. Scanned, ocr ed and converted to PDF by HansO, 2001
MT2ASCII MSX Computer & Club Magazine nummer 69 - augustus 1994 Arno Dekker Scanned, ocr ed and converted to PDF by HansO, 2001 In de laatste serie MSX Club Magazine s werd at dieper ingegaan op MT-Base
Nadere informatiePersistentie via bestanden. Bestanden
programma is transient Persistentie via bestanden Administratieve gegevens zijn verzameld in het file-object: o.a. waar ergens op de disk de data van het bestand te vinden is. invoer van de gebruiker programma
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 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 informatieInleiding 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 informatiehttp://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 informatieModelleren 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 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 informatieProgrammeren (1) Examen NAAM:
Schrijf al je antwoorden op deze vragenbladen (op de plaats die daarvoor is voorzien) en geef zowel klad als net af. Bij heel wat vragen moet je zelf Java-code schrijven. Hou dit kort en bondig. Je hoeft
Nadere informatieLeren programmeren in C# Deel 2 - Gegevens
Michiel Rotteveel Leren programmeren in C# Deel 2 - Gegevens Errata 1e druk Brinkman Uitgeverij Amsterdam 2017 Deze errata horen bij Leren programmeren in C#: Deel 2 Gegevens, isbn 978 90 5752 342 7 /
Nadere informatiePascal uitgediept Data structuren
Pascal uitgediept Data structuren MSX Computer & Club Magazine nummer 68-juni/juli 1994 Herman Post Scanned, ocr ed and converted to PDF by HansO, 2001 In deze aflevering wordt bekeken hoe zelf een datastructuur
Nadere informatieProgrammeren. Cursus Python
Programmeren Cursus Python Cursus Python Omschrijving In deze cursus leren de deelnemers te programmeren in de objectgeoriënteerde programmeertaal Python. Python is een taal die vaak wordt gebruikt voor
Nadere 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 informatieTentamen Computersystemen
Tentamen Computersystemen baicosy6 2e jaar bachelor AI, 2e semester 21 oktober 213, 9u-11u OMHP D.9 vraag 1 Van een Single Cycle Harvard machine hebben de componenten de volgende propagation delay time:
Nadere informatieMaak een pivot uit een Generic.List
Maak een pivot uit een Generic.List Introductie in extensions, reflection en code generation Nivo: 400 Introductie In bepaalde gevallen komt het voor dat je een Generic.List van een specifieke class hebt,
Nadere informatieDemo document template available on the Rapptorlab website
Proef ingediend met het oog op het behalen van de graad van bachelor in de Ingenieurswetenschappen Demo document template available on the Rapptorlab website Course/thesis example Laurent Segers, Tom van
Nadere informatieMVC 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 informatieEen unit test is geen integratie test. Niet het hele systeem, maar onderdelen van een systeem worden getest.
WAT IS EEN UNIT TEST? Een unit test is een test om de functionaliteit van stukken code te controleren. Een goede unit test waarborgt een consistente werking van een klein onderdeel (een unit ) van de broncode.
Nadere informatieDOMjudge 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 informatieIMP 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 informatieVB Magazine Online 2004 01/08 1 / 6
Een van de krachtigste elementen binnen Visual Basic 2003 vind ik wel de mogelijkheid om objecten te overerven; ook wel inheritance genoemd. U kunt niet alleen uw eigen classes en business objecten overerven,
Nadere informatieTentamen Inleiding Programmeren (IN1608WI), duur van de toets 2 uur Technische Universiteit Delft, Faculteit EWI, Afdeling 2.
Tentamen Inleiding Programmeren (IN1608WI), duur van de toets 2 uur Technische Universiteit Delft, Faculteit EWI, Afdeling 2. Gesloten boek examen: er mag geen gebruik worden gemaakt van het studieboek.
Nadere informatieJochen Mariën september 2013
Inleiding De taal C is tussen 1969 en 1973 ontwikkeld, met als hoofddoel de programmatie van systeemsoftware. Het is echter een bijzonder populaire taal geworden, waarvoor op elke mogelijke computerarchitectuur
Nadere informatieOEFENINGEN PYTHON REEKS 1
Vraag 1: Expressies & Types OEFENINGEN PYTHON REEKS 1 Python maakt gebruik van enkele vaak voorkomende (data)types. Zo zijn er integers die behoren tot de gehele getallen (VB: 3), zijn er float s die behoren
Nadere informatieslides12.pdf December 14, 2001 1
Onderwerpen Inleiding Algemeen 12 Getallen Getallen Representaties Rekenen Problemen Piet van Oostrum 12 dec 2001 INL/Alg-12 1 X INL/Alg-12 1 X Getallen Soorten getallen Wat is een getal? Experiment: met
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 informatieUitwerking Tweede deeltentamen Mobiel programmeren - versie 1 Vrijdag 3 februari 2017, uur
Uitwerking Tweede deeltentamen Mobiel programmeren - versie 1 Vrijdag 3 februari 2017, 8.30-10.30 uur 1. Wat kan gezegd worden van het stukje programma b=!b (a) De expressie b=!b heeft altijd de waarde
Nadere informatieJava. Basissyllabus. Egon Pas
Java Basissyllabus Egon Pas 2011 BeanPole bvba Gasmeterlaan 92-9000 Gent BTW BE 472.902.516 Tel: + 32 9 224 42 17 Fax: + 32 9 223 62 88 www.beanpole.be info@beanpole.be 1 Programmeren 1.1 Hoe werkt een
Nadere informatieTentamen 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 informatieProgrammeren en Wetenschappelijk Rekenen in Python. Wi1205AE I.A.M. Goddijn, Faculteit EWI 29 april 2014
Programmeren en Wetenschappelijk Rekenen in Python Wi1205AE, 29 april 2014 Bijeenkomst 3 Onderwerpen Bespreking ISA-opdracht Geneste loops Strings File Input/Output 29 april 2014 1 For-loops vb3-1a.py:
Nadere informatieC++ C++ als een verbetering van C. Abstracte datatypen met classes. Constructoren en destructoren. Subklassen. binding van functies
C++ C++ als een verbetering van C Abstracte datatypen met classes Constructoren en destructoren Subklassen binding van functies 1 Commentaar In C: /* Deze functie berekent de omtrek van een cirkel */ float
Nadere informatieDynamisch geheugen beheer
Dynamisch geheugen beheer + Normaal wordt laats in het werkgeheugen gereserveerd tijdens de comilatie aan de hand van de declaraties van de variabelen. + Deze geheugenreservering is statisch: in het bronbestand
Nadere informatieVI. Klassen en objecten
VI. Klassen en objecten Klassen en objecten vormen het fundament van OOP. We zullen dus uitgebreid aandacht besteden aan klassen en objecten. U kunt Java niet begrijpen zonder goed met klassen en objecten
Nadere informatieProgrammeermethoden. Pointers. Walter Kosters. week 10: november kosterswa/pm/
Programmeermethoden Pointers Walter Kosters week 10: 13 17 november 2017 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 Pointers Introductie Een pointer is in feite gewoon een geheugenadres. Het geheugen kun
Nadere informatieVraag 1: HashTable [op 2 punten van de 20] Gegeven de header file HashTable.h van een hashtabel die pointers naar strings bijhoudt (in bijlage).
Examen SoftwareOntwikkeling I 2e Bachelor Informatica Faculteit Wetenschappen Academiejaar 2009-2010 22 januari, 2010 **BELANGRIJK** 1. Schrijf je naam onderaan op elk blad. 2. Vragen 1,2 en 3 gaan enkel
Nadere informatieTutorial 1, Delphi: Geldspraak
Tutorial 1, Delphi: Geldspraak Versie Datum Auteurs Opmerkingen 1 25-09-2001 Kees Hemerik (code) Gebaseerd op Delphi 5 Enterprise. Roel Vliegen (tekst) 2 17-03-2005 Kees Hemerik Aanpassingen: Delphi 7,
Nadere informatie