Introductie en even voorstellen

Maat: px
Weergave met pagina beginnen:

Download "Introductie en even voorstellen"

Transcriptie

1 Introductie en even voorstellen Onlangs is PHP5 uitgekomen. PHP5 is een grote stap voorwaards voor iedereen die met deze populaire programmeertaal werkt. In deze presentatie bekijken we de belangrijkste nieuwe mogelijkheden die PHP5 biedt. Senior Web Developer Freelance docent Masterclass PHP

2 Onderwerpen in deze presentatie De Zend Engine 2.0: OO programmeren naar een hoger niveau getild. DOM XML: nu DOM Level 2 compliant SimpleXML: simpel met XML werken SQLite: SQL zonder database server Einde

3 De Zend 2.0 engine

4 Zend Engine 2.0 private en protected members private en protected methods abstract classes en methods interfaces over constructors en destructors exception handling overige nieuwe mogelijkheden

5 Zend Engine 2.0: private members Een member variabele was in PHP4 altijd public en dus overal in de code op te vragen of te wijzingen. PHP5 introduceert de keywords private en protected om variabelen beter af te schermen. Class clsdemo { private $m_stekst = "hallo"; function printtekst() { return $this->m_stekst; $objdemo = new clsdemo(); echo $objdemo->printtekst(); echo $objdemo->m_stekst; De juiste manier om de member $m_stekst te tonen is via een access method. Direct aanroepen via $object->member geeft: Fatal error: Cannot access private property clsdemo::$m_stekst in /var/www/ demo/test.php on line 10

6 Zend Engine 2.0: protected members Protected members zijn alleen toegankelijk vanuit extending classes. Private members zijn niet gedefiniëerd in extending classes. 01: Class clsdemo { 02: protected $m_stekst = "hallo"; 03: private $m_sprive = "dit is geheim"; 04: function printprive() { 05: echo $this->m_sprive; 06: 07: 08: Class clsdemochild extends clsdemo { 09: function printvars() { 10: echo $this->m_stekst."\n"; 11: echo $this->m_sprive; 12: echo clsdemo::printprive()."\n"; 13: 14: 15: $objdemo = new clsdemochild(); 16: echo $objdemo->printvars(); 17: echo $objdemo->m_stekst; 18: echo $objdemo->m_sprive; 10: print hallo : protected member wordt overerfd. 11: print NIETS: private member wordt niet overerfd. 12: print dit is geheim : toegang via access method van de parent. 17: Error, 18: NIETS

7 Zend Engine 2.0: private methods Private methods kunnen ALLEEN van binnenuit de class zelf aangeroepen worden. Elke andere denkbare aanroep resulteerd in een error. Class clsdemo { private function privatemethod() { return "private method gebruikt\n"; function publicmethod() { echo $this->privatemethod(); $objdemo = new clsdemo(); echo $objdemo->privatemethod() // FAALT echo $objdemo->publicmethod() // SLAAGT Class clsextend extends clsdemo { function printout() { return $this->privatemethod(); // FAALT bij aanroep function printout2() { return clsdemo::privatemethod(); // FAALT bij aanroep function printout3() { return $this->publicmethod(); // GOED

8 Zend Engine 2.0: protected methods Protected methods kunnen alleen binnen children van de class waarbinnen ze gedefiniëerd zijn worden aangeroepen. Class clsdemo { protected function protectedmethod() { return "protected method gebruikt"; Class clsextends extends clsdemo { function printout() { return $this->protectedmethod(); Goed: aanroep door child van clsdemo $objdemo = new clsextends(); echo $objdemo->printout(); Fout: aanroep van buitenaf. geeft errormelding. $objdemo2 = new clsdemo(); echo $objdemo2->protectedmethod();

9 Zend Engine 2.0: abstract classes Een abstract class is een class die slechts gedeeltelijk is ingevuld met code. Ze kunnen NIET geïnstantieerd worden maar moeten verder ingevuld worden door een extending class. abstract Class clsframe { abstract public function sayhi(); Class clsimplemented extends clsframe { public function sayhi() { return "Hi there!"; $objtest = new clsimplemented(); echo $objtest->sayhi(); Fout: instantiatie van een abstract class. $objtest = new clsframe(); Classes met 1 of meer abstract methods MOETEN zelf ook abstract gedeclareerd worden.

10 Zend Engine 2.0: interfaces PHP5 introduceert interfaces. Een interface is een set van lege method definitions. Classes kunnen een of meerdere interfaces implementeren. Class clsdemo implements itfdemo { public function sayhi() { return "Hi!"; public function saybye() { return "Bye!"; interface itfdemo { public function sayhi(); public function saybye(); Class clsdemo implements itfdemo { public function sayhi() { return "Hi!"; abstract Class clsdemo implements itfdemo { public function sayhi() { return "Hi!"; Class clsextend extends clsdemo {.... FOUT: niet alles van interface is aanwezig. GOED: onvolledige class abstract declareren en later extenden.

11 Zend Engine 2.0: constructors PHP5 heeft uniforme constructors die niet meer de naam van de class dragen maar altijd hetzelfde heten. Nieuw in PHP5 zijn de destructors en de mogelijkheid objecten te vernietigen. Class clsdemo { function construct() { echo "hallo wereld"; function destruct() { echo "vaarwel wrede wereld"; Bij instantiatie wordt de constructor aangeroepen. De destructor als het script ophoudt te runnen OF bij een expliciete vernietiging: $objdemo = new clsdemo(); unset($objdemo); // sterf!!.... // code na de dood van.. // $objdemo

12 Zend Engine 2.0: exception handling Nieuw in PHP5: exceptions. Eindelijk een degelijke manier om fouten op te vangen en af te handelen. Er is een ingebouwde exception class met de volgende methods: construct() constructor (argumenten: errorstring, optionele int) getmessage() retourneert error message (boven gegeven) getcode() retourneert de (optioneel meegegeven) errorcode getfile() pad naar file waarin de exception gegenereerd werd getline() regelnummer waarin de exception gegenereerd werd gettrace() array met stack trace informatie over de fout gettraceasstring() zelfde als gettrace() maar nu als string

13 Zend Engine 2.0: exception handling Een exception kan in principe gemaakt worden op de standaard manier om een object aan te maken maar beter is het keyword throw te gebruiken: $nvalue = -1; if($nvalue < 0) { throw new exception ( onder 0 );.. // vervolgcode Fatal error: Uncaught exception 'Exception' with message 'waarde onder 0' in /var/www/demo/demo.php:4 Stack trace: #0 {main thrown in /var/www/demo/demo.php on line 4 throw forceert een Fatal error! We kunnen ervoor zorgen dat onze code bij bepaalde fouten niet door executeert ondanks dat PHP zelf geen fout ziet.

14 Zend Engine 2.0: exception handling In plaats van de executie te laten stoppen kunnen we ook fouten afvangen en ernaar handelen. class clskanfoutgaan { function construct($narg) { if($narg < 0) throw new exception("onder 0"); try { $objditgaatfout = new clskanfoutgaan(-1); catch (Exception $e) { echo "het ging fout, de melding was: ".$e->getmessage(); We kunnen de fout dus vangen met het catch statement. Wanneer we hem gevangen hebben kunnen we de code daarna door laten lopen. Binnen het try block wordt code NA optreden van de exception NIET meer uitgevoerd.

15 Zend Engine 2.0: exception handling We kunnen een onbeperkt aantal soorten fouten afvangen met try-catch constructies: class belowzeroexception extends Exception {; class abovenineexception extends Exception {; class clskanfoutgaan { function construct($narg) { if($narg < 0) throw new belowzeroexception("onder 0"); if($narg > 9) throw new abovenineexception("boven 9"); try { $objditgaatfout = new clskanfoutgaan(-1); catch (belowzeroexception $e) { echo "het ging fout, de melding was: ".$e->getmessage(); catch (abovenineexception $e) { echo "het ging op een andere manier fout. de melding was: ".$e->getmessage();

16 Zend Engine 2.0: overige nieuwe mogelijkheden Static methods instanceof() (check of een object een instance van een bepaalde class is) tostring() METHOD constante final methods reflection API

17 XML in PHP5

18 XML in PHP PHP5 biedt nu drie verschillende manieren om met XML om te gaan: SimpleXML SAX DOM SAX (XML lezen/ verwerken) DOM (XML lezen, wijzigen en genereren) SimpleXML (eenvoudiger manier om XML te lezen, wijzigen en genereren, eigen PHP5 standaard)

19 W3C DOM Level 2 XML interface XML: geen buzzword meer maar een breed geaccepteerde standaard. DOMXML in PHP 4 experimenteel en buggy PHP5 DOM interface 100% W3C DOM Level 2 compliant Performance sterk verbeterd PHP5 DOM classes kunnen door de programmeur uitgebreid worden

20 W3C DOM Level 2 XML interface PHP DOM XML Code voorbeeld. XML maken: $acontentexample = array("piet" => "Janssen", "Marie" => "de Boer", "Frits" => "Peters", "Carla" => "de Groot"); $objdom = new DOMDocument(); $objrootelement = $objdom- >createelement("medewerkers"); foreach($acontentexample as $skey => $svalue) { echo $sthisone; $objpersoonelement = $objdom- >createelement("persoon"); $objrootelement->appendchild($objpersoonelement); $objvoornaamelement = $objdom- >createelement("voornaam"); $objvoornaamelement->appendchild($objdom- >createtextnode($skey)); $objpersoonelement- >appendchild($objvoornaamelement); $objachternaamelement = $objdom- >createelement("achternaam"); $objachternaamelement->appendchild($objdom- >createtextnode($svalue)); $objpersoonelement- >appendchild($objachternaamelement); $objdom->appendchild($objrootelement); header("content-type:text/xml"); echo $objdom->savexml(); De PHP5 DOM XML interface biedt ons de mogelijkheid op een gestructureerde en 100% object georiënteerde manier met XML documentstructuren om te gaan, zowel bij lezen, wijzigen als genereren van XML documenten.

21 W3C DOM Level 2 XML interface Documentatie momenteel nog schaars Zend.com PHP Manual MasterClass PHP5 W3C Dom Level 2 spec documentatie ALLE Dom Level 2 classes met bijbehorende methods en members zijn in PHP5 geïmplementeerd. De W3C spec kan dus naast PHP documentatie als naslagwerk gebruikt worden!

22 W3C DOM XML : XSLT XSLT engine geen Sablotron maar libxml2 net als het XML DOM interface XSL stylesheets als DOM objecten XSL stylesheets kunnen in memory worden vastgehouden voor hergebruik Performance verbeterd Samen met DOM XML en SimpleXML een robuuste en uitgebreide XML/XSLT engine

23 SimpleXML

24 SimpleXML: XML op zijn Simpel SimpleXML is een nieuwe API binnen PHP5 Gebouwd op libxml2 evenals de DOM implementatie Eenvoudige representatie en manipulatie van XML documenten Representatie in de vorm van een multidimensionale structuur van arrays en objecten Makkelijk switchen tussen DOM XML en SimpleXML al naar gelang wat het handigst werkt

25 SimpleXML: XML op zijn Simpel SimpleXML is, zoals de naam doet vermoeden, simpel. Althans een stuk simpeler dan DOM XML. <?xml version="1.0"?> <bibliotheek> <plank id="literatuur"> <boek> <titel>de Aanslag</titel> <schrijver>harry Mulisch</schrijver> </boek> <boek> <titel>kort Amerikaans</titel> <schrijver>jan Wolkers</schrijver> </boek> </plank> </bibliotheek > $bibliotheek = simplexml_load_file('boeken.xml'); foreach ($bibliotheek->plank as $plank) { printf("plank %s\n", $plank['id']); foreach ($plank->boek as $boek) { printf("titel: %s\n", $boek->titel); printf("schrijver: %s\n", $boek- >schrijver); Een SimpleXML object kan behandeld worden als collectie van arrays en objecten.

26 SimpleXML: naar DOM XML en weer terug SimpleXML objecten kunnen eenvoudig omgezet worden naar DOM XML en vice versa. // van DOM XML naar SimpleXML $objsimplexml = simplexml_import_dom($objdomxml); // van SimpleXML naar DOM XML $objdomxml = new DOMDocument(); $objdomxml->loadxml($objsimplexml->asxml());

27 SQLite

28 SQLite Nieuw DBMS in PHP5 zonder externe database server (bv. MySQL, Postgres, etc.) File based Zeer uitgebreide SQL mogelijkheden Goede performance Goed voor kleine tot middelgrote applicaties Aanwezig in de PHP5 core dus praktisch altijd beschikbaar in elke PHP5 omgeving. Procedurele EN OO interface

29 SQLite SQLite voorbeeldcode (procedureel) Rows $db = sqlite_open("db.sqlite"); // insert sample data sqlite_query($db, "INSERT INTO leden (naam) VALUES ('Marco')"); sqlite_query($db, "INSERT INTO leden (naam) VALUES ('Wouter')"); $result = sqlite_query($db, "SELECT * FROM leden"); while ($row = sqlite_fetch_array($result)) { print_r($row); sqlite_close($db); Array ( [0] => 1 [id] => 1 [1] => Marco [naam] => Marco ) Array ( [0] => 2 [id] => 2 [1] => Wouter [naam] => Wouter ) Procedurele code praktisch gelijk aan mysql interface die we al kennen.

30 SQLite SQLite voorbeeld 2 (memory DB, OO interface) $db = new SQLiteDatabase(":memory:"); $db->query("begin; CREATE TABLE leden(id INTEGER PRIMARY KEY, naam CHAR(255)); INSERT INTO foo (naam) VALUES('Marco'); INSERT INTO foo (naam) VALUES('Wouter'); COMMIT;"); $result = $db->query("select * FROM leden"); while ($result->valid()) { $row = $result->current(); print_r($row); $result->next(); SQLite heeft een OO interface zodat het mooi aansluit bij OO projecten in PHP. We zien tevens in het voorbeeld dat ook technieken als transacties en in-memory databases geen probleem zijn voor SQLite.

31 SQLite voor- en nadelen Makkelijk portable tussen servers (geen database benodigd) Performt zeer goed in systemen met voornamelijk read operaties. Zeer krachtige API, zowel OO als procedureel Niet geschikt voor grote applicaties met veel write operaties Niet schaalbaar (meerdere DB servers)

32 Einde vragen?

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

Hoofdstuk 6. PHP Data Objects. Cursus PHP & MySQL Groep D

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

Nadere informatie

et Zend Framework bestaat volledig uit objectgeoriënteerde

et Zend Framework bestaat volledig uit objectgeoriënteerde et Zend Framework bestaat volledig uit objectgeoriënteerde PHP-code. Om het Zend Framework goed te kunnen begrijpen en te kunnen gebruiken, moet u minimaal de basis van objectgeoriënteerd programmeren

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

Programmeren in Java 3

Programmeren in Java 3 26 september 2007 Deze les korte herhaling vorige les Unified Modelling Language notatie van een class afleiding pointers abstracte classes polymorphisme dubieuze(?) constructies interfaces Meer over class

Nadere informatie

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

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

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

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

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

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 [email protected] en [email protected]

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

Java. Basissyllabus. Egon Pas

Java. Basissyllabus. Egon Pas Java Basissyllabus Egon Pas 2011 BeanPole bvba Gasmeterlaan 92-9000 Gent BTW BE 472.902.516 Tel: + 32 9 224 42 17 Fax: + 32 9 223 62 88 www.beanpole.be [email protected] 1 Programmeren 1.1 Hoe werkt een

Nadere informatie

Sparse columns in SQL server 2008

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

Nadere informatie

Design patterns Startbijeenkomst

Design patterns Startbijeenkomst Design patterns Startbijeenkomst Harrie Passier Docenten Sylvia Stuurman (1 e examinator) [email protected] Harrie Passier (2 e examinator) [email protected] Aarzel niet vragen te stellen! Rooster

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

Maak een pivot uit een Generic.List

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

Abstracte klassen & Interfaces

Abstracte klassen & Interfaces Abstracte klassen & Interfaces Overerving public class Vierhoek {... Vierhoek public class Rechthoek extends Vierhoek {... public class Ruit extends Vierhoek {... Rechthoek Ruit Elke rechthoek is een vierhoek.

Nadere informatie

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

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

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

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

Verder zijn er de nodige websites waarbij voorbeelden van objectgeoriënteerd PHP (of Objec Oriented PHP, OO PHP) te vinden zijn.

Verder zijn er de nodige websites waarbij voorbeelden van objectgeoriënteerd PHP (of Objec Oriented PHP, OO PHP) te vinden zijn. Objectgeoriënteerd PHP (versie 5) Kennisvereisten: Ervaring met programmeren in PHP met MySQL Je weet wat een class of klasse is Je weet wat een instantie van een klasse (een object) is Je weet wat een

Nadere informatie

Modulewijzer Tirdat01

Modulewijzer Tirdat01 Modulewijzer Tirdat01 W. Oele 25 augustus 2008 1 Inhoudsopgave 1 Inleiding en leerdoelen 3 2 Voorkennis 3 2.1 tirprg01 en tirprg02........................ 3 2.2 tirprg03.............................. 4

Nadere informatie

Hoofdstuk 1: Inleiding. Hoofdstuk 2: Klassen en objecten Datahiding: afschermen van implementatiedetails. Naar de buitenwereld toe enkel interfaces.

Hoofdstuk 1: Inleiding. Hoofdstuk 2: Klassen en objecten Datahiding: afschermen van implementatiedetails. Naar de buitenwereld toe enkel interfaces. Hoofdstuk 1: Inleiding Objectoriëntatie: 1. Objecten & klassen: samenwerking van componenten om bepaald doel te bereiken; herbruikbaarheid. 2. Encapsulation: afschermen gedragingen en kenmerken van de

Nadere informatie

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

Databases - Inleiding

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

Nadere informatie

Introductie in C++ Jan van Rijn. September 2013

Introductie in C++ Jan van Rijn. September 2013 Introductie in C++ Jan van Rijn September 2013 Inhoud Classes Overerving Const correctness Standard C++ library Templates Classes Voordelen van classes: Modelleren Modulariteit Informatie afschermen Makkelijk(er)

Nadere informatie

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

Nadere informatie

Extra voorbeelden. 1 Objectenhierarchie. 2 Kalender

Extra voorbeelden. 1 Objectenhierarchie. 2 Kalender Extra voorbeelden 1 Objectenhierarchie 2 Kalender PHP EN MYSQL de basis 1.1 Uitgebreid voorbeeld van een objectenhierarchie We zullen een aantal kenmerken van objectgeoriënteerd programmeren toelichten

Nadere informatie

Een unit test is geen integratie test. Niet het hele systeem, maar onderdelen van een systeem worden getest.

Een unit test is geen integratie test. Niet het hele systeem, maar onderdelen van een systeem worden getest. WAT IS EEN UNIT TEST? Een unit test is een test om de functionaliteit van stukken code te controleren. Een goede unit test waarborgt een consistente werking van een klein onderdeel (een unit ) van de broncode.

Nadere informatie

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

HOGESCHOOL VAN AMSTERDAM Informatica Opleiding. CPP 1 van 10

HOGESCHOOL VAN AMSTERDAM Informatica Opleiding. CPP 1 van 10 CPP 1 van 10 ADSdt 1-2009 TENTAMENVOORBLAD Voor aanvang van het tentamen s.v.p. de tentamengegevens goed doorlezen om eventuele misverstanden te voorkomen!! Naam student : Studentnummer : Groep : Studieonderdeel

Nadere informatie

Scala. Korte introductie. Sylvia Stuurman

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

Nadere informatie

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

8. Koppeling met een database

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

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

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

Modeleren. Modelleren. Together UML. Waarvan maken we een model? overzicht les 14 t/m 18. ControlCenter 6.2

Modeleren. Modelleren. Together UML. Waarvan maken we een model? overzicht les 14 t/m 18. ControlCenter 6.2 Modelleren Werkelijkheid Modelleren Modeleren Waarvan maken we een model?!analyse " Maak een model van de te automatiseren werkelijkheid of van het op te lossen probleem! Domeinkennis = structuur! Functionele

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

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

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

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

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

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

MINICURSUS PHP. Op dit lesmateriaal is een Creative Commons licentie van toepassing Sebastiaan Franken en Rosalie de Klerk Bambara

MINICURSUS PHP. Op dit lesmateriaal is een Creative Commons licentie van toepassing Sebastiaan Franken en Rosalie de Klerk Bambara MINICURSUS PHP Op dit lesmateriaal is een Creative Commons licentie van toepassing. 2017-2018 Sebastiaan Franken en Rosalie de Klerk Bambara PHP Cursus Deze cursus is om de eerste stappen in de wereld

Nadere informatie

Programmeren. Cursus Python

Programmeren. 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 informatie

In een klassendiagram worden klassen beschreven in termen

In een klassendiagram worden klassen beschreven in termen Sander Hoogendoorn is Partner bij Ordina Patterns voor het gebruik van referenties in bedrijfsklassen G O E D G E B R U I K VA N R E F E R E N T I E S In de dagen dat applicaties voornamelijk bestonden

Nadere informatie

Modulewijzer tirprog02/infprg01, programmeren in Java 2

Modulewijzer tirprog02/infprg01, programmeren in Java 2 Modulewijzer tirprog02/infprg01, programmeren in Java 2 W. Oele 17 november 2009 1 Inhoudsopgave 1 Inleiding 3 2 Studiehouding 3 3 Voorkennis 4 4 Inhoud van deze module 5 5 Leermiddelen 5 6 Theorie en

Nadere informatie

De MySQL C API. Variabelen in C Functies in C Pointers in C

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

Nadere informatie

Programmeren (1) Examen NAAM:

Programmeren (1) Examen NAAM: Schrijf al je antwoorden op deze vragenbladen (op de plaats die daarvoor is voorzien) en geef zowel klad als net af. Bij heel wat vragen moet je zelf Java-code schrijven. Hou dit kort en bondig. Je hoeft

Nadere informatie

Visual Basic.NET. Visual Basic.NET. M. den Besten 0.3 VB. NET

Visual Basic.NET. Visual Basic.NET. M. den Besten 0.3 VB. NET Visual Basic.NET M. den Besten 0.3 VB. NET Inhoud Voorwoord Deel 1 Visual Basic.NET 1.1 Inleiding...13 1.2 De programmeertaal Visual Basic.NET...14 1.3 Microsoft Visual Basic 2010 Express Edition...15

Nadere informatie

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

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

Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 7 november 2014, uur

Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 7 november 2014, uur Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 7 november 2014, 8.30-10.30 uur Schrijf op elk ingeleverd blad je naam. Schrijf op het eerste blad ook je studentnummer en het aantal ingeleverde

Nadere informatie

Datastructuren Werkcollege Intro

Datastructuren Werkcollege Intro Bart Hijmans, Universiteit Leiden. Universiteit Leiden The Netherlands Focus 1 19 ˆ Ervaring in gebruik en implementatie van datastructuren ˆ Kennis van mogelijkheden ˆ Programmeren voor andere programmeurs

Nadere informatie

NAAM: Programmeren 1 Examen 21/01/2011

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

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

Een Data Driven toepassing op basis van Visual Objects en SQL Server

Een Data Driven toepassing op basis van Visual Objects en SQL Server Een Data Driven toepassing op basis van Visual Objects en SQL Server Door Bert Dingemans www.dla-architect.nl Inleiding In voorgaande artikelen heb ik een aantal onderwerpen belicht die ten grondslag liggen

Nadere informatie

Datastructuren en algoritmen

Datastructuren en algoritmen Datastructuren en algoritmen Doelstelling Datastructures + algorithms = programs Boek van Niklaus Wirth: bedenker Pascal en Modula Datastructuur: structuur om informatie op te slaan Algoritme: voorschrift

Nadere informatie

VI. Klassen en objecten

VI. Klassen en objecten VI. Klassen en objecten Klassen en objecten vormen het fundament van OOP. We zullen dus uitgebreid aandacht besteden aan klassen en objecten. U kunt Java niet begrijpen zonder goed met klassen en objecten

Nadere informatie

Secure Application Roles

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

Nadere informatie

Ontwerp van Informatiesystemen

Ontwerp van Informatiesystemen 1ste bach HIB Ontwerp van Informatiesystemen Prof. Verelst Q www.quickprinter.be uickprinter Koningstraat 13 2000 Antwerpen 112 2,50 Online samenvattingen kopen via www.quickprintershop.be Table of Contents

Nadere informatie

vbg.vbnet.beginner Foutafhandeling binnen Visual Basic.NET

vbg.vbnet.beginner Foutafhandeling binnen Visual Basic.NET Fouten in software zijn onwenselijk, maar bijna niet te voorkomen. Er zijna namelijk zaken waar uw software geen invloed op uit kan oefenen. Het verbreken van een netwerkverbinding is een voorbeeld hiervan.

Nadere informatie

Aan het eind van deze lesbrief wordt uitgelegd wat het nut van OOP is en vind je een aantal oefenopdrachten.

Aan het eind van deze lesbrief wordt uitgelegd wat het nut van OOP is en vind je een aantal oefenopdrachten. Doel van deze lesbrief Deze lesbrief is bedoeld om je op de hoogte te brengen van de basisbegrippen die gangbaar zijn bij object georiënteerd programmeren (OOP). In deze lesbrief kom je korte codefragmenten

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

Programmeren in Java les 3

Programmeren in Java les 3 4 september 2015 Deze les korte herhaling vorige week loops methodes Variabelen Soorten variabelen in Java: integer: een geheel getal, bijv. 1,2,3,4 float: een gebroken getal, bijv. 3.1415 double: een

Nadere informatie

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

2 Specificatie In deze tabel staat voor welk crebotraject de leereenheid is gemaakt Crebotraject code: 95311

2 Specificatie In deze tabel staat voor welk crebotraject de leereenheid is gemaakt Crebotraject code: 95311 LEEREENHEID PhP 2 Dit document bestaat uit twee onderdelen - Onderdeel Leereenheid - Onderdeel Onderwijsproduct 1 Naam leereenheid In deze tabel staat de naam en het type van de leereenheid Leereenheid

Nadere informatie

PHP & MySQL. Studievaardigheden 2013. Frank Takes ([email protected]) LIACS, Universiteit Leiden

PHP & MySQL. Studievaardigheden 2013. Frank Takes (ftakes@liacs.nl) LIACS, Universiteit Leiden PHP & MySQL Studievaardigheden 2013 Frank Takes ([email protected]) LIACS, Universiteit Leiden Inleiding Voorkennis: geen Stof: dit college, www.w3schools.com en www.php.net Opdracht: maak een uitgebreide*

Nadere informatie

HvA Instituut voor Interactieve Media ActionScript 3.0

HvA Instituut voor Interactieve Media ActionScript 3.0 PPRO 1: OEFENINGEN LES 1 Hierbij de werkgroepoefeningen behorend bij het practicum week 1. Lees de stukken uitleg aandachtig door, zonder deze informatie zullen de principes in de oefeningen moeilijk te

Nadere informatie

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

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

Nadere informatie

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 13 november 2015 Expressies Functies Ingebouwde functies Variabelenbereik Inleveropgave 1 Terugblik Programma is een lijst van opdrachten Terugblik Programma is

Nadere informatie

WCF claims-based authorization

WCF claims-based authorization WCF claims-based authorization In elk project waar ik tot nu toe aan heb meegewerkt is beveiliging altijd een belangrijk onderdeel gebleken. De vraag is vaak wat de meest geschikte manier van authenticeren

Nadere informatie

Hoe bouw ik een component? Drs. Arjan Burger

Hoe bouw ik een component? Drs. Arjan Burger Hoe bouw ik een component? Drs. Arjan Burger Zelf bouwen in Joomla! Veel standaard componenten aanwezig Zelf bouwen: meer mogelijkheden Maatwerk (redelijke tot grondige) PHP kennis vereist Meeliften op

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

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

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

In de tweede regel plaatsen we in het gereserveerde stukje geheugen een getal.

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

Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 6 november 2015, uur

Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 6 november 2015, uur Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 6 november 2015, 11.00-13.00 uur Schrijf op elk ingeleverd blad je naam. Schrijf op het eerste blad ook je studentnummer en het aantal ingeleverde

Nadere informatie

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

In deze query is 'alfki' een constante. Met deze query wordt telkens hetzelfde record uit de tabel Customers opgeroepen.

In deze query is 'alfki' een constante. Met deze query wordt telkens hetzelfde record uit de tabel Customers opgeroepen. Hoofdstuk 3 Query's met parameters Een parameter in een query is eigenlijk niets anders dan een soort variabele in een query die nog een waarde moet krijgen. De volgende query heeft bijvoorbeeld geen parameter:

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

OBJECT SPAGHETTI : PATTERNS BIEDEN UITKOMST? Wat is het probleem nou eigenlijk? public class CoffeeDrinker { private CoffeeProducer mycoffeeproducer;

OBJECT SPAGHETTI : PATTERNS BIEDEN UITKOMST? Wat is het probleem nou eigenlijk? public class CoffeeDrinker { private CoffeeProducer mycoffeeproducer; OBJECT SPAGHETTI : PATTERNS BIEDEN UITKOMST? Object georiënteerde (OO) systemen kennen vele voordelen ten opzichte van traditionele procedurele systemen. Zo zouden OO systemen flexibeler en beter onderhoudbaar

Nadere informatie