Sadržaj — Članak „Pojam klasa, atributa i objekata u PHP-u“ predstavlja uvodnu, teoretsku diskusiju o mogućnostima za primenu i razvoj klasa u objektno orijetnisanom PHP-u.
Usvajanjem teoretskih principa čitalac će uspostaviti elementarnu razliku izmedu uvedenih pojmova čime ce steći nužni teoretski osnov za razumevanje složenijih metoda pri projektovanju klasa u praktičnim primerima koji ce uslediti u drugim clancima.

Kljucne reči — atribut, klasa, objekat, php….



Pročitaj članak u PDF formatu† Pročitaj kompletan priručnik u PDF formi prilagođenoj štampanju
‡ Merlot publication, date added June 13. 20112:
http://www.merlot.org/merlot/viewMaterial.htm?id=588445

Sva autorska prava su zadržana, © 2012.

I.    UVODNA RAZMATRANJA

U SOFTVERSKOJ industriji u segmentu objektno orijentisanih Web aplikacija projektovanje softvera se realizuje kao skup samostalnih objekata jedinstvenih po svojoj konceptualnoj formi. Svaki objekat, grupisan u opsegu klase sadrži jedinstven skup atributa.
Atributi (engl. properties) su svojstva objekata. Svaki objekat može biti predstavljen u softveru primenom objektno orijentisanog pristupa bilo da je reč o elementima preuzetih iz trodimenzionalnog sveta ili, čak, apstraknim formama.
Preduslov za izgradnju objekata u apstraknom smislu je ograničen na usko poznavanje konceptualne forme posmatranog oblika.
Poznavanje koncepcije objekta koji se gradi svodi se na poznavanje njegovih osobina, tj., svojstava.
U klasama su svojstva objekata isto što i njegovi atributi. Analogno svemu ovome uvedeni termin atribut ili svojstvo je po svojoj prirodi veoma sličan opisnim pridevima u gramatici. Naime, kao i u gramatici, svojstva objekata takođe usko odreduđu njegovu strukturu. Ukoliko pridevi uvek stoje uz imenicu kako bi je bliže odredili, onda, analogno ovome,  atributi uvek „ stoje uz klasu ne bi li je bliže odredili.“
U uopštenom kontekstu objekat može biti bilo šta. To može biti automobil, zgrada ili bilo koja druga konceptualna forma.  U gramatici, ali i u objektno orijentisanom programiranju i automobil i zgrada mogu biti plave boje,  mogu biti veliki ili teški, ali svaka od ovih osobina, ipak, predstavlja po jedan atribut u OOP-u ili jedan opisni pridev…

Iz svega do sada rečenog sledi da su atributi karakteristike objekta ili karakteristike klase uopšte.

Atibuti, svojstva ili karateristike su promenljive vrednosti koje se najcešce definišu nakon izgradnje samog objekta. Atributi se smeštaju unutar projektovane klase i kao takvi čine promenljive klase. Ipak, vrednosti atributa, osim u slucaju onih „podrazumevanih “ (dinamicki dodeljenih), se najcešce smeštaju van klase. Dakle, u objektnom pristupu teži se tome da vrednosti svih atributa budu izmeštene van okvira strukture klase, nakon kreiranja objekta. U tehničkom kontekstu, dinamička dodela vrednosti često nije i ne može se smatrati sintaksnim defektom. Konacno, dinamički dodeljene vrednosti ne izazivaju sintaksne konflikte, ali se u razvojnom psristupu smatraju lošom praksom.

II.    IZGRADNJA KLASA

U tehničkom smislu izgradnja klasa podrazumeva upotrebu rezervisane reci class i dodele jednistvenog imena koji je nedvosmisleno odreduje:

Class Automobil
{
}

Sadržaj klase: atributi, funkcije, metode – smeštaju se unutar vitičastih zagrada. Sadržaj unutar zagrada klase nazivamo opsegom (engl. scope).

U apstraktnom kontekstu, ukoliko je jedan dekomponovani cilj u nekoj od faza izgradnje odredenog softvera usmeren ka razvoju klase automobil, onda ce njegovi atributi verovatno ukazivati na model, godinu kada je prozveden, boju ili neku drugu karakteristiku koja je relevantna ili čak primenljiva nad svim automobilima. Naime, svaki automobil, da bi se mogao smatrati „automobilom“ mora imati boju i pogonski agregat… Istina je da svi automobili nemaju istu bolju, niti nose iste pogonske agregate, ipak, boja, agregat i dr.  „karakteristike“, skupa  čine „klasu automobil“.

