Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Objektno programiranje vs. proceduralnog?

[es] :: PHP :: Objektno programiranje vs. proceduralnog?

[ Pregleda: 4872 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

jumper2high
2High Jumper

Član broj: 39396
Poruke: 27
*.dynamic.sbb.co.yu.



+1 Profil

icon Objektno programiranje vs. proceduralnog?26.01.2008. u 15:52 - pre 197 meseci
Prvenstveno, zeleo bih da napomenem da sam procitao vec znacajan broj topic-a na ovom forumu, a i gro tutorijala online oko objektnog programiranja, i generalno svi govore vrlo slicnu stvar. Da je objektno bolje, i da je lakse, i fleksibilnije. I onda daju standardan primer kako se pravi method, class, i kako se to koristi, na osnovnoj bazi. Mislim, super je to - odradio sam par stvari sa klasama, to mi je znacajno pomoglo - ali to sto sam radio bi se takodje moglo izvesti visedimenzionalnim nizom i standardnim funkcijama.

Iako nisam noob kada je PHP u pitanju (ali vala, nisam ni ekspert), nekako mi poenta nije tu bas sasvim jasna. Recimo, primetio sam da se login cesto asocira sa klasama, odnosno da se cesto pominju login klase. To bi predpostavljam bio zgodan primer onda, ako bi neko bio voljan da navede, koja je prednost, i koji je fazon kod neke prosecne login klase.



Hvala unapred, folks :)

 
Odgovor na temu

Predrag Supurovic
Pedja YT9TP
Užice

Član broj: 157129
Poruke: 6279

Sajt: pedja.supurovic.net


+1570 Profil

icon Re: Objektno programiranje vs. proceduralnog?26.01.2008. u 17:54 - pre 197 meseci
Ralika je u tome sto u proceduralnom programiranju pravis procedure koje rade neki posao pa kada treba da se obradi neki podatak ti pozoves proceduru kojoj kao parametre prosledis podatak i sve sotalo neohpodno za obradu.

U objektnom pristupu je slicno, samo sto se formira objekat koji u sebi sadrzi sve neophodne procedure, tako da umesto da prosledjujes sve sto je neophodno proceduri, ti izvrsis nekuproceduru u objektu. Samim tim sto je procedura u objektu ona ima dostupno gomilu stvari koje onda ne moras da joj posebno prosledjujes. Posledica je da umesto da u programu baratas sa gomilom parametara, ti baratas sa objektima koji u sebi sadrze potrebne parametre.

Sledece sto dobijas to je mogucnost nasledjivanja. Ako napises klasu za jedan jednostavan objekat a zatreba ti objekat koji je vrlo slican tom koji si napravio samo ima neku dodatnu funkcionalnost, ti umesto da pravis iz pocetka, nasledis klasu prvog objekta i nadogradis je potrebnom funkcionalnoscu. To ne samo da ti olaksava programiranje, vec dobijas dve vrlo bitne stvari: prvo, razliciti objekti mogu tako da budu na nekom nivou medjusobno kompatibilni, i drugo, ako naknadno zatreba da se nesto promeni korenski u funkcionalnosti objekata to promenis u osnovnoj klasi i automatski se ta izmena prenosi na sve klase koje su njeni naslednici.

Login moze da bude lep primer primene objektnog prsitupa. Recimo da napravis klasu koja ima sledece funkcije:

classLogin {
Init;
Login;
Logout;
IsUserLogedIn (usernamme);
CheckUserLevel (userlevel);
}

E sad, unapred islaniras da moze da se pojavi potreba da se login radi prema razlicitim sistemima autentifikacije: prema lolanoj datoteci sa bazom korsinika, prema nekoj pravoj bazi, prema SMTP serveru, prema LDAP, prema Radiusu ili neki drugi nacin koga se ne mozes setiti.

