‘Inleiding objectgeoriënteerd programmeren met PHP’ ‘Inleiding’

Slides:



Advertisements
Verwante presentaties
KINN 2010 •OOP •O Object •O Georiënteerd •P Programmeren.
Advertisements

OOS Object geOrienteerd Software-ontwerp - 3
EVMINX4 Week 3 Algoritmen en Datastructuren (ALDAT)
Instructie Programmeren Task 8 5JJ70. PAGE 2 Task 8: Double Linked List Het doel van deze opdracht is: Het opbouwen van een tweetal klassen, die samen.
Van domeinklasse tot implementatie
Het ontwerpen van een klasse
Objecten Hoofdstuk 6 Hoofdstuk 6 Hoofdstuk 6 1.
Klassen en objecten.
Greenfoot Workshop Bobby - Snake.
Hoofdstuk 6: Controle structuren
Hoofdstuk 2 Hallo, C# !.
‘Inleiding programmeren in Java’ Derde college Maandag 22 januari 2001 drs. F. de Vries.
Inleidend probleem Data structuur (hiërarchie van classes)
PHP functies.
Consoletoepassing Variabelen Klassen
Introductie Groepsleden: - Peter Davids - René Zuidhof - Fokko Bronsema - Nick ter Horst.
Algoritmiek Object-georiënteerd Programmeren
1 Datastructuren Introductie tot de programmeeropgaven in C++ Jan van Rijn
P. 1 Vakgroep Informatietechnologie Structuur Deel II C++ Classes Namespaces Type casting Reference types Constructors en Destructors Memory Management.
LauwersCollege Buitenpost Java Applet programma dat op een website zichtbaar is Java Application programma dat zelfstandig werkt Javascript Scripttaal.
OOS Object geOrienteerd Software-ontwerp - 2
Herhaling Java-programmatie en geautomatiseerd testen (vervolg)
Visual Basic 2005/2008 OOP in praktijk André Obelink - MCSD, MVP Web: Web: -
KINN 2010 OOP O Object O Georiënteerd P Programmeren.
PHP & MYSQL LES 02 PHP & FORMULIEREN. PHP & MYSQL 01 PHP BASICS 02 PHP & FORMULIEREN 03 PHP & DATABASES 04 CMS: BEST PRACTICE.
PHP & MYSQL LES 01 PHP BASICS. PHP & MYSQL 01 PHP BASICS 02 PHP & FORMULIEREN 03 PHP & DATABASES 04 CMS: BEST PRACTICE.
Programmeerstijl Hoofdstuk 21. Visual Basic.NET voor studenten2 Inleiding Belang van een goede programmeerstijl:  Programma’s worden door meerdere mensen.
Objectgeoriënteerd Ontwerp
Hoorcollege 14 Vijanden, excepties. Overzicht programmaconstructies Opdrachten Toekenning Aanroep void-methode return-opdracht while-opdracht for(each)-opdracht.
Interfaces Hoofdstuk 23 Hoofdstuk 23.
OO: de echte wereld modelleren. De intro Over de workshop Introductie tot OOP – in PHP. Uitgebreide uitleg basisprincipes van OO. 2,5 uur is te lang.
Animatie nAnimatie: “tekenfilm” programma toont automatisch veranderende beelden nGemakkelijk te programmeren met gebruik van de klasse Thread “draadje”
Refactoring en Unit Testing. Geschiedenis Hoe maken we complexe code duidelijker? Hoger abstractieniveau –Assembly –“Hogere” programmeertalen –Object-orientatie.
Hoofdstuk 11.3 Algoritmen: Zoeken in een netwerk.
Tircms03-p les 4 Klassen. Abstracte datatypes in C struct stack { char info[100]; int top; }; void reset(stack *s) { s->top = -1; } void push(stack *s,
Hoofdstuk 14.1 Algoritmen: Zoeken in een netwerk.
Java Objectgeoriënteerd Programmeren in Java met BlueJ
Java Objectgeoriënteerd Programmeren in Java met BlueJ Hoofdstuk 7 Polymorfie en overerving © 2014, Gertjan Laan, versie 2.
Studiehouding Ergens verstand van krijgen kost tijd… Uren die je alleen in je boeken doorbrengt maken het verschil. Er is niets mis met onafhankelijkheid.
 C++ heeft een inheritance mechanisme  Manier om functionaliteit te ‘erfen’ van een parrent class ◦ Polymorphisme ◦ Zoals we het ook in C# kennen.
CSS Cascading Style Sheets. CSS code HTML – Welke elementen op een pagina – Stuk code zegt iets over één element CSS – Hoe zien de elementen er precies.
Soorten programma’s nConsole- applicatie. Soorten programma’s nConsole- applicatie nWindows- applicatie.
Java voor beginners Doel: Een spel maken in LWJGL Door: Jim van Leeuwen.
De definitie van een object. Een object is een verzameling van eigenschappen en bewerkingen. Veel voorkomende objecten zijn: D (display) Gui (user interface)
Objectgeoriënteerd Programmeren (2)
Objectgeoriënteerd Programmeren
Gameprogrammeren: Objecten en geheugen
Gameprogrammeren: Lists en interfaces
Gameprogrammeren: Overerving
Hoofdstuk 9.2 Strings.
Object georiënteerd programmeren
Gameprogrammeren: Methoden
Gameprogrammeren: Overerving in Painter
Gameprogrammeren: Afsluiting
Gameprogrammeren: Properties
OOS Object geOrienteerd Software-ontwerp - 5
Gameprogrammeren: Game Basics
Voorbeeld: Simulatie van bewegende deeltjes
Gameprogrammeren: Abstracte klassen
Gameprogrammeren: Interfaces
Gameprogrammeren: Tiles en File I/O in Tick Tick
Unified Modeling Language
Gameprogrammeren: Klassen en objecten
Arjan Egges & Paul Bergervoet
Software Development fundamentals
Software Development fundamentals
Software Development fundamentals
Software Development fundamentals
Software Development fundamentals
Python – For loop + strings
Transcript van de presentatie:

‘Inleiding objectgeoriënteerd programmeren met PHP’ ‘Inleiding’ Live webcollege ‘Inleiding objectgeoriënteerd programmeren met PHP’ ‘Inleiding’ 1 1

Welkom 2 2

Programma Adobe Connect Afsluiting Programma Adobe Connect Vragen en antwoorden-venster Stel hier je technische vragen en inhoudelijke vragen aan de docent. Chatvenster Praat hier met de andere deelnemers. Statusicoon Reageer hiermee op stellingen en vragen van de docent. Opties statusicoon.

Wie ben ik? Peter Anema Achtergrond: TU Delft, 30 jaar werkzaam in de medische IT en al 40 jaar aan het programmeren. Docent bij LOI klassikaal, m.n. IT ontwerpen en programmeren. 4 4

Opbouw live webcollege Onderdeel 1 – Best practices Vragenblok onderdeel 1 Onderdeel 2 – OOP Vragenblok onderdeel 2 Onderdeel 3 – Design patterns Vragenblok onderdeel 3 3 x 10 tot 15 minuten 5 5

Wie herkent zich hierin? De code achter mijn pagina's is in de loop van de tijd gegroeid tot honderden regels. 6 6

Onderdeel 1 - Best practices Er is niet één best practice, maar wees consistent. 7 7

Codeer volgens een standaard Framework Interop Group PSR-1 – Basic Coding Standard. PSR-2 – Coding Style Guide. PSR-4 – Autoloader. 8 8

Naamgeving Naamgeving in CamelCase. Variabelen en methoden beginnen met een kleine letter. Klassen beginnen met een hoofdletter. <?php class Persoon { // Properties private $naam; // Methods public function vertelOverJezelf() { print "Ik ben " . $this->naam; } 9 9

Indenting en brackets Vier spaties inspringen voor ieder code block. Brackets op nieuwe regel bij class en function. Brackets aan eind van de regel bij control statements. <?php function printEvenGetallen() { for ($i = 0; $i < 10; $i++) { if ($i % 2 == 0) { print i; } 10 10

Files Iedere klasse gaat in een file. persoon.php 11 11 <?php class Persoon { // Properties private $naam; // Methods public function vertelOverJezelf() print "Ik ben " . $this->naam; } <?php require_once('persoon.php'); 11 11

Visibility Specificeer altijd de visibility. Private Public Protected <?php class Persoon { // Properties private $naam; // Methods public function vertelOverJezelf() print "Ik ben " . $this->naam; } Private Public Protected 12 12

Commentaar // inline comments /* */ block comments /** */ DocBlock Niet te weinig Niet te veel Toegevoegde waarde Refactor <?php /** * Dit is een DocBlock voor de * functie vertelOverJezelf * * @param string $naam Jouw naam * @return string */ function vertelOverJezelf($naam) { // Concatenate greeting and name return "Ik ben " . $naam; } 13 13

Dan HTML met minimale PHP. PHP en HTML <?php $content = doSomething(); // complex calculations ?> <!DOCTYPE HTML> <html> <title>Demo</Title> <body> <?php echo $content; ?> <div id="some_div">Content</div> </body> </html> PHP-code eerst. Dan HTML met minimale PHP. 14 14

Vragen? 15 15

Scheiden van verantwoordelijkheden Blok 2 – Object-oriented programming (OOP) Scheiden van verantwoordelijkheden Deel 1 Deel 2 Deel 4 Deel 3 16 16

Klasse Naam Eigenschappen & methodes Naam Properties Methods 17 17

Klasse als blauwdruk 18 18 Persoon naam geslacht geboortedatum opleiding vertelOverJezelf() public vertelOverJezelf() { print "Ik ben " . $this->naam; } 18 18

Objecten instantiëren Ik ben Sly Ik ben Guido Ik ben Liberty 19 19

In PHP 20 20 <?php class Persoon { // Properties private $naam; private $geslacht; private $geboortedatum; private $opleiding; // Constructor public __construct($naam) { $this->naam = $naam; } // Methods public vertelOverJezelf() { print "Ik ben " . $this->naam; <?php // Instantiation $persoon1 = new Persoon("Guido"); $persoon2 = new Persoon("Sly"); $persoon3 = new Persoon("Liberty"); // Invoke methodes $persoon1->vertelOverJezelf(); $persoon2->vertelOverJezelf(); $persoon3->vertelOverJezelf(); Ik ben Guido Ik ben Sly Ik ben Liberty 20 20

Kaartspel poker 21 21

Kaartspel poker PokerHand Hand Kaart Dek 22 22

Klassen – Kaartspel poker Dek Hand PokerHand Kleur Rang Kaarten Kaarten Hand Deel Schud VoegKaartenToe BesteCombinatie 23 23

UML – Kaartspel poker 24 24

Vragen? 25 25

Onderdeel 3 – Design patterns Code smell & anti-patterns repeating yourself  DRY switch $type  inheritance magic numbers  CONSTANTS God object  Refactor Accidental complexity  KISS

Wie heeft zoiets weleens gedaan? 27 27

Factory pattern 28 28 /* Car */ abstract class Car { public abstract function getType(); } class Sedan extends Car { public function getType() { return 'Sedan'; /* Factory */ interface CarFactory { public function makeCar(); class SedanFactory implements CarFactory { public function makeCar() { return new Sedan(); $factory = new SedanFactory(); $car = $factory->makeCar(); print $car->getType(); 28 28

Observer pattern abonneren op veranderingen 29 29

Iterator pattern Vaak zijn classes een vorm van collectie. Met een iterator pattern kun je deze classes gebruiken in foreach. Door het implementeren van enkele methoden: next() en hasNext() 30 30

Vragen? 31 31

Evaluatie Eerst enkele enquêtevragen en dan ontvangt u nog een extraatje.

Afronding Cheat sheet ‘Van scripting naar object-oriented programming met PHP’. 33 33