[ Neznalica_sa_ugla @ 05.09.2007. 10:14 ] @
| Jos nekako sam skontao , sta je nasljeđivanje i kako se providi , shvatio i sta je polimorfizam i kako ga napraviti i onda sretnem pojam VIŠESTRUKI POLIMORFIZAM !! Molio bi ako ko ima kakvih spoznaja da napise , i eventualno neki primijer HVALA . (veoma je hitno ) |
[ DjoleReject @ 05.09.2007. 12:36 ] @
Kada iz klase Zivotinja nasledis klasu Macka, postigao si da sve osobine koje mogu pokazivati zivotinje u globalu, automatski postaju i osobine macke, pa tebi ostaje da se u klasi Macka bavis samo specificnostima same macke. Ako si istovremeno i paralelno razvijao klase koje opisuju kvalitet dlake kod zivih bica, mozda si se nasao u situaciji da imas klase Kratkodlaki, Dugodlaki, Celavi...
Polimorfizam je kada ti svoju Macku nasledis i iz klase Zivotinja i iz klase Kratkodlaka. Sada se u samoj klasi Macka ne moras baviti ni dlakom macke, kao sto si ranije postigao i sa zivotinjskim osobinama.
Nadam se da primer nije potpuno nerazumljiv, a ako jeste - reci, nije mi tesko da smislim i nesto blize zdravom razumu ;)
Kod visestrukog nasledjivanja treba paziti na membere koji se na neki nacin definisu i u jednoj i u drugoj klasi iz koje se nasledjuje, na problem konstruktora (ako postoji problem sa redosledom pozivanja) i sa preklopljenim metodama.
Ako zelis dublje da udjes u pricu, dacu ti neke linkove ili meni karakteristicno baljezganje sa mackama i psima :), mada ni pametniji autori nemaju mnogo srecnije paralele...
Na kraju samo da znas da vecina objektno orjentisanih jezika krece od pretpostavke da visestruko nasledjivanje uopste nije potrebno i da se svi takvi problemi mogu resiti i na nacin koji nije toliko podlozan greskama. Ovo nije kompletna istina, ali ostaje cinjenica da to resenje nije idealno i da ostavlja mogucnost zavlacenja gresaka koje se tesko pronalaze... Neces biti mnogo hendikepiran ukoliko ovu temu naucis samo informativno, a u praksi je potpuno izbegnes. S druge strane, mnogi C++ programeri povlace ovaj argument da bi dokazali Java programerima koliko je njihov jezik nadmocan...
[ Neznalica_sa_ugla @ 05.09.2007. 18:32 ] @
Svakako hvala na trudu , ali ovdije je bilo rijeci ne o visestrukom nasljedjivanu ,nego o
VIŠESTRUKI POLIMORFIZAM . Znaci trebalo bi mi nesto o VIŠESTRUKOM POLIMORFIZAM . Mada se uglavnom slažem s tobom o korisnosti svega ovoga .
[ vlaiv @ 07.09.2007. 14:45 ] @
Pretpostavljam posto se nisam susretao sa terminom da je u pitanju sledece:
Klasa C nasledjuje Klasu A i Klasu B znaci da imamo visestruko nasledjivanje ...
E sad, posto znamo da je polimorfizam sledece:
Klasu C mozemo koristiti tamo gde se ocekuje Klasa A
onda to prevodimo u ovu visestruku terminologiju:
Klasu C mozemo koristiti tamo gde se ocekuje Klasa A ili Klasa B, samim tim imamo visestruki polimorfizam.
Da li ovo ima smisla?
[ 1jedini @ 08.09.2007. 11:06 ] @
Moj omiljeni primer koji demonstrira i VIRTUELNI polimorfizam ( tacnije receno virtuelno nasledjivanje).
Code:
class Jabuka
{
public: virtual bool ocisti()=0;
int boja a;
};
class PrljavaJabuka // pokupljena sa zemlje
: virtual Jabuka
{
public: bool ocisti(){ /*pranje*/; return true; }
};
class CrvljivaJabuka // ova je ubrana sa drvete i zato nije prljava
: virtual Jabuka
{
public: void ocisti(){ /* vadjenje crva*/; return true; }
};
class PrljavaCrvljivaJabuka // malo je duze stajala na zemlji
: public CrvljivaJabuka
: public PrljavaJabuka
{
public: void ocisti(){ CrvljivaJabuka::ocisti(); PrljavaJabuka::ocisti(); /*dodatno pranje*/}
};
Mozemo dodati i
PrskanaJabuka pa na kraju napraviti
PrljavaPrskanaCrvljivaJabuka gde bi metoda vratila
false.
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.