Ako tako razmsiljas onda ces napraviti osnovnu klasu koja vise definisa standardni interfejs za komunikaciju sa klasom, a prava klasa koja ce zaista da radi posao ce da nasledi tu osnovnu i u njoj implementira funkcije. Tako ce ces moci da imas vise klasa koje nasledjuju osnovnu i rade autentifikaciju prema razlicitim sistemima, ali, posto sve te klase nalsedjujuosnovnu, to znaci d aimaju isti interfejs i da se sa svakom komunicira na isti nacin. U praksi, to znaci da tvoj program moze da radi autentifikaciju prema nekom istemu tako sto ce da u datom ommentu inicijalizuj objekat odgovarajuce klase i komunicirace sa njom isto kao i sa bilo kojom drugom klasom koja je nastala kao nalednik osnovne klase za autentifikaciju. Koju god klasu za login da upotrebi, tvoja aplikacija ce u njima imati funkcije Init, Login, Logout, isUserLoggedfin i CheckUserLevel, sto mu je sasvim dovoljno.

 
Odgovor na temu

jumper2high
2High Jumper

Član broj: 39396
Poruke: 27
*.dynamic.sbb.co.yu.



+1 Profil

icon Re: Objektno programiranje vs. proceduralnog?26.01.2008. u 19:23 - pre 197 meseci
Prvenstveno, hvala za opsiran odgovor.

E, sad ako sam te ja ispravno razumeo, glavna stvar kod objektnog programiranja je zapravo da je mnogo fleksibilnije i brze raditi tako, nego na konvencijalni nacin. Odnosno, na primer - kao sto sam ja do sada radio na fazon da imam datoteku check.php koja radi sledece stvari:

1. Proveri da li je cookie prisutan.
2. Proveri da li su u _SESSION nizu definisane neke promenljive.
3. Ukoliko ni prvo ni drugo nije "true", predje na login.
4. Ukoliko je _COOKIE prisutan, proveri ispravnost u odnosu na bazu podataka i ako je sve kako treba, setuje _SESSION data (ime, user-level, itd).
5. Ukoliko je _SESSION data vec setovan, ne radi nista.

A onda bih na svakoj zasticenoj stranici include-ovao (require, zapravo) taj "check.php" i tako ostvarivao zastitu.


E, sad - ako bih recimo login klasu definisao u zasebnoj datoteci (recimo class.php), onda bih ponovo na svakoj stranici include-ovao class.php, a onda se sluzio definisanim objektom i method-ima na slican nacin?
 
Odgovor na temu

Nemanja Avramović
Engineering Manager
MENU Technologies
Beograd, Srbija

Moderator
Član broj: 32202
Poruke: 4391
212.200.218.*

Sajt: https://avramovic.info


+46 Profil

icon Re: Objektno programiranje vs. proceduralnog?26.01.2008. u 19:35 - pre 197 meseci
Tako nekako. Osnovne prednosti OOPa su nasleđivanje, polimorfizam i enkapsulacija (i interfejsi koje mislim da PHP <6 nema). Verovatno ima još dosta toga, ja tek sad učim na višoj školi objektno programiranje (mada se time bavim već neko vreme) tako da ne mogu mnogo da pričam, ali eto, nasleđivanje ti je ukratko objašnjeno, a ovde možeš naći jedan jako zanimljiv tekst o polimorfizmu koji je predstavljen kroz... pa recimo malo čudne primere
Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
 
Odgovor na temu

jablan

Član broj: 8286
Poruke: 4541



+711 Profil

icon Re: Objektno programiranje vs. proceduralnog?26.01.2008. u 22:03 - pre 197 meseci
Osnovna "prednost" OOP-a je činjenica da podaci "nose" sa sobom i kod koji njima barata. Banalan primer - traženje apsolutne vrednosti nekog broja. U proceduralnom svetu nekoj proceduri abs (koja postoji sama za sebe) ti prosleđuješ broj kao parametar. U objektnom, samom broju pozivaš metodu abs:
Code:

irb(main):006:0> a = -4
irb(main):007:0> puts a.abs
4
 
Odgovor na temu

agvozden
Aleksandar Gvozden
founder
Info-G
Beograd

Član broj: 37813
Poruke: 1123
77.46.203.*

Sajt: www.gvozden.info


+68 Profil

icon Re: Objektno programiranje vs. proceduralnog?27.01.2008. u 14:08 - pre 197 meseci
prava snaga OOP-a u PHP-u jeste ako se primeni MVC način.

Templejt sistem poput smartja i neki data kontroler prilično će olakšati posao.

Iskorišćenje koda za nove aplikacije je mnogostruko intenzivnije nego kod proceduralnog načina.
 
Odgovor na temu

[es] :: PHP :: Objektno programiranje vs. proceduralnog?

[ Pregleda: 4872 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.