PHP: OOP (Objektno Orjentirano Programiranje)

poruka: 4
|
čitano: 14.764
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
16 godina
neaktivan
offline
PHP: OOP (1. Uvod)

Prvo da razjasnim zašto uopće pišem ove tutorijale.
Razlog je jednostavan. Koliko god bilo linkova na forumu, većina je na engleskom pa sam htio olakšati onima kojima engleski nije najdraži jezik.

Neću se baviti elementarnim stvarima PHP-a jer objektno programiranje definitivno nije za one koji će tek napisati prve linije koda. Nekakvo predznanje morate imati da bi uopće znali o čemu se ovdje radi..

Objektno orjentirano programiranje.

Kakav je to način programiranja? Zašto je bolji od proceduralnog? I...još dosta toga možete pročitati u ovih nekoliko tutorijala. Valjda ću uspjeti prenijeti malo znanja. :)

Pa da krenemo..

Za početak, evo nekoliko riječi za usporedbu proceduralnog i objektnog programiranja u PHP-u.

Svi početnici u php programiranju (bez ikakvog predznajna o programiranju) nesvjesno krenu pisati kod na proceduralni način. Takav kod može biti dosta neuredan i nepregledan. Programer se vrlo lako izgubi u kodu, što znatno oduzima dragocjeno vrijeme i otežava proces učenja. No, drugačije ne zna jer nije došao do ovoga o čemu ću sada pisati.
Prilikom izvršavanja koda, izvršava se linija za linijom, a kontrola toka programa se eventualno izvodi putem najčešće korištenog "if" ispitivanja uvjeta.

Za razliku od proceduralnog, objektno orjentirano programiranje je vrlo dinamično i fleksibilno. Organizacija koda je vrlo lagana, kod je pregledan i sve izmjene se mogu vrlo lako obaviti uz minimalan trud.

Evo par pitanja i odgovora čisto da se upoznate sa metodologijom objekata prije nego se upustite u pisanje istih.

Q: Što je to objekt?
A: Objekt je skup svojstava (property [neki to zovu i varijable]) i metoda (funkcija, akcija) koje tvore logičku cjelinu, a predstavljaju stvari ili pojave sa kojima se svakodnevno susrećemo. (automobil, računalo(l), itd...).

Q: Što je to klasa?
A: Klasa je nacrt pomoću kojega će se neki dotično objekt kreirati.

Q: Što je to svojstvo (property [varijabla]) objekta?
A: Kao što i samo ime kaže, svojstvo je opis stanja objekta. Probajte si malo u glavi provrtiti riješ "svojstvo" i što ona zapravo predstavlja dabiste imali malo čišću sliku o ovome.

Q: Što je to metoda objekta?
A: Metoda objekta predstavlja dio koda koji za objekt vrši određenu zadaću a pritom u obzir uzima i stanje objekta koje se odražava u svojstvu (property) objekta. Npr. kretanje kod automobila, paljenje računala, itd...

Q: Kakvo je to objektno programiranje?
A: Objektno programiranje je način programiranje kod kojega je sav kod strukturiran i predstavljen objektima, a specifičan je po komunikaciji objekata.

Da, dobro ste pročitali. Objekti u računalu mogu komunicirati. A mogu zato jer mogu jedni drugima prenositi i preuzimati informacije. Najčešće putem prenošenja stanja objekata.

Ajd, dosta sada priče, idemo na malo sočnije stvari...pisanje koda!

Ono što trebate prvo raspoznati je to da pišete klase, a ne objekte. Kako sam već rekao, objekt se kreira prema klasi.
Idemo kreirti klasu Automobil:


<?php
class Automobil {}
?>


Ono što mnogi ne znaju je da putem klase također definirate tip objekta. Dakle, ovo će biti objekt tipa "Automobil". Slično kao što možete kreirani varijablu tipa int, string, bool, itd..

Ono što slijedeće možemopretpostaviti za ovaj naš "automobil" jest da on ima neke svoje osobine iliti svojstva. Boju, marku, klasifikaciju (osobni, sportski, terenski) itd..
Dalje neću ulaziti u detalje jer samo želim da shvatite o čemu se ovdje radi. Ostaleo ćete, ako naravno želite, morati napraviti sami.
Dakle, kreirajmo te osobine u našoj klasi Automobil. Kod izgleda ovako:

 

<?php

