Citat:
Anemia: @ topic
Ne znam koliko OO pristup moze da podrzi upravljanje, razvoj i stalne promene. npr. Imas poveci broj objekata koji komuniciraju medju sobom, i sada se u jednom trenutku promeni nacin poslovanja, pa ti sada moras opet u kod da idesh da menjas i td..., to je potpuno neprakticno ako imas veliki broj ucesnika. Jednostavno ne znam koliko je ovaj pristup dobar na promene, da li na lak nacin moze da ih podrzi itd...
Poenta objektno baziranog programiranja, a to je veci deo objektno orijentisanog programiranja, je da se veze izmedju entiteta jasno odvoje i vide. Konkretno, ono sto je stvar samog entiteta (klase u OOP) se vise ne vidi spolja, pa veze izmedju entiteta postaju jasne.
To nije nikakva nova ideja, tako su ljudi radili i pre OOP jezika (i pre OBP jezika, kakav je npr. VB6), ali nije bilo sintaksnih ogranicenja (npr. kljucne reci "private") da to zaista spreci programera da napravi da neka funkcija krene da "krlja" po strukturi koja joj je prosledjena, a gde se ocekivalo da ona samo procita neke podatke.
(Naravno, OOP je vise od ovoga, ali ovo - enkapsulacija - je verovatno najbitnija stvar OOP-a.)
Medjutim, nece OOP da te spasi loseg dizajna. A tipican primer loseg dizajna je kada je proces komunikacije izmedju objekata los. Na primer, kada jedan logicki kanal komunikacije (npr. logicki tok podataka, proistekao iz biznis logike) implementaciono razbijes na nekoliko, pa se onda pola koda svede na pokusaje sinhronizacije komunikacije, i kada svaka izmena zahteva da se sve to ponovo natera da radi.
Lako je naci programe u kojima postoji previse veza. Iako formalno postoji enkapsulacija, ona se krsi time sto su objekti/klase medjusobno previse spregnuti, jer objekat A prestaje da radi ako objekat B nije tacno u stanju X, koje se postize time sto se operacije a, b i c izvrsavaju tacno tim redom i nijednim drugim...
OOP pomaze da se stvari zaista zaokruze u nezavisne celine, ali ni jedan nacin programiranja, pa ni OOP ne moze da sam od sebe resi probleme loseg dizajna.
Dalje, zaokruzivanje stvari u celine (bilo preko OOP ili na primer, pravljenjem multi tier aplikacije) pravi probleme same po sebi. Ako kasno u projektu otkrijes da neki podaci nisu dostavljeni tamo gde bi trebalo da budu, to najcesce znaci da se mora menjati nekoliko entiteta. E, tu ljudima padaju na pamet razne ideje kako doturiti podatke.