Class Automobil
{
public $boja;
public $agregat;
}

Na ovaj nacin se postiže da sama izmena sirovih podataka sa kojima se operiše bude znatno olakšana, jer je uslovno rečeno, vrednost atributa „boja“ – posmatrane klase „automobil“ može biti definisana van njene strukture izgradnom objekta ili podešena na vrednost „plav“ dinamickom dodelom vrednosti:

Class Automobil
{
public $boja = palva;
public $agregat = 1900;
}

Sa druge strane, sama konceptualna forma klase automobil može biti smeštena unutar biblioteke class.lib.php i po potrebi pozivana unutar bilo kog skripta gde zatreba (slika 1).
Pozivanje class.lib.php skripte u eksternim php-ovim skriptama

Isto tako, osnovna klasa može veoma jednostvano biti proširena novim gradivnim elementima, čime se može postici viši nivo funkcionalnosti. Pomenut koncept u PHP-u, ali i drugim programskim jezicima se naziva „nasledivanje“.

Sl. 1. Slika 1. Organizacija koda. ……….. 

U objektno orijentisanom pristupu, nakon izgradnje klase i dodeljivanja atributai i, konačno,  operacija, o čemu ce biti reci u nastavku, primarni cilj je da se izgradi osnovna shema ili nacrt na osnovu koga možemo delovati na polju daljeg razvoja strukture aplikacije.
Klasa „automobil“ sa svojim atributima i funkcijama, može pripadati ili naslediti svoju maticnu (nad – klasu) „vozilo“ (slika 2).

………………Slika 2. Nasleđivanje

Principi nasledivanja, ipak, nisu suština ovog članka, koji je zakljucno sa ovim segmentom ograničen na pružanje neophodnih teoretskih osnova za razumevanje prakticnih primera koji ce uslediti.

III.    POJAM OBJEKATA

Klase treba usvojiti kao noseću konstrukciju ili mehanizam namenjen generisanju objekata. Svaka klasa svojom strukturom predstavlja jednu vrstu mašine koja je u stanju da omoguci serijsku proizvodnju objekata identicnih po svom obliku, npr., ali razlicitih po „serijskom broju“ odnosno identifikatoru.
Uvedena „industrijski orijentisana“ analogija ima za cilj da ukaže da je primenom OOP-a omogućena olakšana proizvodnja objekata, ali i osigurana potpuna sledljivost i kontrola novokreiranih entiteta.

IV.    LINKOVI

Video sekvenca
„Pojam klasa, atributa i objekata u PHP-u 1“

HTML – verzija:
http.//php.sasastamenkovic.com/

SCORM LO verzija:
http.//php.sasastamenkovic.com/repository/SCORM/php/oop/uvod_u_OOP_1.zip

IMS paket:
http.//php.sasastamenkovic.com/repository/IMS/php/oop/uvod_u_OOP_1.zip

Veza ka pređašnjem learning objektu:

http://php.sasastamenkovic.com/2012/06/uvod-u-objektno-orijentisano-programiranje-u-php-u/

Veza ka narednom learning objektu:
U pripremi…

Eksterni linkovi:
[1] http://www.phpnet.org

 

V. LITERATURA

[1]    Zandstra M., (2010).  Php Objects, Patterns and Practice. (trece izdanje). [online]. Dostupno na: http://goo.gl/w0beP   [5. Jun, 2012].
[2]    Gilmore J., (2010).  Beginning PHP and MySQL: From Novice to Professional. (cetvrto izdanje). [online]. Dostupno na: http://goo.gl/NW3V4    [10. Juni, 2012].
[3]    PHP-Net  “Classes and Objects – Introduction,” http://www.php.net/manual/en/oop5.intro.php , [12.juni, 2012].
[4]    PHP-Net “The Basics – Introduction,” http://www.php.net/manual/en/language.oop5.basic.php  ,[13.juni, 2012].
[5]    PHP-Net “Properties – Introduction,” http://www.php.net/manual/en/language.oop5.properties.php   ,[13.juni, 2012].