1 / 32

DWA 2

DWA 2. Lesson 02. Izvori na webu. http://www.php.net/manual/en/oop5.intro.php. OOP u PHP-u. Klase i objekti Svojstva klase (varijable) Konstruktori i destruktori Metode klase (funkcije) Sučelja Iteratori Naslijeđivanje i nadjačavanje Ostali buzzword -i. 1. Klase i objekti.

lora
Download Presentation

DWA 2

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. DWA 2 Lesson 02

  2. Izvori na webu • http://www.php.net/manual/en/oop5.intro.php

  3. OOP u PHP-u • Klase i objekti • Svojstva klase (varijable) • Konstruktori i destruktori • Metode klase (funkcije) • Sučelja • Iteratori • Naslijeđivanje i nadjačavanje • Ostali buzzword-i

  4. 1. Klase i objekti • Klasa - softverski entitet (program, skript) koji definira strukture podataka i procese koji se izvode sa podacima zadanih struktura (oblika). Načelno govoreći, klase ne sadrže podatke, nego definiraju njihove oblike. Isto tako, klase ne izvode procese obrade podataka, nego te procese definiraju.

  5. 1. Klase i objekti • Objekt - Objekt je jedna "kopija klase" (instanca) u koju su uvršteni konkretni podaci na kojima se izvode procesi koji su definirani u pripadnoj klasi. Iz jedne klase može se kreirati mnogo objekata ("kopija") te klase, pri čemu se u svaki od tih objekata uvrštavaju konkretni podaci koji se onda obrađuju. Temeljna odlika objektnog programiranja je upravo to, da se strukture podataka i procesi definiraju kao "apstraktne (prazne) forme" iz kojih se onda prave "kopije" (objekti, instance) u koje se uvrštavaju podaci sa kojima se onda izvode procesi.

  6. 1. Klase i objekti • Deklaracija klase class Student { // varijable (atributi) // [kontruktor] [destruktor] – nisu obavezni // metode (funkcije) }

  7. 2. Svojstva klase (varijable) • Instanca (instanciranje?) -> stvaranje objekta • Primjer: imamo popis studenata u bazi. Imamo klasu Student koja omogućava operacije sa studentima (upis novih, promjenu osobnih podataka, prebacivanje smjerova......) $student = new Student(‘18574’); // dajemo broj indeksa, konstruktor dobiva broj, izvlači podatke iz baze i popunjava varijable (atribute), nakon čega je objekt spreman za operacije (metode) $student = new Student; // instanca bez pozivanja konstruktora

  8. Vježba • Napišite deklaraciju klase Student i sa svim atributima (varijablama) potrebnim za tu klasu (po vašem mišljenju) • Napišite deklaraciju neke druge klase po želji – u nastavku poglavlja ćemo paralelno popunjavati obje klase dok ne dobijemo potpune deklaracije klasa Student i ove klase

  9. 2. Svojstva klase (varijable) • Varijable ( [final] class Student() { public $broj_indeksa; private $ime; protected $prezime; var $neeee; // deprecated – throws error!!! }

  10. 2. Svojstva klase (varijable) • Varijable • public – dostupna i izvan klase (u glavnom...) • protected – dostupna samo unutar klase i unutar klasa koje nasljeđuju ovu klasu • private – dostupna samo unutar klase • static – varijable sa zadanim vrijednostima class settings { static $login=“ijugo”; } echo settings::$login; // bez izrade objekta !!! • const const login=‘ijugo’; echo settings:login;

  11. Vježba • dopunite deklaraciju klasa izmjenom tipova atributa (prema vašem mišljenju)

  12. 3.Konstruktori i destruktori • Konstruktor class Student() { function __construct($indeks) // ili function Student() { // pristup bazi, popunjavanje varijabli $this -> broj_indeksa = $indeks; } }

  13. 3.Konstruktori i destruktori • Destruktor class Student { function __destruct() { // čišćenje, zatvaranje veze na bazu,.... } }

  14. Vježba • napišite konstruktore i destruktore klasa koristeći pseudokod (pišite iza znakova //) prema pretpostavci da podatke vadimo iz baze podataka

  15. 4. Metode klase (funkcije) • Metode (funkcije) klase class Student { public function smjer() {} static function godina() {} protected function pao() {} private function prosao() {} final function nenadjačiva() {} }

  16. 4. Metode klase (funkcije) class Student { void function ispisOsnovnihPodataka() { // konstruktor je već dohvatio podatke iz baze i postavio varijable echo $this->ime, ‘, ‘, $this->prezime, ‘, ‘, $this->smjer, ‘, ‘, $this->godina; } } • u okrugle zagrade funkcije možemo ubaciti “Student $obj” što će još podići sigurnost aplikacije jer će funkcija prihvaćati samo objekte tipa Student

  17. Vježba • Napišite deklaracije potrebnih metoda za obje klase koristeći se pseudokodom

  18. 5. Sučelja (interfaces) • Sučelje definira koje metode neka klasa mora deklarirati • Na taj se način programer je siguran da neka klasa ima definirane te metode i da ih može pozvati iz svog koda... • Sučeljima se u biti definira API odnosno osigurava da ga sve klase koje ga implementiraju – podržavaju • Ovo moramo promatrati u kontekstu velikog projekta sa stotinama klasa i programera!

  19. 5. Sučelja (interfaces) • Deklaracija Interface ProvjeraUnosa { public function enkodiraj($unos); public function dekodiraj($unos); } • NE TIJELO METODE SAMO NAZIVE!

  20. 5. Sučelja (interfaces) • Implementacija class Sigurnost Implements ProvjeraUnosa [, sučelje2, sučelje3,...., sučeljeN] { public function encode($unos) { return htmlentities($unos); } public function decode($unos) { return html_entity_decode($unos); } }

  21. Vježba • definirajte jedno sučelje koje će implementirati obje klase • doradite obje klase tako da sučelje bude ispravno implementirano

  22. 6. Iteratori • Klasa može IMPLEMENTIRATI Iterator sučelje kako bi jednostavno omogućila prolaz kroz skup zapisa • Npr. retke tekstualne datoteke ili zapise u recordset objektu iz baze podataka

  23. 6. Iteratori • Klasa mora: • Implementirati Iterator sučelje • Deklarirati metode: • rewind • current • key • next • valid

  24. 6. Iteratori class Datoteka Implements Iterator { // sve navedene metode + konstruktor+varij. } Primjena (u nekoj PHP datoteci): <?php require(‘classes/Datoteka.inc.php’); foreach (new Datoteka(‘ijugo/zapisi.txt’) as $k=> $v) { echo "{$k} {$v}"; } ?>

  25. Vježba • Napravite ispravnu deklaraciju nove klase za ispis podataka iz datoteke koja implementira Iterator • Isto – ali sa bazom podataka

  26. 7. Nasljeđivanje i nadjačavanje • neka klasa može biti (u dijagramu ili nacrtu aplikacije) podklasa neke općenitije klase • pri prevođenju modela u kod podklase se implementiraju nasljeđivanjem • preciznije – korištenjem riječi extends • klase se proširuju/nasljeđuju, a metode se nadjačavaju

  27. 7. Nasljeđivanje i nadjačavanje • podklasa nasljeđuje sva svojstva nadklase, ali može definirati nova ili redefirati stara (osim ako su ...... što?) • ako se u podklasi ponovno deklarira metoda sa istim imenom kakvo je u nadklasi dolazi do nadjačavanja metode • obje metode će raditi, ali će nadjačana metoda davati drugačiji rezultat (ako joj je tako izmjenjen kod....)

  28. 7. Nasljeđivanje i nadjačavanje • Nasljeđivanje klasa class Student { // var., metode, konst., dest,.... } class StariStudent extends Student { ..... } class Doktorand extends Student { ..... } class Specijalist extends Student { .... } ....

  29. 7. Nasljeđivanje i nadjačavanje • Nadjačavanje metoda class Doktorand extends Student { function IspisOsnovnihPodataka() { echo $this->ime, ‘, ‘, $this->prezime, ‘, ‘, $this->mentor, ‘, ‘, $this->tema; } }

  30. Vježba • Napravite deklaraciju nadklase ili podklase za obje klase koje smo napravili na početku • Isprobajte nadjačavanje metode • Izmjenite deklaraciju nadklase tako da onemogućite pokušaj nadjačavanja • ...

  31. 8. Ostali buzzword-i • ENKAPSULACIJA – jedna od glavnih prednosti OO pristupa – grupiranje funkcionalnosti (operacija) i povezanih podataka (atributa, varijabli) u čovjeku blizak i razumljiv koncept OBJEKTA (klase) • Klase su u biti korisnički definirani tipovi podataka (poznato iz brojnih prog. jezika,samo na steroidima ) • Druga osnovna ideja je – REUSABILITY – jednom napisan skup klasa za rad sa BP ili registraciju/prijavu/odjavu korisnika koristiti ćete za sve svoje projekte čime se štedi vrijeme (novac) i smanjuje mogućnost grešaka u kodu • kad po peti puta programiraš metode za registraciju, login i logout shvatiš poantu.... :-(

  32. 8. Ostali buzzword-i • DATA HIDING – public, private, protected, final, abstract omogućuju zaštitu podataka od slučajnog ili namjernog pokušaja čitanja ili mijenjanja... • MAINTAINABILITY – održavanje koda je komplicirano, pogotovo kod velikih projekata, sa velikim brojem pomoćnih funkcija, klase mogu podijeliti veliki broj pomoćnih funkcija na mali broj objekata

More Related