nr = 2; $p->gade = "Vestergade"; $p-> = print (" "); print_r($p); print(" "); © Mercantec 2014"> nr = 2; $p->gade = "Vestergade"; $p-> = print (" "); print_r($p); print(" "); © Mercantec 2014">

Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

Objecter Introduktion Webintegrator HF1 PHP Object orienteret.

Lignende præsentationer


Præsentationer af emnet: "Objecter Introduktion Webintegrator HF1 PHP Object orienteret."— Præsentationens transcript:

1 Objecter Introduktion Webintegrator HF1 PHP Object orienteret

2 Class I object orienteret programmering benytter vi os af begrebet klasser. En klasse beskriver hvad objektet indeholder. Vi har tidligere set på hvordan vi kunne gemme oplysninger om en person i et assosiativ array, her gør vi det samme blot vha en klasse i stedet. I beskrivelsen af klassen fortæller vi hvilke attributter klassen skal have, det svarer til de keys eller index vi kender fra arrayet. Derefter opretter vi $p som et object (en variabel) at typen Person, og sætter værdier ind. © Mercantec 2014 class Person { public $navn; public $gade; public $nr; public $email; } $p = new Person(); $p->navn = "Peter"; $p->nr = 2; $p->gade = "Vestergade"; $p->email = "peters@mail.dk"; print (" "); print_r($p); print(" ");

3 Attributter (Public og private) Attributter er de variable som klassen indeholder. Hvis vi vil beskytte vores attributter så de ikke kan ændres sker det ved at skrive private foran navnet. Se hvordan vi her har gjort email private, og bemærk fejlen i browser vinduet. class Person { public $navn; public $gade; public $nr; private $email; } $p = new Person(); $p->navn = "Peter"; $p->nr = 2; $p->gade = "Vestergade"; $p->email = "peters@mail.dk"; print (" "); print_r($p); print(" "); © Mercantec 2014

4 Constructor For alligevel at kunne bruge $email laver vi en konstruktør. Det er den funktion som hedder Person($email). Konstruktøren tager email som parameter og gemmer. Bag efter kan vi hente og anvende $email med funktionen getEmail(), men vi kan ikke få lov til at ændre den. class Person { public $navn; public $gade; public $nr; private $email; //Constructor function Person($email){ $this->email = $email; } function getEmail(){ return $this->email; } } //Kald til constructor $p = new Person("peters@mail.dk"); $p->navn = "Peter"; $p->nr = 2; $p->gade = "Vestergade"; print_r($p); © Mercantec 2014

5 Methods Attributterne på en klasse er de parametre som siger noget om objektet (navn, kundenr…), men en klasse kan også indeholde metoder (funtioner) der er noget klassen kan gøre. I eksemplet herunder har vi tilføjet metoden sayHello($n). class Person { public $navn; ….. //Constructor function Person($email){ $this->email = $email; } function getEmail(){ return $this->email; } function sayHello($n){ printf(" Hello %s my name is %s ",$n,$this->navn); } } //Kald til constructor $p = new Person("peters@mail.dk"); $p->navn = "Peter"; $p->nr = 2; $p->gade = "Vestergade"; $p->sayHello("Kurt"); © Mercantec 2014

6 Inheritance Når vi har lavet en klasse kan vi senere lave specialiseringer af klassen. I det viste tilfælde er klassen Person udvidet med klassen Ansat som har attributten $mdLoen og klassen Kunde som har attributten $kundeNr. Begge klasser arver $navn og metoden sayHello fra klassen Person. class Ansat extends Person{ public $mdLoen; function calcAarsLoen(){ return $this->mdLoen * 12; } } class Kunde extends Person{ public $kundeNr; } $a = new Ansat("peters@mail.dk"); $a->navn = "Peter"; $a->mdLoen = 25000; print $a->calcAarsLoen(); print $a->sayHello("Jens"); $k = new Kunde("kurts@mail.dk"); $k->navn = "Kurt"; $k->kundeNr = 123; print $k->sayHello($a->navn); © Mercantec 2014

7 Constructor overload For klassen Person var $email private, og skulle angives når vi kaldte klassens constructor. $p = new Person(”peters@mail.dk”); Hvis vi ønsker at klassen Ansat skal have $mdLoen Private så den ikke kan ændres, må vi blot tilføje en construktor til Ansat, som tager både $email og $mdLoen som parameter. $mdLoen gemmer construtoren selv, medens $email sendes vidre til constructoren for Person. class Ansat extends Person{ private $mdLoen; function Ansat($mail,$mdLoen){ $this->mdLoen = $mdLoen; $this->Person($mail); } function calcAarsLoen(){ return $this->mdLoen * 12; } } $a = new Ansat("peters@mail.dk",25000); $a->navn = "Peter"; print ($a->calcAarsLoen()); $a->sayHello("Jens"); print ($a->getEmail()); © Mercantec 2014

8 Relationer mellem klasser Klasser kan godt tage en anden klasse som attribut. I viste eksempel har vi lavet klassen Bil der har atributten $ejer. Inden vi opretter en bil laver vi Personen $p, der efter følgende sættes som ejer af bilen $b. class Bil { public $ejer; private $regnr; function Bil($regnr,$ejer){ $this->regnr = $regnr; $this->ejer = $ejer; } function visdata(){ printf(" Bil med registreringsnr: %s ",$this->regnr); printf(" Ejes af: %s ",$this->ejer->navn); } } $p = new Person("peter@mail.dk"); $p->navn = "Peter"; $b = new Bil("AA123456",$p); $b->visdata(); © Mercantec 2014

9 UML Med et UML klassediagram kan man illustrere sammenhæng imellem klasserne. Diagrammet herunder viser hvordan Ansat og Kunde arver fra Person, men også hvordan Bil har relationer til Person. © Mercantec 2014


Download ppt "Objecter Introduktion Webintegrator HF1 PHP Object orienteret."

Lignende præsentationer


Annoncer fra Google