Extra voorbeelden. 1 Objectenhierarchie. 2 Kalender

Maat: px
Weergave met pagina beginnen:

Download "Extra voorbeelden. 1 Objectenhierarchie. 2 Kalender"

Transcriptie

1 Extra voorbeelden 1 Objectenhierarchie 2 Kalender

2 PHP EN MYSQL de basis 1.1 Uitgebreid voorbeeld van een objectenhierarchie We zullen een aantal kenmerken van objectgeoriënteerd programmeren toelichten met behulp van een voorbeeld. Het voorbeeld gaat over de taxonomie van het dierenrijk, u vast wel bekend, over zoogdieren en vissen en zo. U moet er niet te veel achter zoeken, want als u zou proberen te veel details aan ons voorbeeld toe te voegen, dan zult u merken dat de principes van de zuivere objectoriëntatie u in de steek zullen laten. Hierbij eerst een plaatje: Afbeelding 1.1 Een objectenhierarchie De klasse Dier Zoals u aan het plaatje kunt zien, is Dier de klasse waarvan alle andere klassen worden afgeleid, dus daar beginnen we mee: 2

3 Extra voorbeelden <?php abstract class Dier { protected $kleur = 'onbekend'; public function getkleur() { return $this->kleur; public function kanlopen() { return 'Ik weet het niet'; public function kanzwemmen() { return 'Ik weet het niet'; public function kanvliegen() { return 'Ik weet het niet';?> We stippen een aantal punten aan: De klasse Dier is gedefinieerd als abstract. Dit betekent dat u er niet echt een object van kunt aanmaken. We kunnen alleen objecten maken van klassen die een echte soort aanduiden, zoals Meeuw en Kabeljauw. Natuurlijk hebben dieren meer eigenschappen dan hier genoemd, in het kader van het voorbeeld vragen we ons alleen af of een dier kan vliegen, zwemmen, of lopen en of het dier misschien een kleur heeft. De property $kleur is als protected gedefinieerd, dus we moeten een public methode maken om de kleur te kunnen laten zien. Dit is de methode getkleur(). Stel dat we toch zouden proberen om een Dier object te maken: $moppie = new Dier(); We krijgen dan een foutmelding bij het uitvoeren van een script met deze coderegel erin: Fatal error: Cannot instantiate abstract class Dier in C:\xampp\htdocs\debasis\hoofdstuk05\extra-voorbeeld-dieren\test1.php on line 5 3

4 PHP EN MYSQL de basis De abstracte klassen Vis, Zoogdier en Vogel We kunnen nog een paar abstracte klassen definiëren, voor Zoogdier, Vis en Vogel: abstract class Vis extends Dier { public function kanzwemmen() { return 'Ja'; abstract class Zoogdier extends Dier { public function kanlopen() { return 'Ja'; abstract class Vogel extends Dier { public function kanvliegen() { return 'Ja'; Concrete klassen Deze code zegt dat vissen kunnen zwemmen, zoogdieren kunnen lopen en vogels kunnen vliegen, maar verder weten we nog niet veel over deze diersoorten en we kunnen nog steeds geen objecten maken. We breiden ons script daarom uit met een echt dier: class Meeuw extends Vogel { public function construct(){ $this -> kleur = 'wit'; Let erop dat we eigenlijk niets over meeuwen zeggen, behalve dat ze wit van kleur zijn. Laten we eens kijken naar het gedrag en de eigenschappen van Karel, een meeuw, met de volgende code (hoofdstuk05/extra voorbeeld dieren/test2.php): <?php require_once 'dieren.php'; echo '<br/>'; $karel = new Meeuw(); echo 'Kan Karel, een ', get_class($karel), ', vliegen? '; echo $karel -> kanvliegen(); echo '<br/>'; echo 'Kan Karel lopen? '; 4

5 Extra voorbeelden echo $karel -> kanlopen(); echo '<br/>'; $kleur = $karel -> getkleur(); echo "Karels' kleur: $kleur <br/>";?> Als u dit script uitvoert, dan krijg u te zien: Kan Karel, een Meeuw, vliegen? Ja Kan Karel lopen? Ik weet het niet Karels' kleur: wit Laten we bekijken waarom u dit resultaat krijgt. We beginnen met de definities van de dierenklassen toegankelijk te maken in ons testscript door require_once 'dieren.php'; aan het begin van ons script te zetten. De methode kanvliegen() staat niet in de klasse Meeuw, maar alle meeuwobjecten hebben ook alle Vogel eigenschappen en daar is kanvliegen() wel gedefinieerd en dat geeft het antwoord Ja. Voor het antwoord op de volgende vraag, kanlopen(), moeten we nog een stap hoger kijken, naar de methoden die in de klasse Dier staan vermeld, want voor vogels staat deze methode niet vermeld. Voor dieren in het algemeen weten we niet of ze kunnen lopen, dus het antwoord is nu Ik weet het niet. En dan de kleur. $kleur is een protected property in de klasse Dier. Dat betekent dat deze property beschikbaar is in subklassen van Dier, maar niet buiten Dier. We kunnen dus niet schrijven: $karel->kleur. Daarom hebben we een methode gemaakt getkleur(), die wel de property $kleur kan benaderen in Dier en die publiek toegankelijk is. Ten slotte de methode get_class(). Deze methode is onderdeel van een serie methodes waarmee informatie over objecten en klassen verkregen kan worden. De get_class() methode heeft als parameter een object en hij geeft de naam van de klasse waartoe het object behoort terug, of FALSE als het geen object is. We hebben in de klasse Vogel gezegd dat een vogel object kan vliegen. Dat is leuk voor meeuwen, roodborstjes en zelfs futen, maar hoe zit dat met pinguïns? Een pinguïn is wel een vogel, maar hij kan niet vliegen. We kunnen dit tot uitdrukking brengen door de klasse Pinguin als volgt te definiëren: 5

6 PHP EN MYSQL de basis class Pinguin extends Vogel { public function kanzwemmen() { return 'Ja'; public function kanvliegen() { return 'Nee'; Nu kunnen we dingen over Happy Feet te weten komen: <?php require_once 'dieren.php'; $happyfeet = new Pinguin(); echo 'Kan Happy Feet, de ', get_class($happyfeet), ' vliegen? ', $happyfeet -> kanvliegen (); echo '<br/>'; echo 'Kan Happy Feet lopen? ', $happyfeet -> kanlopen();?> De antwoorden zijn: Kan Happy Feet, de Pinguin vliegen? Nee Kan Happy Feet lopen? Ik weet het niet OEFENING 1.1 BREID HET DIERENRIJK UIT Breid het dierenrijk uit met een paar zoogdieren, zoals Beer, Walvis, Mens. En een paar vissen, zoals Zalm, Kabeljauw. Maak een methode: kanpraten(). Bedenk dat mensen en papegaaien kunnen praten, maak ook een klasse voor Papegaai. Maak een methode vindlekker(), die als parameter een voedingsmiddel accepteert. Maak een paar voorbeelden zoals: $pooh->vindlekker ('honing'); Maak een script om informatie over de klasse Meeuw te weten te komen, zoals: welke methoden zijn er, welke property s en de klasse waar Meeuw van is afgeleid (de superklasse). Hint: begin met zoeken naar get_class in het PHP manual, u komt dan uit bij een sectie over Classes/Objects en van daaruit kunt u de methodes vinden die u nodig heeft. 6

7 Extra voorbeelden 2.1 Project: Kalender We hebben nu voldoende kennis om een interessant project aan te pakken. Wat gaan we doen? We maken een kalender die u ook kunt inzetten als agenda. De eerste versie zal alleen de huidige maand laten zien, of een maand naar keuze. Eventueel zou u er iedere maand een andere foto naast kunnen zetten, net als bij een kalender aan de muur. Later, in een volgend hoofdstuk, zullen we manieren bedenken om afspraakinformatie aan uw kalender toe te voegen en met een beetje extra CSS of JavaScript, en natuurlijk beveiliging, is het ook mogelijk uw agenda te raadplegen op uw smartphone. Als datumprikker is een PHP kalender minder geschikt. U kent ze vast wel: als u een vliegticket via het internet bestelt, dan ziet u vaak een keuzemenu waarmee u op een makkelijke manier de reisdata kunt kiezen. Voor dit doel zijn uitstekende JavaScript componenten beschikbaar. Alleen als u een site moet bedienen waar JavaScript onmogelijk is, zou kunnen overwegen het met PHP te doen Kalenderontwerp De kalender biedt weinig interactie met de gebruiker. Alleen de knoppen voor volgende en vorige maand betekenen dat er een verandering van het getoonde moet optreden. De eerste versie van de kalender/agenda is statisch. We tonen de kalender in een HTML tabel, met ruimte voor aantekeningen. We hebben de afgekorte namen van de dagen van de week nodig, die op de eerste rij worden getoond. We tonen de dagen van de maand in de cellen van de tabel. We moeten weten op welke dag de eerste van de maand valt. We moeten weten hoeveel dagen de getoonde maand heeft. Technisch detail: voor de flexibiliteit van de vormgeving met CSS en de nette afsluiting van de tabel, moeten we het aantal dagen te weten dat nodig is om de onderste rij vol te maken. Techniek: we gaan objecten gebruiken! NB U vindt de oefenbestanden bij deze paragraaf in de map \hoofdstuk06\kalender. 7

8 PHP EN MYSQL de basis Afbeelding 2.1 Het voorlopige eindproduct De klasse KalenderMaand Om de functionaliteit die bij een kalendermaand horen, bij elkaar te houden, definiëren we een klasse: KalenderMaand. Om te beginnen geven we de klasse twee eigenschappen: jaar en maand, en de methoden om deze te zetten of te laten zien. We willen onze klasse later uitbreiden en scripts maken om een en ander te testen, daarom maken we een map, kalender, met een submap, versie1. In deze submap maken we twee bestanden: kalendermaand.php en kalendermaandtest.php. Let op! De naam van de klasse KalenderMaand is geschreven in CamelCase, met twee hoofdletters dus, de K en de M. Dit is volgens de naamgevingsconventie die we in het vorige hoofdstuk hebben uitgelegd. De naam van het bestand kalendermaand.php is in kleine letters, waarbij de naam hetzelfde is als de naam van de klasse. Dit maakt het mogelijk om later van de zogenaamde autoload-functie gebruik te kunnen maken, die het overbodig zou moeten maken om de klassebestanden handmatig in te voegen met include() of require(). Ook dit hebben we in het vorige hoofdstuk besproken. 8

9 Extra voorbeelden We maken een klasse die alle functionaliteit over een bepaalde maand bij elkaar houdt. Om te beginnen zal een object van de klasse KalenderMaand het jaar en het maandnummer moeten weten. Het allersimpelste begin is dan zó: <?php class KalenderMaand { public $jaar; public $maand; public function construct($jaar = null, $maand = null) { if (isset($jaar) &&!isset($maand)) { throw new Exception('Als jaar is gegeven, dan moet ook maand gegeven worden.'); else { if (isset($jaar)) { $this->jaar = $jaar; $this->maand = $maand; // Blijkbaar is er niets gezet, zet het huidige jaar en maand. else { $this->jaar = idate('y'); $this->maand = idate('m'); public function tostring() { return 'KalenderMaand, jaar: '. $this->jaar. ' maand: '. $this->maand;?> We zien dat er twee properties zijn: $maand en $jaar en dat we deze, als we een object creëren, als parameter kunnen meegeven. In de methode contructor()worden de argumenten (die toevallig dezelfde naam hebben, om u in verwarring te brengen), aan de properties toegekend. Er zijn echter een paar mogelijkheden waar we op moeten testen: het zou kunnen dat er geen argumenten worden meegegeven en in dat geval willen we de huidige maand tonen. Verder zou het kunnen dat iemand wel een jaar maar geen maand meegeeft, in dat geval hebben we een probleem en daarom gooien we een exception, die we straks in het script dat een object probeert te maken weer moeten opvangen. OEFENING 2.1 MEER CHECKS IN DE CONSTRUCTOR Eigenlijk zouden we in de constructor ook moeten testen of er wel een geldig jaar- en maandnummer wordt meegegeven. Voor het jaarnummer zou dat binnen de grenzen 9

10 PHP EN MYSQL de basis voor een unix-timestamp moeten vallen (lees de opmerking hierover in manual/en/function.mktime.php) en voor het maandnummer, een nummer van 1 tot 12. Voeg deze code toe in de constructor-methode. Verder ziet u in de klassedefinitie van KalenderMaand een methode met de naam tostring(). Dit is een zogenaamde magische methode, wat u kunt zien aan de, net als construct() natuurlijk. Deze methode is handig om een stringrepresentatie van het object te kunnen laten zien. We zullen dit zo dadelijk in ons testscript gebruiken. De definitie van onze klasse KalenderMaand is nog verre van compleet, maar om niet door de bomen het bos niet meer te zien, laten we het hier even bij Een testscript voor de klasse KalenderMaand Om te kunnen zien of onze definitie tot zover klopt, maken we een testscript. Dit is een goede gewoonte in de programmeerwereld. We spreken meestal over een unittest, omdat we de test onderverdelen in kleine units en niet de hele toepassing tegelijk proberen te testen. <?php require_once 'kalendermaand.php'; echo "<pre>"; try { $kal = new KalenderMaand(); echo "Nieuwe KalenderMaand met nu: $kal\n"; $kal = new KalenderMaand(2012, 7); echo "Nieuwe KalenderMaand met 2010, 7: $kal\n"; $kal = new KalenderMaand(2009); echo "Nieuwe KalenderMaand met 2009: $kal\n"; catch (Exception $e) { echo 'Er is iets fout met het aanmaken van een KalenderMaand object: ', $e -> getmessage(), "\n"; echo "</pre>";?> De uitvoer van dit script is helemaal als verwacht: Tot zover loopt onze ontwikkeling prima, na een oefeningetje gaan we verder. Omdat we willen bewaren wat we tot nu toe gedaan hebben, maken we een nieuwe submap van de map kalender, en noemen hen versie2. Kopieer alle versie1 bestanden er naartoe. 10

11 Extra voorbeelden Nieuwe KalenderMaand met nu: KalenderMaand, jaar: 2011 maand: 12 Nieuwe KalenderMaand met 2010, 7: KalenderMaand, jaar: 2010 maand: 7 Nieuwe KalenderMaand met sept. 1944: KalenderMaand, jaar: 1944 maand: 9 Er is iets fout met het aanmaken van een KalenderMaand object: Als jaar is gegeven, dan moet ook maand gegeven worden. OEFENING 2.2 MEER TESTS IN HET TESTSCRIPT Probeer een ongeldige datum en kijk wat er gebeurt. Pas uw checks aan indien nodig De verkorte namen van de week De verkorte namen van de weekdagen staan als koppen boven de tabel. Om ze te maken kunnen we een array definiëren: $weekdag = array ('zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'); Als u zeker weet dat alleen Nederlands sprekende gebruikers naar uw kalender zullen kijken dan is dit goed genoeg. Maar natuurlijk willen we de mogelijkheid open houden om de locale te laten variëren en de kalender bruikbaar te maken voor andere talen. U zou het volgende kunnen doen: Met strftime() en de formaatstring %a kunt u de plaatselijke verkorte weekdagnaam vinden van de datum die u definieert. Begin op zondag, en dus een datum waarvan u zeker weet dat het een zondag is, 5 juni 2005 bijvoorbeeld. Maak een for lus die 7 keer telkens de volgende dag maakt, en de gevonden weekdagnaam in een volgend element van de array stopt. Plaats de code als methode in onze klasse KalenderMaand. protected function setweekdagen() { for ($i = 0; $i < 7; $i++) { $this -> weekdag[] = strftime("%a ", mktime(0, 0, 0, 6, $i + 5, 2005)); U ziet $this -> weekdag[]..., wat er op duidt dat we een nieuw property hebben gemaakt: protected $weekdag; We maken de methode protected, omdat we niet willen dat deze methode van buitenaf wordt aangeroepen. 11

12 PHP EN MYSQL de basis Omdat we de weekdagen maar één keer hoeven te vinden, voegen we een instructie toe aan het eind van de methode constructor(): $this- >setweekdagen(); OEFENING 2.4 PRINT DE VERKORTE WEEKDAGNAMEN Print de gevonden weekdagnamen netjes uit. Probleempje: u kunt van buitenaf niet bij de weekdagnamen. Maak als oplossing een publieke methode getweekdagen(); Bereken de eerste dag van de maand In ons object van het type KalenderMaand hebben we en jaarnummer en een maandnummer als properties staan. We kunnen mktime() gebruiken om een Unix tijdstempel te maken van de eerste dag van de huidige maand: $eerste = mktime(0, 0, 0, $maandnr, 1, $jaar); En we gebruiken weer idate(), nu het w -formaat, om het dagnummer van die eerste dag te vinden: $edag = idate('w', $eerste);[eind code] Bijvoorbeeld: in juni 2005 valt de eerste dag op een woensdag en zal $edag de waarde 3 bevatten. OEFENING 2.5 MAAK EEN METHODE EERSTEDAGINMAAND() Om de code in de klasse KelenderMaand overzichtelijk te houden is het handig om een methode te definiëren die het dagnummer van de eerste dag in de maand teruggeeft. protected function eerstedaginmaand() { //... return $edag; Vul de functie in. OEFENING 2.6 MAAK EEN METHODE DAGENINMAAND() De methode om het aantal dagen in een maand te berekenen lijkt erg op de functie eerstedaginmaand(). Maak deze methode. Mocht u problemen hebben met een van deze twee oefeningen, spiek dan in de online code, in versie 2 van de klasse KalenderMaand. 12

13 Extra voorbeelden De restdagen Hoeveel lege hokjes moeten we aan het begin en aan het eind van onze maandkalender maken om de rijen vol te maken? De berekening gaat zo: protected function restdagen($edag, $ldag) { $mm = ($edag + $ldag) % 7; if ($mm!= 0) $mm = 7 - $mm; return $mm; Wat hier staat is dat we het aantal lege hokjes aan het begin optellen bij het aantal dagen in de maand. (Het aantal lege hokjes aan het begin is evenveel als het gevonden dagnummer met de functie eerstedaginmaand(), zondag=0, maandag=1, et cetera) Dan berekenen we hoeveel we overhouden als we daar zo vaak als mogelijk 7 van aftrekken. Dit is de modulo operator %. Als de uitkomst 0 is dan zijn er geen resthokjes. Anders trekken we de uitkomst (in $mm) van 7 af en we hebben het gevraagde aantal. Ook dit stukje code plakken we als methode in onze KalenderMaandklasse. Voorbeeld: uit afbeelding 2.1 blijkt dat er 31 dagen zijn in december 2011 en dat 1 december op donderdag valt (dag 4). Dus: $mm = (4 + 31) % 7 = 35 % 7 = 0, want 5*7 is 35, dus er zijn geen restdagen aan het eind van deze maand. Aan afbeelding 2.1 te zien, klopt dit. OEFENING 2.7 VOEG DAGNUMMER TOE AAN DE KLASSE KALENDERMAAND Eigenlijk is het onhandig dat we het dagnummer niet weten als de maand waarvoor we een object van het type KalenderMaand maken, de huidige maand is. Doe er iets aan! 1 Maak een nieuw property voor dag. 2 Voeg een regel aan de constructor()-functie toe die het property zet (maar alleen als vandaag binnen de huidige maand valt). 3 Pas de functie tostring()aan We testen ons werk Laten we eens kijken of onze methoden goed werken. De methoden dagenin Maand(), eerstedaginmaand() en restdagen() zijn protected, we moeten dus een publieke methode maken om ons werk te laten zien: 13

14 PHP EN MYSQL de basis public function kalenderinfo() { $edag = $this -> eerstedaginmaand(); $ldag = $this -> dageninmaand(); $rest = $this-> restdagen($edag, $ldag); return "eerste dag: $edag, aantal dagen: $ldag, rest dagen: $rest "; Deze methode lijkt wel een beetje op de methode tostring()die we eerder gemaakt hebben, ik neem aan dat dit verder geen uitleg behoeft. En nu nog een testscript, dat we gewoon weer kalender-test1.php noemen: <?php require_once 'kalendermaand.php'; echo "<pre>"; try { $kal = new KalenderMaand(); catch (Exception $e) { echo 'Er is iets fout met het aanmaken van een KalenderMaandobject: ', $e -> getmessage(), "\n"; echo $kal, "<br/>"; echo $kal->kalenderinfo(), "<br/>";?> Voor 4 december 2011 krijgen we hieruit: KalenderMaand, jaar: 2011 maand: 12 dag: 4 eerste dag: 4, aantal dagen: 31, rest dagen: 0 Kijk maar op een kalender om te zien dat het klopt. Misschien verbaast het u dat zowel het dagnummer als de eerste dag een 4 is. Maar dat komt natuurlijk omdat 1 december in dat jaar op donderdag valt en donderdag de vijfde dag in de week is, waarbij zondag dag 0 is Een tabel met dagnummers We zijn nu klaar om de eigenlijke tabel te maken. We maken er meteen een methode in onze klasse Kalendermaand van. public function printmaand() { $edag = $this -> eerstedaginmaand(); $ldag = $this -> dageninmaand(); $rest = $this-> restdagen($edag, $ldag); 14

15 Extra voorbeelden echo "\n", '<table><tr>'; foreach ($this->weekdag as $dag) { echo "<td class='wday'>$dag</td>"; echo '</tr><tr>', "\n"; for ($i = 0; $i < ($edag + $ldag + $rest); $i++) { if ($i < $edag $i >= $edag + $ldag) echo '<td> </td>', "\n"; else { echo '<td>', $i - $edag + 1, '</td>', "\n"; if (($i + 1) % 7 == 0) echo '</tr><tr>', "\n"; echo '</tr></table>'; We beginnen met de berekening van de eerste dag, het aantal dagen en de restdagen. Daarna beginnen we met een HTML tabel, met als eerste rij de weekdagennamen in verkorte vorm, die we in onze property $weekdag hebben staan. In de tweede lus, een for lus, stappen we door het totaal van het eerste dagnummer, het aantal dagen en het aantal restdagen. Als het goed is, is dit een veelvoud van 7. 1 Print een leeg hokje als de lusteller kleiner is dan het eerste dagnummer (omdat zondag 0 is, gaat dit precies goed). 2 Print ook een leeg hokje (het of teken is ) als we het laatste dagnummer al hebben geprint en de lus teller dus groter of gelijk is aan de som van het eerste dagnummer en het aantal dagen. 3 Als we geen leeg hokje printen, dan printen we het dagnummer. De lusteller is bij het eerste cijferhokje al gelijk aan het dagnummer van de eerste van de maand, dus als we dat getal van de lusteller aftrekken dan staan we op 0. We moeten nu op 1 uitkomen, dus de formule is $i $edag Voorbeeld: de lusteller staat al op 3 als we bij de woensdag zijn aangekomen waarop 1 juni 2005 valt. Dat was dagnummer 3, omdat we bij zondag op 0 beginnen. Dus de formule is Na zeven hokjes sluiten we de rij af en beginnen aan de volgende. 6 Ten slotte sluiten we de laatste rij en de tabel af We testen ons werk We maken een nieuw testscript, kalender-test2.php en we maken ook een.cssbestand om de tabel er een beetje beter uit te laten zien. 15

16 PHP EN MYSQL de basis We beginnen met het testscript: <!DOCTYPE html> <html> <head> <title>php Kalender</title> <link rel="stylesheet" type="text/css" href="kalender.css" /> </head> <body> <div class="kalender"> <?php require_once 'kalendermaand.php'; try { $kal = new KalenderMaand(); echo "<h2>", $kal->printtitle(), "</h2>\n"; $kal -> printmaand(); catch (Exception $e) { echo 'Er is iets fout met het aanmaken van een Kalender- Maand object: ', $e -> getmessage(), "\n";?> </div> </body> </html> We hebben er nu een net HTML document van gemaakt. Dat stelt ons in staat een CSS bestand in te voegen, kalender.css. De eigenlijke PHP code is maar heel kort, alles wat kennis vereist over kalenders hebben we verstopt (Engles: encapsulated) in de klasse Kalendermaand en de vormgeving zit opgesloten in kalender.css. Ik neem aan dat er weinig uitleg nodig is voor dit script. Merk op dat de PHP code ergens middenin het HTML document begint. De CSS valt buiten het bestek van dit boek. Een opmerking: Er staat nergens in de CSS hoe breed de tabel cellen zijn. Dat ze toch netjes uit elkaar komen te staan is te danken aan de class="wday" toevoeging in de eerste regel met de weekdagen. Probeer maar eens in het CSS bestand.wday te veranderen in.wdayx om te zien wat er gebeurt. Als het goed is, is uw resultaat zoiets als afbeelding 2.1. OEFENING 2.8 HIGHLIGHT VANDAAG Print de huidige maand met daarin het dagnummer van vandaag in rood, of vet gedrukt. 16

17 Extra voorbeelden OEFENING 2.9 PRINT 12 MAANDEN VANAF NU Maak een for-lus die in twaalf stappen de twaalf maanden vanaf de huidige maand afdrukt. Check of de jaarovergangen en maandovergangen goed verlopen. 2.2 De klasse TableView Alles werkt nu zoals het hoort, maar de oplettende lezer heeft vast enkele tekortkomingen in onze klasse KalenderMaand ontdekt. Het geen goed gebruik om inhoud met vormgeving te mengen, zoals we gedaan hebben in de methode printmaand(). Stel dat we een agenda zouden willen maken met een meer ingewikkelde HTML structuur en grote hokjes waar tekst in kan staan. Stel dat we de kalender op de Nederlandse manier zouden willen printen, namelijk de weekdagen links onder elkaar en eventueel weeknummers bovenin. De HTML in onze tabel is nogal knullig. De eerste rij met weekdagnamen zou beter in <th> tags gevat kunnen worden en om de tabel te kunnen gebruiken voor dynamische vormgeving hebben we ook <thead>- en <tbody>-tags nodig. Om dit op te lossen ontkoppelen we de HTML van de klasse KalenderMaand en maken we een nieuwe klasse die we TableView dopen. Voordat we verder gaan, maken we een nieuwe map, versie3 en we kopiëren de bestanden uit versie2 hier naartoe. We besluiten tot een ontwerp van de klasse TableView als volgt: De klasse TableView heeft één argument, een associatieve array met elementen thead en tbody. Eventueel kunnen we dit later uitbreiden met een id en een class en misschien meer. De tabel header is een array met kolomnamen. De meest logische invoer voor de tabel body lijkt ons een tweedimensionaal array te zijn. Dit resulteert in de volgende code: <?php class TableView { protected $thead; protected $tbody; public function construct($table) { $this->thead = $table['thead']; $this->tbody = $table['tbody']; // hier komt de methode printtable 17

18 PHP EN MYSQL de basis?> Zoals u ziet gebeurt er in de constructor niets anders dan het uit elkaar halen van de array die als argument is meegekomen. public function printtable() { echo "\n", '<table><thead><tr>'; foreach ($this->thead as $colhead) { echo "<th>$colhead</th>"; echo '</tr></thead>', "\n"; echo '<tbody>', "\n"; foreach ($this->tbody as $row) { echo '<tr>', "\n"; foreach ($row as $field) { echo "<td>$field</td>"; echo '</tr>', "\n"; echo '</tbody></table>'; De methode printtable() is erg eenvoudig. In twee foreach() lussen worden eerst de header en daarna de rijen geprint. Voor iedere rij is er een derde foreach() lus die elk veld van de benodigde <td> tags voorziet. Misschien vindt u deze klasse ook nog vrij simpel; zoals gezegd, we zouden het mogelijk kunnen maken een id of een class toe te voegen. En we zouden wat kunnen doen aan het opvangen van fouten. Maar we hebben hiermee een zeer belangrijke loskoppeling gemaakt van de klasse KalenderMaand (hoewel we daar nog wel iets aan moeten doen). OEFENING 2.10 GEBRUIK DE TABLEVIEW Maak een array met een paar rijen en een header. Print hem uit met de TableView Wijzigingen aan de KalenderMaand klasse Nu we onze TableView hebben, moeten we de HTML die in de klasse Kalender Maand wordt gemaakt er weer uit slopen. We moeten een tabelstructuur bedenken die we aan kunnen bieden aan de TableView. We gaan dit in twee stappen doen: Maak een methode asarray(), die een array retourneert waarbij in de lege hokjes een lege string staat en in de andere hokjes het dagnummer. Maak een methode kalenderusstyle() die de dagen in rijen organiseert, zodat er een kalender uitkomt zoals gebruikelijk in Angelsaksische landen en zoals afgebeeld in afbeelding

19 Extra voorbeelden OEFENING 2.11 MAAK DE METHODEN ASARRAY() EN KALENDERUSSTYLE() Met alle uitleg die we al eerder hebben gegeven zou u deze methoden moeten kunnen maken. Maar spieken is toegestaan. Opmerking: ook een kleine aanpassing aan de CSS is gemaakt, zie het CSS bestand in de versie3 map. Natuurlijk hebben we nog een testscript nodig, we zullen niet het hele script laten zien, maar de belangrijkste regels: <?php require_once 'kalendermaand.php'; require_once 'tableview.php'; try { $kal = new KalenderMaand(); catch (Exception $e) { echo 'Er is iets fout met het aanmaken van een KalenderMaandobject: ', $e -> getmessage(), "\n"; exit ; echo "<h2>", $kal -> printtitle(), "</h2>\n"; $maandtab = $kal -> kalenderusstyle(); $table = new TableView($maandtab); $table -> printtable();?> De code zal u inmiddels bekend voorkomen. Overtuig u er nogmaals van dat de kalender er zo uit ziet als in afbeelding 2.1. OEFENING 2.12 MAAK DE METHODE KALENDERNLSTYLE() Deze oefening is niet zo makkelijk, omdat u de arrays moet samenstellen uit niet opeenvolgende elementen. En het zou leuk zijn als de weekdagennamen links worden getoond met enige highlighting. 19

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

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

Datatypes Een datatype is de sort van van een waarde van een variabele, veel gebruikte datatypes zijn: String, int, Bool, char en double.

Datatypes Een datatype is de sort van van een waarde van een variabele, veel gebruikte datatypes zijn: String, int, Bool, char en double. Algemeen C# Variabele Een variabele is een willekeurige waarde die word opgeslagen. Een variabele heeft altijd een datetype ( De soort waarde die een variabele bevat). Datatypes Een datatype is de sort

Nadere informatie

Javascript oefenblad 1

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

Nadere informatie

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

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

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

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

Je gaat leren programmeren en een spel bouwen met de programmeertaal Python. Websites zoals YouTube en Instagram zijn gebouwd met Python.

Je gaat leren programmeren en een spel bouwen met de programmeertaal Python. Websites zoals YouTube en Instagram zijn gebouwd met Python. 1 Je gaat leren programmeren en een spel bouwen met de programmeertaal Python. Websites zoals YouTube en Instagram zijn gebouwd met Python. Voordat je leert programmeren, moet je jouw pc zo instellen dat

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

Omschrijf bij ieder onderdeel van de methode de betekenis ervan. Java kent twee groepen van klassen die een GUI kunnen maken: awt en swing.

Omschrijf bij ieder onderdeel van de methode de betekenis ervan. Java kent twee groepen van klassen die een GUI kunnen maken: awt en swing. irkel (met Jpanel) ij de onderstaande opdracht behoort het bestand Panels: JPanels_1.java (map Panel) in de map irkel. pplicaties in Java hebben altijd een publieke klasse waarin een methode main voorkomt.

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

van PSD naar JavaScript

van PSD naar JavaScript 2015 van PSD naar JavaScript F. Vonk versie 2 19-9-2015 inhoudsopgave 1. inleiding... - 2-2. ontwikkelomgeving... - 3-3. programmeerconcepten... - 4 - statement... - 4 - sequentie... - 4 - variabele en

Nadere informatie

Het relaas van de beginnende programmeur. Het hoe en waarom van de assistent

Het relaas van de beginnende programmeur. Het hoe en waarom van de assistent Het relaas van de beginnende programmeur Het hoe en waarom van de assistent 1. Help, mijn code doet niks... Mogelijke oplossingen: Heb je op run geduwd (groene pijltje)? Zolang je niet op 'run' duwt, kent

Nadere informatie

Functies. Huub de Beer. Eindhoven, 4 juni 2011

Functies. Huub de Beer. Eindhoven, 4 juni 2011 Functies Huub de Beer Eindhoven, 4 juni 2011 Functies: je kent ze al Je hebt al verschillende PHP functies gebruikt: pi() om het getal π uit te rekenen. sin( 0.453 ) om het de sinus van het getal 0.453

Nadere informatie

A Inloggen. B - Wachtwoord Veranderen

A Inloggen. B - Wachtwoord Veranderen A Inloggen 1. Ga naar http://webtinq.nl 2. Klik op de knop "Login". 3. Voer het e-mail adres en wachtwoord in dat je hebt gekregen. 4. Klik op de knop "Login". 5. Je bent nu ingelogd! B - Wachtwoord Veranderen

Nadere informatie

DIAGNOSTISCHE TOETS Softwaresystemen UITWERKING

DIAGNOSTISCHE TOETS Softwaresystemen UITWERKING DIAGNOSTISCHE TOETS Softwaresystemen datum: Donderdag van Week 7 UITWERKING Deze diagnostische toets bevat vragen over excepties en concurrency. Beantwoord de vragen zo goed mogelijk in 30 minuten Bespreek

Nadere informatie

Vakgroep CW KAHO Sint-Lieven

Vakgroep CW KAHO Sint-Lieven Vakgroep CW KAHO Sint-Lieven Objecten Programmeren voor de Sport: Een inleiding tot JAVA objecten Wetenschapsweek 20 November 2012 Tony Wauters en Tim Vermeulen tony.wauters@kahosl.be en tim.vermeulen@kahosl.be

Nadere informatie

De tag aan het begin van het PHPscript is "<?php" aan het einde van het PHPscript gebruik je "?>".

De tag aan het begin van het PHPscript is <?php aan het einde van het PHPscript gebruik je ?>. PHP Les 3 Commando ECHO Interessante links: o http://www.donboscozwijnaarde.be/~moermant/ o http://php.net/manual/en/function.echo.php o http://www.w3schools.com/php/default.asp Wat is PHP? PHP is een

Nadere informatie

Inhoudsopgave Disclaimer... 3 Voorwoord... 4 Inleiding... 5 Het downloaden van XAMPP... 7 Het installeren van XAMPP... 8 Joomla installeren op

Inhoudsopgave Disclaimer... 3 Voorwoord... 4 Inleiding... 5 Het downloaden van XAMPP... 7 Het installeren van XAMPP... 8 Joomla installeren op 1 Inhoudsopgave Disclaimer... 3 Voorwoord... 4 Inleiding... 5 Het downloaden van XAMPP... 7 Het installeren van XAMPP.... 8 Joomla installeren op XAMPP... 15 Handige links... 16 2 Disclaimer Bij de samenstelling

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

Gebruikershandleiding voor: Beperkte Password protectie met JavaScript

Gebruikershandleiding voor: Beperkte Password protectie met JavaScript Gebruikershandleiding voor: Beperkte Password protectie met JavaScript URL: http://home.hccnet.nl/s.f.boukes/html-2/html-202.htm INHOUD : 1. Structuur van een beveiligde site 2. Login-formulier 3. Login

Nadere informatie

Foutcontrole met Javascript

Foutcontrole met Javascript Foutcontrole met Javascript Pol Van Dingenen Yannick Van Hauwe INLEIDING Het controleren van de gegevens die ingevuld zijn in formulieren is heel erg belangrijk. In de praktijk is enkel en alleen controle

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

Introductie en even voorstellen

Introductie en even voorstellen 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

Nadere informatie

Formulieren en waarden posten naar een view

Formulieren en waarden posten naar een view Hoofdstuk 4 Formulieren en waarden posten naar een view Waarden posten naar een view in een Zend-project gaat heel anders dan dat je gewend bent. Om dit mechanisme te leren, kunnen we het beste een eenvoudige

Nadere informatie

Test Joomla op je PC 1

Test Joomla op je PC 1 1 Disclaimer Bij de samenstelling van dit ebook is de grootst mogelijke zorg besteed aan de juistheid en correctheid van de informatie die in dit ebook wordt verstrekt. De auteur van dit ebook kan op geen

Nadere informatie

Les 7. Instap. CSS en views: schilderijen. Pas even de header aan van het thema en zorg ervoor dat er geen websitenaam en slogan te zien is.

Les 7. Instap. CSS en views: schilderijen. Pas even de header aan van het thema en zorg ervoor dat er geen websitenaam en slogan te zien is. Les 7 Instap Pas even de header aan van het thema en zorg ervoor dat er geen websitenaam en slogan te zien is. CSS en views: schilderijen Ons eerste overzicht in de vorige les bestond uit het tonen van

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

5. Functies. In deze module leert u:

5. Functies. In deze module leert u: 5. Functies In deze module leert u: - Wat functies zijn; - Functies uitvoeren; - De verschillende functies van Calc kennen. - Naar een ander werkblad verwijzen. U kunt eenvoudige berekeningen, zoals aftrekken,

Nadere informatie

Formulier maken en opvangen met php

Formulier maken en opvangen met php Welkom bij mijn PHP tutorial (Deel 2) Ik ga in deze delen PHP uitleggen, dit doe ik in het programma notepad++ (gratis) deze kunt u downloaden van www.richard3332.nl/downloads.php Als u beschikt over dreamweaver

Nadere informatie

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

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

Nadere informatie

NAAM: Programmeren 1 Examen 31/08/2011

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

Nadere informatie

Programmeren 1 20 januari 2012 Prof. T. Schrijvers

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

Nadere informatie

Je hoeft je maar met twee bestanden bezig te houden:

Je hoeft je maar met twee bestanden bezig te houden: 1 2 3 Deze set Sushi Kaarten leert je hoe je een web-app maakt met een nogte-doen lijst. Als je op enig moment wilt zien hoe de web-app kan worden, kijk dan op dojo.soy/js-todo. Deze app kun je gebruiken

Nadere informatie

A Inloggen. B - Wachtwoord Veranderen

A Inloggen. B - Wachtwoord Veranderen A Inloggen 1. Ga naar http://webtinq.nl 2. Klik op de knop "Login". 3. Voer het e-mail adres en wachtwoord in dat je hebt gekregen. 4. Klik op de knop "Login". 5. Je bent nu ingelogd! B - Wachtwoord Veranderen

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

Meehelpen met de ontwikkeling van nieuwe of verbetering van bestaande spellen. Pag. 1 www.edubas.nl

Meehelpen met de ontwikkeling van nieuwe of verbetering van bestaande spellen. Pag. 1 www.edubas.nl Meehelpen met de ontwikkeling van nieuwe of verbetering van bestaande spellen. Pag. 1 Versie 1.0 februari 2015 Start-versie Over dit document In dit document probeer is duidelijk te maken hoe de spellen

Nadere informatie

Les 9: formulier controle met javascript.

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

Nadere informatie

Stroomschema s maken op papier

Stroomschema s maken op papier 1 Stroomschema s maken op papier Een programma direct maken in Python, gaat vaak wel goed als het een klein programma is. Als het programma groter en moeilijker is, is het lastig om goed te zien welk commando

Nadere informatie

Disclaimer Het bestand dat voor u ligt, is nog in ontwikkeling. Op verzoek is deze versie digitaal gedeeld. Wij willen de lezer er dan ook op wijzen

Disclaimer Het bestand dat voor u ligt, is nog in ontwikkeling. Op verzoek is deze versie digitaal gedeeld. Wij willen de lezer er dan ook op wijzen Disclaimer Het bestand dat voor u ligt, is nog in ontwikkeling. Op verzoek is deze versie digitaal gedeeld. Wij willen de lezer er dan ook op wijzen dat er zowel typografische als inhoudelijke onvolkomenheden

Nadere informatie

PHP. Les 4 : Variabelen

PHP. Les 4 : Variabelen PHP Les 4 : Variabelen Interessante links: o http://www.dbzweb.be/moermant/ o http://php.net/manual/en/function.echo.php o http://www.w3schools.com/php/default.asp Wat zijn variabelen? Variabelen zijn

Nadere informatie

Formulieren maken met Dreamweaver CS 4/CS 5

Formulieren maken met Dreamweaver CS 4/CS 5 Formulieren maken met Dreamweaver CS 4/CS 5 In deze handleiding leer je om een formulier en elementen die je binnen een formulier kunt gebruiken, te ontwerpen met Dreamweaver. Het uitgangspunt is dat dit

Nadere informatie

Versie 0.4. Documentatie Onsweb Club plugin voor KNKV verenigingen. Laatste wijziging: 19 juli 2012 Auteurs: Marien Dongstra, Sebastian Huisman

Versie 0.4. Documentatie Onsweb Club plugin voor KNKV verenigingen. Laatste wijziging: 19 juli 2012 Auteurs: Marien Dongstra, Sebastian Huisman Documentatie Onsweb Club plugin voor KNKV verenigingen Versie 0.4 Laatste wijziging: 19 juli 2012 Auteurs: Marien Dongstra, Sebastian Huisman Alle rechten in dit document zijn voorbehouden. www.onsweb.nl,

Nadere informatie

Access voor beginners - hoofdstuk 25

Access voor beginners - hoofdstuk 25 Access voor beginners - hoofdstuk 25 Handleiding van Auteur: OctaFish Oktober 2014 Werken met Klassemodules Tot nu toe heb ik in de cursus Access veel gewerkt met formulieren, en met procedures en functies.

Nadere informatie

Hoofdstuk 1 Inleiding PHP 7 of ouder Hoe dit boek werkt 2

Hoofdstuk 1 Inleiding PHP 7 of ouder Hoe dit boek werkt 2 Inhoud Hoofdstuk 1 Inleiding 1 1.1 PHP 7 of ouder 2 1.2 Hoe dit boek werkt 2 Hoofdstuk 2 De programmeeromgeving 5 2.1 In dit hoofdstuk 5 2.2 Editor 5 2.3 Webserver op Linux, Mac of PC 5 2.4 De webmap 6

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

PHP-OPDRACHT SITE BOUWEN

PHP-OPDRACHT SITE BOUWEN PHP-OPDRACHT SITE BOUWEN PERIODE 4 LEERJAAR 1 Opleiding: Duur: Applicatieontwikkelaar 1 onderwijsperiode (4-8 weken) Voorkennis: Basiscursus PHP 5.4 Victor Peters (978 90 125 8499 9) Basiscursus XHTML,

Nadere informatie

JavaScript. 0 - Wat is JavaScript? JavaScript toevoegen

JavaScript. 0 - Wat is JavaScript? JavaScript toevoegen 0 - Wat is JavaScript? JavaScript is hele andere koek dan Scratch. Het wordt ook door professionele programmeurs gebruikt. Doordat er veel mensen gebruik maken van JavaScript is er veel informatie over

Nadere informatie

2.4.4 LibreOffice Werkblad Mac

2.4.4 LibreOffice Werkblad Mac 2.4.4 LibreOffice Werkblad Mac Deze cursus bestaat uit 4 delen. 1. Werkblad gebruiken voor berekeningen 2. Werkblad gebruiken voor het maken van lijsten 3. Werkblad gebruiken voor een (eenvoudige) boekhouding

Nadere informatie

Handleiding website FMS-spaarnwoude.nl

Handleiding website FMS-spaarnwoude.nl Handleiding website FMS-spaarnwoude.nl Alfred Houdijk Webmaster 27-12-2012 Inhoud Inleiding... 2 Wie kan wat op de website... 3 Foto s en filmpjes plaatsen... 4 Copyright... 4 Schrijf een artikel... 5

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

II. ZELFGEDEFINIEERDE FUNCTIES

II. ZELFGEDEFINIEERDE FUNCTIES II. ZELFGEDEFINIEERDE FUNCTIES In Excel bestaat reeds een uitgebreide reeks van functies zoals SOM, GEMIDDELDE, AFRONDEN, NU enz. Het is de bedoeling om functies aan deze lijst toe te voegen door in Visual

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

Simon de schildpad. 2015 J van Weert 1

Simon de schildpad. 2015 J van Weert 1 Programmeren met Simon Simon de schildpad 2015 J van Weert 1 Inleiding: Wat is programmeren eigenlijk? Een computer doet niets zonder een programma. Die programma s worden geschreven door mensen: programmeurs.

Nadere informatie

http://www.kidzlab.nl/index2.php?option=com_content&task=vi...

http://www.kidzlab.nl/index2.php?option=com_content&task=vi... Veelvlakken De perfecte vorm Plato was een grote denker in de tijd van de Oude Grieken. Hij was een van de eerste die de regelmatige veelvlakken heel bijzonder vond. Hij hield ervan omdat ze zulke mooie,

Nadere informatie

Hosting. Bestelformulier en domeinnaamcontrole. Januari, 2013. WeFact B.V. Kuiper 7a 5521 DG Eersel Nederland. w: www.wefact.nl e: helpdesk@wefact.

Hosting. Bestelformulier en domeinnaamcontrole. Januari, 2013. WeFact B.V. Kuiper 7a 5521 DG Eersel Nederland. w: www.wefact.nl e: helpdesk@wefact. Hosting Januari, 2013 Bestelformulier en domeinnaamcontrole WeFact B.V. Kuiper 7a 5521 DG Eersel Nederland w: www.wefact.nl e: helpdesk@wefact.nl Introductie Algemeen In deze handleiding wordt uitgelegd

Nadere informatie

Gebruiksvriendelijkheid: Gebruiksaanwijzing:

Gebruiksvriendelijkheid: Gebruiksaanwijzing: Gebruiksvriendelijkheid: Elon Education is een tool waarmee online woordjes geleerd kunnen worden voor de vreemde talen. Ook is het mogelijk om met Elon Education de tafels te oefenen, werkwoorden enz.

Nadere informatie

Modelleren en Programmeren

Modelleren en Programmeren Modelleren en Programmeren Jeroen Bransen 11 december 2015 Ingebouwde datastructuren Meer boomstructuren Access specifiers Gebruikersinvoer Codestijl Packages SAT-solver Ingebouwde datastructuren Ingebouwde

Nadere informatie

VAN HET PROGRAMMEREN. Inleiding

VAN HET PROGRAMMEREN. Inleiding OVERZICHT VAN HET PROGRAMMEREN Inleiding Als je leert programmeren lijkt het nogal overweldigend om die eerste stappen te doorworstelen. Er zijn dan ook heel wat programmeertalen (Java, Ruby, Python, Perl,

Nadere informatie

HANDLEIDING PROGRAMMEREN IN PASCAL (LAZARUS)

HANDLEIDING PROGRAMMEREN IN PASCAL (LAZARUS) HANDLEIDING PROGRAMMEREN IN PASCAL (LAZARUS) Vereiste voorkennis Voldoende kennis van het besturingssysteem (in deze handleiding wordt uitgegaan van Windows) De basisprincipes van programmeren Vereiste

Nadere informatie

Stroomschema s maken op papier

Stroomschema s maken op papier 1 Stroomschema s maken op papier Een programma direct maken in Scratch, gaat vaak wel goed als het een klein programma is. Als het programma groter en moeilijker is, is het lastig om goed te zien welk

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

Objective-C Basis. 23 april 2005, Eindhoven Patrick Machielse

Objective-C Basis. 23 april 2005, Eindhoven Patrick Machielse Objective-C Basis 23 april 2005, Eindhoven Patrick Machielse patrick@hieper.nl Algemeen // extensies Objective-C code in bestanden met.m extensie // commentaar moet! /* Alles hiertussen wordt genegeerd

Nadere informatie

Een spoedcursus python

Een spoedcursus python Een spoedcursus python Zoals je in de titel misschien al gezien hebt, geven wij een spoedcursus Python. Door deze cursus leer je alle basics, zoals het rekenen met Python en het gebruik van strings. Het

Nadere informatie

Stroomschema s maken in Word

Stroomschema s maken in Word 1 Stroomschema s maken in Word Een programma direct maken in Scratch gaat vaak wel goed als het een klein programma is. Als het programma groter en moeilijker is, is het lastig om goed te zien welk commando

Nadere informatie

Werken met afbeeldingen in webpagina's

Werken met afbeeldingen in webpagina's Werken met afbeeldingen in webpagina's In webpagina's komen heel vaak afbeeldingen voor. Toch gaan webpagina's helemaal anders om met afbeeldingen dan bijvoorbeeld een PowerPoint-presentatie of een Word-document.

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

Offerte s maken en aanmaken.

Offerte s maken en aanmaken. Offerte s maken en aanmaken. U gaat een nieuwe offerte maken en versturen via de mail. Start GA op. Calculatie (hier maken we de offerte s aan) Kozijn teken 1. Tekening maken. Nu geeft u een unieke code

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

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

Zonnepanelen Hoe krijg je de data op je website?

Zonnepanelen Hoe krijg je de data op je website? Zonnepanelen Hoe krijg je de data op je website? Beste website-bezoeker, Omdat ik al heel wat vragen kreeg over het gedeelte zonne-energie op mijn website, heb ik besloten om de werkwijze die ik gevolgd

Nadere informatie

Uw TEKSTEDITOR - alle iconen op een rij

Uw TEKSTEDITOR - alle iconen op een rij Uw TEKSTEDITOR - alle iconen op een rij Hieronder ziet u alle functionaliteiten van uw teksteditor onder elkaar ( op alfabetische volgorde). Afbeelding (zie foto) Bestanden (zie link) Broncode Citaat Documenten

Nadere informatie

REKENVAARDIGHEID BRUGKLAS

REKENVAARDIGHEID BRUGKLAS REKENVAARDIGHEID BRUGKLAS Schooljaar 008/009 Inhoud Uitleg bij het boekje Weektaak voor e week: optellen en aftrekken Weektaak voor e week: vermenigvuldigen Weektaak voor e week: delen en de staartdeling

Nadere informatie

Een ASP.NET applicatie opzetten. Beginsituatie:

Een ASP.NET applicatie opzetten. Beginsituatie: Hoofdstuk 1 Een ASP.NET applicatie opzetten Beginsituatie: Windows XP Pro, Windows Vista Pro of Windows 7 Pro Visual Studio.NET moet zijn geïnstalleerd. Let hierbij op dat de Express versie niet voldoet.

Nadere informatie

Interactief blok 2 code opdracht 6 - wireframe

Interactief blok 2 code opdracht 6 - wireframe Interactief blok 2 code opdracht 6 - wireframe 1. Klaarzetten bestanden Dit is een best practice voorbeeld. Maak een map aan voor je site. Hier komen alle bestanden in te staan (HTML, CSS en al je afbeeldingen).

Nadere informatie

Programmeerstructuren met App Inventor

Programmeerstructuren met App Inventor Programmeerstructuren met App Inventor Kevin Krul, Universiteit Utrecht Roncalli, Bergen op Zoom Inhoud: Les 1: Introductie tot App Inventor, when statement en variabelen. Les 2: Introductie if-statement

Nadere informatie

Variabelen en statements in ActionScript

Variabelen en statements in ActionScript Ontwikkelen van Apps voor ios en Android Variabelen en statements in ActionScript 6.1 Inleiding Als we het in de informatica over variabelen hebben, bedoelen we een stukje in het geheugen van de computer

Nadere informatie

WELKOM BIJ BOMBERBOT! LES 2: SEQUENTIES I LES 2: SEQUENTIES I WAAR GAAT DEZE LES OVER? INTRODUCTIE

WELKOM BIJ BOMBERBOT! LES 2: SEQUENTIES I LES 2: SEQUENTIES I WAAR GAAT DEZE LES OVER? INTRODUCTIE WELKOM BIJ BOMBERBOT! Bij onze lessen horen ook nog een online game, waarin de leerlingen de concepten die ze geleerd krijgen direct moeten toepassen, en een online platform, waarin u de voortgang van

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

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

Uitwerking Eerste deeltentamen Mobiel programmeren - versie 1 Vrijdag 23 december 2016, uur Uitwerking Eerste deeltentamen Mobiel programmeren - versie 1 Vrijdag 23 december 2016, 11.00-13.00 uur 1. Een klasse is niet: (a) het type van een object (b) een groepje methoden (c) een groepje variabelen

Nadere informatie

Inhoudsopgave... 1 Disclaimer... 3 Voorwoord... 3 Inleiding... 5 Het downloaden van XAMPP... 7 Het installeren van XAMPP... 8 Joomla installeren op

Inhoudsopgave... 1 Disclaimer... 3 Voorwoord... 3 Inleiding... 5 Het downloaden van XAMPP... 7 Het installeren van XAMPP... 8 Joomla installeren op 1 Inhoudsopgave... 1 Disclaimer... 3 Voorwoord... 3 Inleiding... 5 Het downloaden van XAMPP... 7 Het installeren van XAMPP... 8 Joomla installeren op XAMPP... 14 Handige links... 15 2 Disclaimer Bij de

Nadere informatie

Gegevens uit een database tonen

Gegevens uit een database tonen Gegevens uit een database tonen In een eerdere handleiding heb ik jullie laten zien hoe je met behulp van MySQL en phpmyadmin een database kunt opzetten. We hebben toen een database aangemaakt en gevuld

Nadere informatie

1 Delers 1. 3 Grootste gemene deler en kleinste gemene veelvoud 12

1 Delers 1. 3 Grootste gemene deler en kleinste gemene veelvoud 12 Katern 2 Getaltheorie Inhoudsopgave 1 Delers 1 2 Deelbaarheid door 2, 3, 5, 9 en 11 6 3 Grootste gemene deler en kleinste gemene veelvoud 12 1 Delers In Katern 1 heb je geleerd wat een deler van een getal

Nadere informatie

Jarno Verhoogt 21 mei 2014 Stud. Nr. 500684953 Docent: Joost Faber. Deeltoets 2: Hoe maak je met javascript een eenvoudige slideshow?

Jarno Verhoogt 21 mei 2014 Stud. Nr. 500684953 Docent: Joost Faber. Deeltoets 2: Hoe maak je met javascript een eenvoudige slideshow? Jarno Verhoogt 21 mei 2014 Stud. Nr. 500684953 Docent: Joost Faber Deeltoets 2: Hoe maak je met javascript een eenvoudige slideshow? Inleiding Dit is een eenvoudige handleiding om in javascript een simpele

Nadere informatie

Rapporten. Labels en Rapporten in Atlantis 1. Atlantis heeft twee manieren om output te genereren: 1. labels 2. rapporten (reports)

Rapporten. Labels en Rapporten in Atlantis 1. Atlantis heeft twee manieren om output te genereren: 1. labels 2. rapporten (reports) Labels en Rapporten in Atlantis 1 Atlantis heeft twee manieren om output te genereren: 1. labels 2. rapporten (reports) Rapporten Een rapport is eigenlijk altijd een tekst bestand, die vorm wordt gegeven

Nadere informatie

Een website maken met databasetoegang.

Een website maken met databasetoegang. Hoofdstuk 5 Een website maken met databasetoegang. In dit hoofdstuk gaan we het weblog dat je in hoofdstuk 4 hebt gemaakt verder uitbreiden. Een belangrijk onderdeel wordt toegevoegd aan de applicatie,

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

HTML in Outlook 2007. Hoe zorgt u ervoor dat uw email goed in beeld komt?

HTML in Outlook 2007. Hoe zorgt u ervoor dat uw email goed in beeld komt? HTML in Outlook 2007 Hoe zorgt u ervoor dat uw email goed in beeld komt? HTML in Outlook 2007 Inleiding Emark Mail biedt u de mogelijkheid om kant en klare HTML nieuwsbrieven in te laden en te versturen.

Nadere informatie

Een quiz plaatsen op je website

Een quiz plaatsen op je website Een quiz plaatsen op je website Om de deelnemers een beetje na te laten denken kan je een quiz toevoegen op je site. Dat doe je op de volgende manier: a. Een quiz aanmaken Ga naar je eigen pagina en klik

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

Leaflet Web Maps with qgis2leaf

Leaflet Web Maps with qgis2leaf Leaflet Web Maps with qgis2leaf QGIS Tutorials and Tips Author Ujaval Gandhi http://google.com/+ujavalgandhi Translations by Dick Groskamp This work is licensed under a Creative Commons Attribution 4.0

Nadere informatie

Handleiding Wordpress

Handleiding Wordpress Handleiding Wordpress Inhoudsopgave 1. Inloggen 2. Berichten en Pagina s 3. Afbeeldingen en video s 4. Weblinks 1. Inloggen 1.1 Inloggen bij Wordpress We starten met het inloggen op je WordPress gebaseerde

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

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

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

Beginselen van programmeren Practicum 1 (Doolhof) : Oplossing

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,

Nadere informatie

Informatietechnologie 2. JavaScript. Functies, Objecten en toegang tot de DOM. Kristof Michiels

Informatietechnologie 2. JavaScript. Functies, Objecten en toegang tot de DOM. Kristof Michiels Informatietechnologie 2 JavaScript Functies, Objecten en toegang tot de DOM Kristof Michiels In deze presentatie Functies Objecten Toegang tot de DOM: basis 2 / 32 Functies Wat zijn functies? Kort gezegd

Nadere informatie

15. Google Tag Manager

15. Google Tag Manager W H I T E P A P E R I N 5 M I N U T E N J U N I 2 0 1 5 15. Google Tag Manager Introductie Marketeers zijn dol op statistieken en big data. Hoe meer hoe beter! Google Analytics wordt hier veel voor gebruikt,

Nadere informatie