class Automobil {

 

public function __construct() {}


// Sadrži informaciju o boji automobila.
public $boja;


// Sadrži informaciju o marki(proizvođaču) automobila.
public $marka;


// Sadrži informaciju o klasi automobila.
public $klasa;


}
?>

 

 

"__construct()" je konstruktor funkcija. Drugim riječima, funkcija koja kreira objekt kada se pozove.

Da bi naš automobil mogao išta drugo osim postojati, moramo mu kreirati metode(funkcije). Tako neke od funkcija automobila mogu biti paljenje, kretanje, zaustavljanje.
Ako malo bolje pogledate, ovo su sve funkcije koje automobil sam radi, tj. vi okrenete ključ i automobil izvršava radnju paljenja (naravno ako su svi djelovi ispravni). Uz to postoje i funkcije koje se mogu vršiti na samom automobilu i također su dio klase koja predstavlja automobil. Primjerice, funkcija "bojanje" koja će promjeniti svojstvo automobila da on više nije plave, već crvene boje. U ovom slučaju motoda "bojanje" će postaviti novu vrijednost u svojstvo(property) $boja.

Tako da naša klasa sada izgleda ovako:

 

<?php
class Automobil {

 

public function __cunstruct() {}


// Sadrži informaciju o boji automobila.
public $boja;


// Sadrži informaciju o marki(proizvođaču) automobila.
public $marka;


// Sadrži informaciju o klasi automobila.
public $klasa;


public function bojanje($boja) {
$this->boja = $boja;
}


}
?>



Ovdje se susrećemo sa nekim novitetima. To je "$this->boja". "this" je ključna riječ koja se koristi u objektnom programiranju da bi se pokazalo da se koristi svojstvo ili metoda koja pripada ovoj klasi.
Iz tog a prizlazi da varijabla $this pokazuje na našu klasu Automobil.

Još jedna nepoznanica ovdje je riječ "public" koju ću objasniti u sliedećih par redaka.
Svako svojstvo i metoda objekta se definiraju sa pravima pristupa. Postoje 3 prava pristupa.

"public, protected, private".

public - svojstvo ili metoda dostupni svima, tj. dostupni su i izvan klase u kojoj su definirani i svatko može preuzezi ili promjeniti njihovu vrijednost.
protected - svojstvar i metode koje se definiraju kao protected su dostupni samo unutar klase u kojoj su definirani kao i u klasama koje nasljeđuju (o nasljeđivanju nešto kasnije) pojedinu klasu.

 

Kreirajmo sada objekt prema klasi koju smo upravo napisali.

Objekte kreiramo tako da definiramo ime objekta(vidjet ćete, izgledaju isto kao i varijable) i pozovemo konstruktor objekta.

 

<?php

// Kreiranje objekta prema klasi

$automobil = new Automobil();

 

// Recimo da želimo obojati naš auto crvenom bojom.

$automobil->obojaj('crveno');

 

// Provjerimo koja je trenutna boja automobila

echo "Boja automobila je: " . $automobil->boja;

?>

 

P.S. Isprike zbog nepisanja ovog zadnjeg dijela koda..


Ok, mislim da će vam ovo biti dosta za početak. Sad se fino malo poigrajte sa kodom i probajte sami smisliti što se sve može napraviti sa ovim što ste danas naučili.

Uskoro će biti još tutorijala u kojima ću pokriti ostale dijelove objektnog programiranja. Stay tuned!

Q: U čemu radiš site? A: Pa u Dreamweaveru! Naravno! - hahahahahahaha
Poruka je uređivana zadnji put ned 22.11.2009 18:24 (coder_).
Moj PC  
8 0 hvala 8
15 godina
neaktivan
offline
RE: PHP: OOP (1. Uvod)
kada možemo očekivati drugio dio
k1.c0
16 godina
neaktivan
offline
RE: PHP: OOP (1. Uvod)
k1c0 kaže...
kada možemo očekivati drugio dio

Već dulje vrijeme imam želju da napišem slijedeći dio tutorijala, no jednostavno nisam stigao. Pokušat ću to odraditi iza srijede. No svakako će biti vrlo brzo.

dr. Mito Korupcija, doktor političkih znanosti.
15 godina
neaktivan
offline
PHP: OOP (Objektno Orjentirano Programiranje)

Iza koje srijede? {#}

http://bit.ly/fEJAtE
Moj PC  
3 0 hvala 0
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice