Info-books. Toegepaste Informatica. Objectgeoriënteerd Programmeren en Webapplicaties. Java voor het internet: Persistentie en Threads.
|
|
|
- Bert Adam
- 10 jaren geleden
- Aantal bezoeken:
Transcriptie
1 Info-books HO40e Toegepaste Informatica Objectgeoriënteerd Programmeren en Webapplicaties Deel 40e: Java voor het internet: Persistentie en Threads K. Behiels - J. Gils
2 Hoofdstuk 2 Andere vormen van Persistentie 2.1 XML Hoe werk je met XML? XML (extensible Markup Language) is een universele taal om gegevens te beschrijven. Om XML-documenten te lezen zijn er vele libraries beschikbaar. Om zoveel mogelijk uitwisselbaar te zijn moet XML flexibel zijn. Daardoor worden enkele problemen van serialization opgelost. In XML kunnen de opgeslagen gegevens extern aangepast worden en kan in bepaalde gevallen zelfs de structuur gewijzigd worden. Door gebruik te maken van tools zoals Castor ( kan je op een eenvoudige manier Java-objecten naar XML omzetten en omgekeerd. In het geval van Castor dien je twee libraries in de vorm van jar-bestanden voor je programma beschikbaar te maken (castor jar en xerces.jar). De Castor API (zie bevat onder andere de package org.exolab.castor.xml. De belangrijkste klassen hierin zijn de Marshaller en Unmarshaller klassen. Met een Marshaller zet je een Java-object om naar een XML-document. Dit gaat het eenvoudigst met een FileWriter. Om een XML-document terug om te zetten naar een Java-object gebruik je een Unmarshaller in combinatie met een FileReader: FileWriter writer = new FileWriter(filename); Marshaller.marshal(object, writer); FileReader reader = new FileReader(filename); object = (class) Unmarshaller.unmarshal(class.class, reader); Belangrijk is dat, om een object succesvol te unmarshallen, er in de klasse naast een default constructor voor elk attribuut een getter en een setter moet aanwezig zijn! Opmerkingen: Het op een eenvoudige manier lezen en schrijven komt door Castor, niet door XML. Met XML kan je, in tegenstelling tot met serialization, gegevens van een oude klasse in een nieuwe versie van die klasse inlezen. Als je een attribuut toevoegt, verlies je de oude gegevens niet. Bij het terug inlezen zullen de niet aanwezige attributen genegeerd worden. Voor het overige geldt hetzelfde als bij serialiazation, met name de noodzaak om alle objecten terug in te lezen. (Je kan de objecten en hun attributen niet afzonderlijk benaderen). K. Behiels J. Gils Persistentie en Threads 13
3 2.1.2 Een voorbeeld We hernemen het voorbeeld uit het vorige hoofdstuk en passen het aan voor het werken met Castor. In dit voorbeeld schrijf je één object (een object dat een ArrayList bevat) weg in de vorm van een XML-bestand, en lees je het terug in. Eerst de klasse Address: package be.kdg.xmldemo; public class Address { private String street; private String zipcode; private String city; public Address() { public Address(String street, String zipcode, String city) { this.street = street; this.zipcode = zipcode; this.city = city; public String getstreet() { return street; public void setstreet(string street) { this.street = street; public String getzipcode() { return zipcode; public void setzipcode(string zipcode) { this.zipcode = zipcode; public String getcity() { return city; public void setcity(string city) { this.city = city; public String tostring() { return "Address{" + "street='" + street + "'" + ", zipcode='" + zipcode + "'" + ", city='" + city + "'" + ""; 14 Persistentie en Threads K. Behiels J. Gils
4 De klasse Address gebruik je in de klasse Person: package be.kdg.xmldemo; public class Person { private int id; private String name; private Address address; public Person() { public Person(int id, String name, Address address) { this.id = id; this.name = name; this.address = address; public Person(int id, String name, String street, String zipcode, String city) { this.id = id; this.name = name; address = new Address(street, zipcode, city); public int getid() { return id; public void setid(int id) { this.id = id; public String getname() { return name; public void setname(string name) { this.name = name; public Address getaddress() { return address; public void setaddress(address address) { this.address = address; public boolean equals(object object) { if (this == object) return true; if (!(object instanceof Person)) return false; final Person person = (Person) object; return id!= person.id; public int hashcode() { return id; K. Behiels J. Gils Persistentie en Threads 15
5 public String tostring() { return "Person{" + "id=" + id + ", name='" + name + "'" + ", address=" + address + ""; Een People-object bestaat uit een verzameling Person-objecten: package be.kdg.xmldemo; import java.util.arraylist; import java.util.list; public class People { private List list; public People() { list = new ArrayList(); public People(List list) { this.list = list; public List getlist() { return list; public void setlist(list list) { this.list = list; public void add(person person) { list.add(person); public boolean remove(person person) { return list.remove(person); public void printpeople() { for (int i = 0; i < list.size(); i++) { Person person = (Person) list.get(i); System.out.println(person); Voor het lezen en schrijven van de objecten gebruik je een afzonderlijke klasse XmlTool: package be.kdg.xmldemo; import org.exolab.castor.xml.marshaller; import org.exolab.castor.xml.unmarshaller; import org.exolab.castor.xml.validationexception; 16 Persistentie en Threads K. Behiels J. Gils
6 import java.io.filenotfoundexception; import java.io.filereader; import java.io.filewriter; import java.io.ioexception; public class XmlTool { private People people; public XmlTool(People people) { this.people = people; public void createxml() { FileWriter writer = null; try { writer = new FileWriter("people.xml"); Marshaller.marshal(people, writer); catch (ValidationException e) { catch (org.exolab.castor.xml.marshalexception e) { catch (IOException e) { finally { if (writer!= null) { try { writer.close(); catch (IOException e) { public People retrievexml() { people = null; // To be sure it works! FileReader reader = null; try { reader = new FileReader("people.xml"); people = (People) Unmarshaller.unmarshal( People.class, reader); catch (ValidationException e) { catch (org.exolab.castor.xml.marshalexception e) { catch (FileNotFoundException e) { finally { if (reader!= null) { try { reader.close(); catch (IOException e) { return people; K. Behiels J. Gils Persistentie en Threads 17
7 Ten slotte het hoofdprogramma: package be.kdg.xmldemo; public class RunXmlDemo { public static void main(string[] args) { People people = new People(); people.add(new Person(100, "Baert, Peter", "Hoogstraat 16", "9000", "Gent")); people.add(new Person(102, "Coveliers, Anka", "Heirbrug 23", "9160", "Lokeren")); people.add(new Person(103, "De Maeght, Maria", "Plezantstraat 7", "9100", "Sint Niklaas")); XmlTool tool = new XmlTool(people); tool.createxml(); people = tool.retrievexml(); people.printpeople(); 2.2 JDBC Inleiding De technologie die het mogelijk maakt om vanuit Java met databases te werken is Java Database Connectivity (JDBC). JDBC is voor een database wat een Java-interface is voor een Java-klasse. Met behulp van JDBC kan je vanuit Java vrijwel altijd op dezelfde manier werken, onafhankelijk van de database (Access, MySQL, Oracle, ). Een Java-interface belooft de aanwezigheid van zijn methoden in de klassen waarin hij geïmplementeerd wordt. Op gelijkaardige wijze belooft de JDBC-specificatie functionaliteiten van de databases en de drivers die aan de standaard voldoen. Vroeger bestond JDBC als een afzonderlijke library, ondertussen is ze volledig in de Java standaard editie geïntegreerd. Er is ook een JDBC-driver voorzien, namelijk een die een brug vormt naar om het even welke geïnstalleerde ODBC-driver. Voor de andere drivers ben je aangewezen op de fabrikant van de database. Er zijn 4 types van JDBC-drivers: Type 1: JDBC-ODBC bridge Koppelt een aanwezige ODBC-driver aan de JDBC API. Type 2: Native API partly Java driver Koppelt een aanwezige database aan de JDBC API. Type 3: Net protocol full Java driver Zet JDBC-oproepen om naar een database-onafhankelijk netprotocol. De server zet dit dan om naar het databaseprotocol. 18 Persistentie en Threads K. Behiels J. Gils
8 Type 4: Native protocol Java driver Een pure Java-driver die direct met de database kan communiceren (niet mogelijk met databases zoals Access). De JDBC API bestaat uit twee delen: de JDBC core API die deel uitmaakt van J2SE. Je vindt ze in de java.sqlpackage; de JDBC optional API die zich in de javax.sql-package bevindt. Een volledige studie van JDBC is een cursus op zichzelf. We beperken ons hier tot het strikte minimum. Opmerking: Gegevens opslaan in een database is een zuivere vorm van persistentie. Via JDBC kan je de gegevens tot op attribuutniveau benaderen De java.sql-package De belangrijkste onderdelen van de java.sql-package zijn: de DriverManage-klasse; de Driver-interface; de Connection-interface; de Statement-interface; de ResultSet-interface; de PreparedStatement-interface; de ResultSetMetaData-interface. DriverManager Elke JDBC-driver die je wenst te gebruiken moet geregistreerd zijn bij de DriverManager. Deze drivers verschillen naargelang het type database dat je gebruikt. Om de JDBC-driver vanuit een servlet of een JSP-pagina te laden kopieer je het driverbestand (meestal een *.jar bestand) naar de WEB-INF\lib directory van je toepassing. Om de driver te laden voer je de volgende code uit: try { Class.forName("JDBC.driver"); catch(classnotfoundexception e) { // driver niet gevonden Hierin is JDBC.driver de volledige naam van de JDBC-driver klasse. Voor de open source 100% Java database hsqldb is dit bijvoorbeeld "org.hsqldb.jdbcdriver". Als je K. Behiels J. Gils Persistentie en Threads 19
9 met Access werkt is dit "sun.jdbc.odbc.jdbcodbcdriver", de standaard JDBC- ODBC-driver van Sun Microsystems. De belangrijkste methode van deze klasse is de getconnection-methode, die bestaat in drie verschillende versies (telkens public static): Connection getconnection(string url); Connection getconnection(string url, Properties info); Connection getconnection(string url, String user, String password); Driver Deze interface is geïmplementeerd door elke JDBC-driver-klasse. De driver-klasse zelf is geladen en geregistreerd bij de DriverManager. Er kan meer dan één driver tegelijkertijd geregistreerd zijn. De DriverManager vraagt elke driver om te connecteren met de database op de bijbehorende URL. Connection De connection-interface stelt een verbinding met een database voor. Een instantie hiervan wordt bekomen met de getconnection-methode van de DriverManager-klasse. Hij bevat de volgende methoden die allemaal een throw van een SQLException kunnen doen: public void close(); Met deze methode sluit je de verbinding onmiddellijk af in plaats van te wachten tot ze automatisch wordt afgesloten. public boolean isclosed(); Test of de verbinding al of niet is afgesloten. public Statement createstatement(); public PreparedStatement preparestatement(string sql); Met de createstatement-methode maak je een Statement-object om SQLuitdrukkingen naar een database te zenden. Wanneer een SQL-uitdrukking meer dan eenmaal wordt uitgevoerd is het beter een PreparedStatement te gebruiken. public boolean getautocommit(); public void setautocommit(boolean autocommit); Met de eerste methode kan je de toestand van autocommit opvragen, met de tweede kan je ze wijzigen. Standaard staat autocommit op true. Dit wil zeggen dat de JDBC-driver de transactie automatisch zal beëindigen (starten gaat altijd automatisch). Als je autocommit op false zet moet je zelf de transactie eindigen met commit of rollback. public void commit(); public void rollback(); Met de commit-methode maak je alle wijzigingen in de database (sinds de laatste commit of rollback) permanent. Met de rollback-methode breng je de database terug in de toestand na de laatste succesvolle commit. 20 Persistentie en Threads K. Behiels J. Gils
10 Statement Je gebruikt een statement-methode om een SQL-uitdrukking uit te voeren en de geproduceerde resultaten te bekomen. De twee belangrijkste methoden zijn de volgende (ze kunnen ook een SQLException veroorzaken): public ResultSet executequery(string sql); public int executeupdate(string sql); De executequery-methode voert een SQL-uitdrukking uit en geeft een ResultSetobject terug. Met een executeupdate kan je insert-, update- of delete <SQL-uitdrukking> uitvoeren. De return-waarde is het aantal records dat door de transactie gewijzigd is. ResultSet Deze interface bevat het resultaat van een query in de vorm van een soort tabel. Hij bevat een soort pointer waarmee je naar de verschillende gegevensrijen kunt verwijzen. De drie belangrijkste methoden (die ook allemaal een SQLException kunnen veroorzaken) zijn: public boolean isfirst(); public boolean islast(); Deze methoden geven aan of de pointer respectievelijk naar de eerste of naar de laatste record in de ResultSet verwijst. public boolean next(); Deze methode verplaatst de pointer naar de volgende record. Ze geeft true terug zolang er nog records zijn. public ResultMetaData getmetadata(); Deze methode geeft de meta data van de ResultSet. public XXX getxxx(int kolomindex); De getxxx-methoden, waarbij XXX voor een datatype staat, gebruik je om de waarde van een kolom in een bepaalde rij van de ResultSet op te vragen. Kolomindex 1 geeft de eerste kolom enzovoort. PreparedStatement Deze interface is een uitbreiding van de Statement-interface en wordt gebruikt om een SQL-uitdrukking vooraf te compileren zodat ze bij meervoudig gebruik efficiënter uitgevoerd wordt. ResultSetMetaData Deze interface stelt de meta data van een ResultSet voor. Ze bevat onder andere de volgende methoden (ook hier is een SQLException mogelijk): public int getcolumncount(); Geeft het aantal kolommen terug. public String getcolumnname(int kolomindex); Geeft de naam van de kolom terug, de indexwaarde van de eerste kolom is 1. K. Behiels J. Gils Persistentie en Threads 21
11 2.2.3 Toegang krijgen tot een database Om toegang te krijgen tot een tabel in een database moet je 4 stappen doorlopen: Stap 1: Laad de JDBC-database-driver Voor bijna alle populaire databases zijn er tegenwoordig JDBC-drivers op de markt, bijvoorbeeld voor Oracle, Sybase, DB2, SQL Server, Er zijn ook heel wat open source databases zoals MySQL, hsqldb, Apache Derby, Ook voor ODBC zijn er drivers beschikbaar zodat je, indien nodig, via een JDBC-ODBC bridge kan connecteren. Een goede bron om drivers te zoeken is de volgende URL: Omdat JDBC-drivers meestal in de vorm van een *.jar-bestand geleverd worden is het eerste wat je moet doen ervoor zorgen dat de driver gevonden kan worden. Kopieer daarom de driver (het *.jar bestand) in de lib-directory van je toepassing (WEB-INF\lib voor een webapplicatie). Wanneer je met een JDBC-ODBC-bridge werkt is dit niet noodzakelijk omdat die in je Java-omgeving geïntegreerd is. Wanneer je van plan bent om met verschillende databases te werken moet je alle benodigde drivers laden. Als je bijvoorbeeld vanuit een programma met Access en MySQL-bestanden wilt werken moet je in je programma de volgende regels opnemen: // voor Access Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); // voor MySQL ( Class.forName("com.mysql.jdbc.driver"); Voor MySQL ( moet je programma de beschikking hebben een aangepaste driver in de vorm van een jar-bestand. Je vindt die op de url Een interessante database om je programma s te testen is hsqldb (zie Het volstaat om het bestand hsqldb.jar als library in je programma op te nemen om een compleet databasesysteem ter beschikking te hebben. Het laden van de driver hiervoor gaat via: // voor hsqldb Class.forName("org.hsqldb.jdbcDriver"); Stap 2: Maak een verbinding (Connection) Nadat de JDBC-driver bij de DriverManager geregistreerd is kan je een verbinding met de database maken. Het eerste argument bij de verschillende versies van de getconnection-methodes is altijd de URL. Deze URL-string heeft de volgende syntaxis: "jdbc:subprotocol:subname" 22 Persistentie en Threads K. Behiels J. Gils
12 De subprotocol- en de subname-delen zijn afhankelijk van de database die je gebruikt. Als je met Access werkt is het subprotocol odbc en de subname de DSN (Data Source Name) voor de database (normaal de naam van het databasebestand). Als je Access-bestand de naam JavaWeb.mdb heeft dan wordt de URL-string als volgt: "jdbc:odbc:javaweb" Bij MySQL is het subprotocol mysql en de subnaam de naam van de machine en de database, de URL-string voor een database met de naam JavaWeb wordt dan: "jdbc:mysql://javaweb" en als de naam van de server 'linux' is wordt het: "jdbc:mysql///linux/javaweb" Voor hsqldb is het subprotocol hsqldb en de subnaam een verwijzing naar de database, je kan hier met een relatief pad werken. De volledige uitdrukkingen zijn dan respectievelijk bijvoorbeeld: Connection connection = DriverManager.getConnection("jdbc:odbc:JavaWeb"); Connection connection = DriverManager.getConnection("jdbc:mysql://JavaWeb"); Connection connection = DriverManager.getConnection("jdbc:mysql://linux/JavaWeb", "admin", "secret"); Connection connection = DriverManager.getConnection("jdbc:hsqldb:dbData/JavaWeb", "as", ""); In de laatste gevallen worden ook gebruikersnaam en wachtwoord meegegeven. Bij hsqldb is de standaard user as en het standaard password leeg. Stap 3: Maak een SQL-uitdrukking (Statement) Nadat je een Connection-object ter beschikking gekregen hebt kan je een SQLuitdrukking maken. Welke SQL-onderdelen begrepen worden is afhankelijk van je database server. Verder is de uitvoering van een SQL-uitdrukking afhankelijk van het toegankelijkheidsniveau, bijvoorbeeld of je al of niet de toelating hebt om records te wijzigen. Je creëert eerst een Statement-object (uitgaande van een open verbinding met de naam connection). Daarna kan je een executequery- of een executeupdate-methode uitvoeren. Bijvoorbeeld met een tabel met de naam Gebruikers: K. Behiels J. Gils Persistentie en Threads 23
13 Statement statement = connection.createstatement(); String sqlstring = "INSERT INTO Gebruikers " + "VALUES ('Don', 'Johnson', 'Miami', 'Vice')"; statement.executeupdate(sqlstring); ResultSet result = statement.executequery("select * FROM Gebruikers"); Stap 4: Verwerk het resultaat (ResultSet) Als je gebruik maakte van een executequery-statement dan staat het resultaat daarvan in een ResultSet-object. Om de gegevens hieruit op te halen kan je gebruik maken van de getxxx-methoden waarvan de getstring-methode de meest gebruikte is. Deze methode bestaat in twee versies: public String getstring(int kolomindex) ; public String getstring(string kolomnaam); De verschillende records doorlopen kan met de volgende lus: while(result.next()) { // Een praktisch MVC voorbeeld Voor de het programmavoorbeeld maken we gebruik van de volgende eenvoudige tabel Gebruikers. De tabel wordt (indien hij nog niet bestaat) in het programma zelf aangemaakt: Gebruikers Sleutel Voornaam Familienaam Gebruikersnaam Wachtwoord 1 Jos Gils gils swordfish 2 Erik Goossens goose matrix 3 Theo Jansens jans sleeples 4 Luc Lambrecht lam stigmata 5 Ronny Verlinden ronny silence 6 Kris Van Gompel gompy outbreak 7 Els D'Heer d'heer o'cool 8 Tom Van den Eede tom nightowl Model Voor het model maak je gebruik van de klassen Gebruiker en Gebruikers. 24 Persistentie en Threads K. Behiels J. Gils
14 Besluit Naast serialisatie zijn er nog andere manieren om Java-objecten op te slaan. De opslag in een XML-bestand heeft grote voordelen op gebied van overdraagbaarheid. Communicatie met databases gaat in Java onder andere met behulp van JDBC. Wat je moet kennen en kunnen: objecten in XML-bestanden opslaan gebruik makende van de Castor tool; een verbinding met een database maken en er gegeven uit lezen. Opdracht De klasse EuroLand bevat de volgende velden: private String naam; private int toetredingsjaar; private String munteenheid; private String extrainfo; De klasse EuroLanden bevat een verzameling van EuroLand-objecten. De klasse EuroLandenData (bijgevoegd) bevat de eigenlijke gegevens die je in EuroLandApplicatie (ook bijgevoegd) eerst in een EuroLanden-object moet invoeren Vervolgens moet je het EuroLanden-object met behulp van Castor naar een XML-bestand wegschrijven en dat bestand daarna terug inlezen in datzelfde EuroLanden-object. Zorg er wel voor dat het object voorafgaand aan het teug inlezen eerst op null gezet wordt, anders weet je niet zeker of het omzetten naar en van XML wel goed werkt. Bij het opstarten van het programma (na omzetten naar XML en terug inlezen) moet je de volgende lay-out bekomen: Uiteraard moet bij het selecteren van een ander land de bijbehorende informatie in de overeenstemmende groene velden wijzigen. 36 Persistentie en Threads K. Behiels J. Gils
15 Verder vind je de lay-out bij het uitvergroten (met GridBagLayout gewerkt) en ook het hoofdprogramma. Let op! Voor deze opgave heb je drie libraries in de vorm van een jar-bestand nodig, met name castor-1.1.x.x-xml.jar, commons-logging-1.1.jar (commons.apache.org/logging) en xerces.jar. De laatste vind je in de lib directory van IntelliJ, de eerste kan je downloaden bij public class EuroLandApplicatie { public static void main(string[] args) { List data = new EuroLandenData().getLanden(); EuroLanden landen = new EuroLanden(data); XmlTool tool = new XmlTool(landen); tool.createxml(); landen = tool.retrievexml(); new EuroLandFrame("EuroLanden", landen); K. Behiels J. Gils Persistentie en Threads 37
Objectgeoriënteerd Programmeren en Webapplicaties
Info-books HO40c Toegepaste Informatica Objectgeoriënteerd Programmeren en Webapplicaties Deel 40c: Java voor het internet: Servlets K. Behiels - J. Gils Hoofdstuk 3 JDBC 3.1 Inleiding De technologie die
Correspondentie inzake overnemen of reproductie kunt u richten aan:
Vrijwel alle namen van software- en hardwareproducten die in deze cursus worden genoemd, zijn tegelijkertijd ook handelsmerken en dienen dienovereenkomstig te worden behandeld. Alle rechten voorbehouden.
Correspondentie inzake overnemen of reproductie kunt u richten aan:
Vrijwel alle namen van software- en hardwareproducten die in deze cursus worden genoemd, zijn tegelijkertijd ook handelsmerken en dienen dienovereenkomstig te worden behandeld. Alle rechten voorbehouden.
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
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
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
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
Databases - Inleiding
Databases Databases - Inleiding Een database is een verzameling van een aantal gegevens over een bepaald onderwerp: een ledenbestand van een vereniging, een forum, login gegevens. In een database worden
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
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
Technische nota AbiFire Rapporten maken via ODBC
Technische nota AbiFire Rapporten maken via ODBC Laatste revisie: 23 januari 2018 Inhoudsopgave 1 Inleiding... 2 2 Systeeminstellingen in AbiFire... 3 2.1 Aanmaken extern profiel... 3 2.2 Toewijzing extern
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
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
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
Technische nota AbiFire5 Rapporten maken via ODBC
Technische nota AbiFire5 Rapporten maken via ODBC Laatste revisie: 29 juli 2009 Inhoudsopgave Inleiding... 2 1 Installatie ODBC driver... 2 2 Systeeminstellingen in AbiFire5... 3 2.1 Aanmaken extern profiel...
Sparse columns in SQL server 2008
Sparse columns in SQL server 2008 Object persistentie eenvoudig gemaakt Bert Dingemans, e-mail : [email protected] www : http:// 1 Content SPARSE COLUMNS IN SQL SERVER 2008... 1 OBJECT PERSISTENTIE EENVOUDIG
De MySQL C API. Variabelen in C Functies in C Pointers in C
LinuxFocus article number 304 http://linuxfocus.org De MySQL C API door Özcan Güngör Over de auteur: Ik gebruik Linux sinds 1997. Vrijheid, flexibiliteit en opensource. Dat
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
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
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
SYNTRA-WEST. Initiatiecursus JAVA. Deel
SYNTRA-WEST Initiatiecursus JAVA Deel Syntra-West Syntra-West (vroeger Vormingsinstituut West-Vlaanderen) Doorniksesteenweg 220 8500 Kortrijk Tel. 056/26.02.00 Fax 056/22.81.07 i Inhoudsopgave SYNTRA-WEST...
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
PHP en een MySQL database.
mysql_php.doc 1/5 PHP en een MySQL database. Om informatie uit een MySQL database op te halen moet je de volgende stappen uitvoeren: 1. een verbinding maken met mysql; 2. een mysql database selecteren;
Technisch Ontwerp W e b s i t e W O S I
Technisch Ontwerp W e b s i t e W O S I WOSI Ruud Jungbacker en Michael de Vries - Technisch ontwerp Website Document historie Versie(s) Versie Datum Status Omschrijving / wijzigingen 0.1 20 nov 2008 Concept
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
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
Informatica. Objectgeörienteerd leren programmeren. Van de theorie met BlueJ tot een spelletje met Greenfoot... Bert Van den Abbeele
Informatica Objectgeörienteerd leren programmeren Van de theorie met BlueJ tot een spelletje met Greenfoot... Bert Van den Abbeele http://creativecommons.org/licenses/by-nc-nd/3.0/legalcode Objectgeörienteerd
Voor de database wordt een Access 2000 bestand gebruikt, met voorlopig 1 tabel:
Eenvoudig voorbeeld. Er wordt verondersteld dat er met VS 2008 EXPRESS gewerkt wordt. Voor de database wordt een Access 2000 bestand gebruikt, met voorlopig 1 tabel: (Sommige schermafdrukken zijn afkomstig
Koppeling met een database
PHP en MySQL Koppeling met een database 11.1 Inleiding In PHP is het eenvoudig om een koppeling te maken met een database. Een database kan diverse gegevens bewaren die met PHP aangeroepen en/of bewerkt
Programmeren in Java 3
26 september 2007 Deze les korte herhaling vorige les Unified Modelling Language notatie van een class afleiding pointers abstracte classes polymorphisme dubieuze(?) constructies interfaces Meer over class
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));
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.
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.
SQL manipulatietaal. We kunnen er data mee toevoegen, wijzigen en verwijderen uit een database.
SQL manipulatietaal We kunnen er data mee toevoegen, wijzigen en verwijderen uit een database. Basiscommando's: INSERT : toevoegen van gegevens DELETE : verwijderen van gegevens UPDATE : wijzigen van gegevens
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
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
voegtoe: eerst methode bevat gebruiken, alleen toevoegen als bevat() false is
PROEF-Tentamen Inleiding programmeren (IN1608WI), X januari 2010, 9.00-11.00, Technische Universiteit Delft, Faculteit EWI, Afdeling 2. Open boek tentamen: bij het tentamen mag alleen gebruik worden gemaakt
Programmeren (1) Examen NAAM:
Schrijf al je antwoorden op deze vragenbladen (op de plaats die daarvoor is voorzien) en geef zowel klad als net af. Bij heel wat vragen moet je zelf Java-code schrijven. Hou dit kort en bondig. Je hoeft
WebUntis 2014 Instructies basisinstallatie
WebUntis 2014 Instructies basisinstallatie Copyright 2013 Untis Benelux Rotterdam Installatie WebUntis 1 1 Algemeen... 2 1.1 Java JRE 7... 2 1.2 Apache Tomcat... 2 1.3 Een database.... 4 1.4 JDBC-Driver...
8. Koppeling met een database
PHP7 en MySQL 8. Koppeling met een database 8.1 Inleiding In PHP is het eenvoudig om een koppeling te maken met een database. Een database kan diverse gegevens bewaren die met PHP aangeroepen en/of bewerkt
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
Practicum Orientatie op Webserver
Practicum Orientatie op Webserver Doel: Een goed beeld krijgen van een drie-tier applicatie. Het gebruik van drivers om database-onafhankelijk te werken. Het kunnen lezen van een java servlet. Database
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.
WebUntis 2014 Instructies basisinstallatie
WebUntis 2014 Instructies basisinstallatie Copyright 2013 Untis Benelux Rotterdam Installatie WebUntis 1 1 Algemeen...2 1.1 Java JRE 7... 2 1.2 Apache Tomcat... 2 1.3 Een database.... 4 1.4 JDBC-Driver...
Databanken en webtoepassingen in Java
Databanken en webtoepassingen in Java K. Coolsaet Universiteit Gent 17/21 maart 2017 WiFi UGentGuest Gebruikersnaam: guestleerkr Wachtwoord: T5EVyMYW Eerst surfen naar http://www.ugent.be Cursuswebsite:
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
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,
icafe Project Joeri Verdeyen Stefaan De Spiegeleer Ben Naim Tanfous
icafe Project Joeri Verdeyen Stefaan De Spiegeleer Ben Naim Tanfous 2006-2007 Inhoudsopgave 1 2 1.1 Programmeertaal PHP5..................... 2 1.2 MySQL database......................... 3 1.3 Adobe Flash...........................
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
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
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
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
Hoofdstuk 6. PHP Data Objects. Cursus PHP & MySQL Groep D
Hoofdstuk 6 PHP Data Objects Cursus PHP & MySQL Groep D Hoofdstuk 1: PHP Data Objects 1.1 Inleiding Tegenwoordig kun je er bij het ontwikkelen van een website bijna niet meer omheen: het gebruik van een
Modelleren en Programmeren
Modelleren en Programmeren Jeroen Bransen 27 november 2015 Recursie Objecten Constructors Aanpassen variabelen this keyword Recursie Recursie Recursieve functie roept zichzelf (direct of indirect) aan
Objectgeoriënteerd programmeren in Java 1
Objectgeoriënteerd programmeren in Java 1 CPP Javaprogrammeur Bijeenkomst 3 Leereenheden 7, 8, 9 De Java API Java bevat een grote bibliotheek standaardklassen: de Java API Voorbeelden java.lang basisklassen
Installatie instructie
ORTHOSMART B.V. 23 JANUARI 2019 Copyright 2019, Orthosmart B.V. Theremon Cloud 23 Januari 2019 Inhoudsopgave 2. REGISTREREN BIJ THERAMON CLOUD... 2 2.1 REGISTREREN NIEUWE GEBRUIKER... 2 2.2 INSTALLEREN
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
Tentamen 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.
Info-books. Toegepaste Informatica. Deel 37: Programmeren in Java HO37. K. Behiels - J. Gils
Info-books HO37 Toegepaste Informatica Deel 37: Programmeren in Java K. Behiels - J. Gils Hoofdstuk 3 Klassen 3.1 Klassen, variabelen en methoden 3.1.1 Wat is een klasse? Een struct van ANSI C is een goede
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
Syntra-West. Syntra-West Doorniksesteenweg 220 8500 Kortrijk Tel. 056/26.02.00 Fax 056/22.81.07
Syntra-West Syntra-West Doorniksesteenweg 220 8500 Kortrijk Tel. 056/26.02.00 Fax 056/22.81.07 i Inhoudsopgave SYNTRA-WEST... 0 INITIATIECURSUS JAVA & DATABASE-DEVELOPNMENT... 0 JBUILDER 2005... 0 1. INLEIDING...
Beginselen van programmeren Practicum 1 (Doolhof) : Oplossing
Beginselen van programmeren Practicum 1 (Doolhof) : Oplossing Introductie In dit document geven we een mogelijke oplossing voor het eerste practicum. Deze oplossing gebruikt verschillende klassen en overerving,
Abstracte klassen & Interfaces
Abstracte klassen & Interfaces Overerving public class Vierhoek {... Vierhoek public class Rechthoek extends Vierhoek {... public class Ruit extends Vierhoek {... Rechthoek Ruit Elke rechthoek is een vierhoek.
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
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
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
ASRemote 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
Les 11 : Basis SQL (deel2).
Les 11 : Basis SQL (deel2). Wat is SQL? SQL gaan we gebruiken voor het raadplegen van de database. We gaan gegevens invoegen in de database, selecteren, aanpassen en verwijderen van de database. Om dit
Technical Note. API Beschrijving Aangetekend Mailen
AUTHOR APPROVED Technical Note API Beschrijving Referentie: API beschrijving AM Versie: 0.0.7 Datum: 2015-07-24 Aangetekend Bellen B.V. Computerweg 5 Postbus 8307 3503 RH Utrecht T: +31 346 581 731 [email protected]
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
Open SQL Server Management Studio en log in als Administator. Je ziet dan wat je in figuur 2.1 ziet.
Hoofdstuk 2 Een ASP.NET applicatie met ADO.NET opzetten In dit hoofdstuk ga je een eenvoudige website opzetten, waarbij je een aantal gegevens uit een database ophaalt. Je moet je kennis van ADO.NET dus
Objectgericht programmeren 1.
Objectgericht programmeren 1 [email protected] http://www.cs.kuleuven.be/~joost/dn Objectgericht ontwerpen 35% Objectgericht ontwerpen 65% OP1 Informatiesystemen 50% Databanken 50% OP1 Evaluatie
Les 2 Eenvoudige queries
Les 2 Eenvoudige queries XAMP Apache server ( http ) mysql server PHP myadmin IAM SQL oefeningen Database phpmyadmin Import : sql_producten.sql, sql_winkel.sql, sql_festival.sql SAMS SQL in 10 minuten
Handleiding voor het installeren van VBA scripts in Outlook
Handleiding voor het installeren van VBA scripts in Outlook Brondocument E:\OutLook\InstallerenVBAScriptOutlook.odt Versiebeheer Versie Datum Uitleg 1.0v 21-03-12 1e versie na draaien prototype klant 1.1v
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
Powerpoint presentatie College 5 Gilbert van Lierop & Farshad Salamat
Powerpoint presentatie College 5 Gilbert van Lierop & Farshad Salamat Wat is een database? Een verzameling van georganiseerde data Een database bestaat uit applicaties, SQL en het DBMS Watis eendbms? EenDBMS
Secure Application Roles
Secure Application Roles Beheer de toegang tot de database 1. Inleiding Het realiseren van geautoriseerde toegang tot een database lijkt eenvoudig. Echter, vaak blijkt dat dezelfde combinatie van gebruikersnaam
Java. Basissyllabus. Egon Pas
Java Basissyllabus Egon Pas 2011 BeanPole bvba Gasmeterlaan 92-9000 Gent BTW BE 472.902.516 Tel: + 32 9 224 42 17 Fax: + 32 9 223 62 88 www.beanpole.be [email protected] 1 Programmeren 1.1 Hoe werkt een
NAAM: Programmeren 1 Examen 21/01/2011
Programmeren 1 21 januari 2011 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
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,
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 [email protected] en [email protected]
Programmeren met databanken volgens het lagenmodel in C#
Programmeren met databanken volgens het lagenmodel in C# met Visual Studio en MySQL HA-2267-02 Informaticabeheer Bert Cauwenberg en Lieven Pauwels Werkgroep Handel 2016 Guimardstraat 1, 1040 Brussel Guimardstraat
INFORMATICA 1STE BACHELOR IN DE INGENIEURSWETENSCAPPEN
INFORMATICA 1STE BACHELOR IN DE INGENIEURSWETENSCAPPEN voorbeeldexamen NAAM :... OPMERKINGEN VOORAF Je krijgt 3 uur de tijd om de opdrachten voor dit examen uit te voeren. Verder werken aan je oplossing
Dynamische Websites. Week 6. vrijdag 25 oktober 13
Dynamische Websites Week 6 AGENDA Herhaling Databank SQL Injection Ontwerp OO _ indien private of protected magic zo weinig mogelijk php! View MVC home.php confirm.php vehicledetail.php Controller Model
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
Instellen back up Microsoft SQL database Bronboek Professional
Instellen back up Microsoft SQL database Bronboek Professional In deze handleiding word een drietal punten besproken. Deze punten zijn allen noodzakelijk voor het inrichten van een goede back up voor de
Vervang UW SERVERNAAM, UW SERVERNAAM ZONDER VPN en COMPUTERNAAM door de naam van de server en computer welke wij u doorgegeven hebben.
VPN ONDER WINDOWS 7 VOOR JE BEGINT Deze handleiding is geschreven voor Windows 7. Bij het doorlopen van de handleiding zal je regelmatig handelingen moeten uitvoeren. Hierbij wordt een vaste schrijfwijze
Met een LightSwitch applicatie een OData service uit de Windows Azure Marketplace consumeren
Met een LightSwitch applicatie een OData service uit de Windows Azure Marketplace consumeren Om eens wat ervaring op te doen met de Windows Azure Marketplace heb ik een publieke en gratis databron gekozen
Programmeren I. 26 augustus Algemene Richtlijnen. Richtlijnen Programmeren 1
Algemene Richtlijnen Programmeren I 26 augustus 2015 Schrijf je naam bovenaan elk antwoordblad en kladblad. Schrijf niet met potlood of in het rood op je antwoordbladen. Gebruik voor elke vraag een afzonderlijk
Tentamen in2705 Software Engineering
Tentamen in2705 Software Engineering Voorbeeld (bijna tweemaal te groot) U mag meenemen naar dit tentamen: Lethbridge, afdrukken PPT slides, afdrukken handouts. 1. De TU wil een nieuw systeem ontwikkelen
