Nasleđivanje i kompozicija objekata

12 Feb 2006 In: Programiranje

Nasledjivanje i kompozicija objekata

Nasledjivanje i kompozicija objekta predstavljaju dve tehnike za ponovno korišćenje objekata u objektno orjentisanim sistemima. Nalseđivanje klasa omogućava da implementacija podklase bude definisana u okviru roditeljske klase. Ovaj tip ponovnog korišćenja se često naziva bela kutija. Ovaj pojam se odnosi na činjenicu da sa nasleđivanjem implementacija roditeljske klase često bude vidljiva podklasi.

Objekti koji se kreiraju kompozicijom drugih objekata kreiraju se tako da ostvare dodatnu funkcionalnost. Ovaj pristup zahteva da objekti imaju dobro definisane interfejse jer su unutrašnji delovi objekata nepoznati. Pošto se objekti tretiraju kao crne kutije ovakav način ponovnog korišćenja se naziva “black box reuse”.

Svaki od ova dva načina ima svojih prednosti ali i mana. Prednost nasleđivanja klasa je to što se sve dešava statički u trenutku kompajliranja i jer je jednostavan za korišćenje. Mana nasleđivanja klasa je to što se na ovaj način dobijaju klase koje postaju zavisne od implementacije roditeljske klase. Na ovaj način teško je da se nasleđene klase ponovo koriste naročito ako deo koda roditeljske implementacije više nije poželjan. Ovo otežava ponovno korišćenje izvedenih klasa, „nasleđivanje razbija enkapsulaciju“. Jedan način da se zaobiđe ovaj problem jeste nasleđivanje samo apstraktnih klasa. Drugi problem sa nasleđivanjem klasa je to što se implementacija nasleđena od roditeljske klase ne može menjati u vremenu izvršavanja.

Kod pristupa objektne kompozicije, funkcionalnost se ostvaruje u vremenu izvršavanja na taj način što objekti ostvaruju i čuvaju reference ka drugim objektima. Prednost ovog pristupa da se implementacija može zameniti u vremenu izvršavanja. Ovo je moguće jer objektima se pristupa samo preko njihovih interfejsa, tako da se lako jedan objekat može zameniti sa drugim dogod imaju isti tip. Kao još jedna pogodnost ovakvog pristupa, javlja se manja implementaciona zavisnost između objekata. Mana je slaba čitljivost ovako napisanog koda, jer se za ostvarivanje veoma dinamičnih struktura zahteva da razičiti objekti rade zajedno.

Uopšte kompozicija objekata ima prednost nad nasleđivanjem. Ona promoviše manje, fokusiranjije klase i manje hijerarhije nasleđivanja. Većina programera preteruje sa korišćenjem nasleđivanja, i to rezultuje u obimnim hijerarhijskim strukutrama koje se teško održavaju. Ponašanje tako postavljenog sistema zavisi više od međusobnog odnosa između objekata nego od ponašanja koje je definisano u pojedinim klasama.

Međutim nasleđivanje je i dalje potrebno. Ne može se uvek ostvariti potrebna funkcionalnost samo sa uklapanjem postojećih komponenti. Ovo se dešava jer „skup postojećih komponenti nikada nije dovoljno bogat kada se koristi u praksi”. Nasleđivanje se koristi da se naprave nove komponente koje se mogu kasnije uklapati od postojećih starih komponenti.

Zbog fleksibilnosti i snage koju pruža objektna kompozicija većina dizajn paterna koristi upravo ovaj način pre nego nasleđivanje kad god je to moguće.

Novi web sajt je u izgradnji

14 Jan 2006 In: razno

Na sajtu www.insaned.net planiram da koristeći moderan i lagan CSS dizajn, napravim svoj lični web portal. Sajt pokreće CMS sistem koji je u stalnom razvoju i nadam se da će uskoro dobiti i veliki broj posebno napravljenih proširenja. Planiran je Blog koji će biti na naslovnoj stranici, a zatim i galerija slika sa nekih od mojih putovanja kojih će u budućnosti nadam se biti još više.

Teme na blogu

Na blogu će se diskutovati o novim tehnologijama i pravcima razvoja web aplikacija danas. Akcenat će biti stavljen na razvoj CMS sistema. A posebnu pažnju pokloniću mojoj omiljenoj web kompaniji Google-u, kao i njenim web aplikacijama itd.

Brzo i kratko...

Slipstream SQL Server 2008
Detaljno uputstvo kako da napravite slipstream instalaciju za SQL Server 2008. Nadam se da će ovo rešiti problem instalacije na Win7-mici. link (0)

Online raketne prezentacije
Pogledajte obavezno sta sve može da se izvuče iz browsera, pomoću ovog zanimljivog servisa za pravljenje online prezentacija. www.SlideRocket.com (0)

Certified Scrum Master - Kurs
U organizaciji prof. Siniše Vlajića na FON-u biće organizovan kurs za sertifikovane SCRUM mastere. Predavači su eminentni stručnjaci iz ove oblasti: James Coplien, Dan Rawsthorne, Alan Cyment i Branislav Selić. Prijava još danas. Link (0)

Pretraga ikona
Milion puta potrebna mi je brzo ikonica za neki projekat.  Par linkova za pretragu i nalaženje velikog broja ikonica, IconLook, IconLet, IconFinder. (0)

Besplatni časopisi za sve
Odličan servis sa gomilom aktuelnog materijala… Skoro po pravilu časopisi su nosioci novih ideja i trendova a knjige to kasnije sve isprate… budite u toku sa ISSUU.COM - by Nemke. (0)

PHP & ORM
Natrčao sam slučajno na zanimljiv ORM frame za PHP Doctrine ORM . Kada bude bilo više vremena možda vredi pogledati i maznuti neku dobru ideju, iako na prvi pogled deluje da su ga malo zakomplikovali. (0)

Mini postovi
Obicno nemam vremena da pisem duze postove ali ovo ce posluziti u slucaju da se nadje nesto zanimljivo, verovatno link ili neki kratak komentar… (0)