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

nizovi apstraktnih klasa

[es] :: C programiranje :: nizovi apstraktnih klasa

[ Pregleda: 2127 | Odgovora: 15 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

marko000
marko vucinic
Beograd

Član broj: 6501
Poruke: 63
*.eunet.yu



Profil

icon nizovi apstraktnih klasa22.05.2003. u 02:04

imam jedno pocetnicko(poluglupo) pitanje..

ako imam apstraktnu klasu aps
i hocu da definisem u novoj klasi niz opjekata klasa izvedenih iz pas klase
zasto ne mogu da koristim aps *niz i pristupam tim clanovima preko indeksa(niz[0],niz[1] itd..) vec moram da niz definisem kao aps **niz?
22.05.2003. u 02:04 

Reljam
Relja Markovic
Seattle, WA

Član broj: 531
Poruke: 1739
*.microsoft.com

Sajt: www.linkedin.com/in/relja..


Profil

icon Re: nizovi apstraktnih klasa22.05.2003. u 02:50
Apstraktni objekti ne mogu da se instanciraju (ne mozes da uradis aps a;), tako da ne mozes ni da napravis niz apstraktnih objekata.

Takodje ne mozes da napravis niz ne-apstraktnih objekata A i da ih onda referenciras kroz *B (gde je B izvedeno iz A), a zvuci kao da si to opisao.
22.05.2003. u 02:50 

marko000
marko vucinic
Beograd

Član broj: 6501
Poruke: 63
*.eunet.yu



Profil

icon Re: nizovi apstraktnih klasa22.05.2003. u 12:52
OK,kako onda da koristim klasu koja treba da sadrzi niz odredjenih objekata razlicitog tipa,izvedenih iz apstraktne klase,konkretno ako imam predmet za police...klasa predmet je apstraktna...neka predmeti recimo budu knjige,kasete i diskovi;kako da definisem policu koja ima odredjenu nosivost i na nju mogu da stavljam i uzimam predmete razlicitog tipa?
22.05.2003. u 12:52 

Reljam
Relja Markovic
Seattle, WA

Član broj: 531
Poruke: 1739
*.microsoft.com

Sajt: www.linkedin.com/in/relja..


Profil

icon Re: nizovi apstraktnih klasa22.05.2003. u 20:20
Pa bas onako kako si gore napisao, pomocu duplog pointera: Predmet **niz;
22.05.2003. u 20:20 

marko000
marko vucinic
Beograd

Član broj: 6501
Poruke: 63
*.eunet.yu



Profil

icon Re: nizovi apstraktnih klasa23.05.2003. u 11:13
mislim da sam dosao teorijski do resenja ;)
posto se radi o apstraktnoj klasi,objekti mogu biti razlicite vrste a u niz ne moze da se pakuje vise razlicitih vrsta vec samo jedan tip podataka...kada definisem **p definisao sam niz pokazivaca te tako nema problema...u svakom slucaju hvala puno

marko
23.05.2003. u 11:13 

marko000
marko vucinic
Beograd

Član broj: 6501
Poruke: 63
*.eunet.yu



Profil

icon Re: nizovi apstraktnih klasa23.05.2003. u 12:44
hmmm...jos jedna mala nejasnoca

ako imam:

Podatak **niz; //gde je podatak apstraktna klasa

zasto prostor za niz dodeljujem sa

niz=new Podatak *[..neki broj..];
23.05.2003. u 12:44 

Dragi Tata

Član broj: 1958
Poruke: 3885
*.dial.InfoSky.Net

Sajt: www.novetehnologije.com


Profil

icon Re: nizovi apstraktnih klasa23.05.2003. u 13:54
Možda sam već dosadan, ali ti najtoplije savetujem da ne koristiš te duple zvezde, nego lepo da uzmeš

Code:

vector <Podatak*> niz;


Veruj mi, mnogo je bolje.
23.05.2003. u 13:54 

leka
Dejan Lekić
senior software engineer, 3Developers Ltd.
London, UK

Član broj: 234
Poruke: 2530
*.telia.com

Sajt: dejan.lekic.org


Profil

icon Re: nizovi apstraktnih klasa24.05.2003. u 03:38
Jesi, dosadan si...

Elem od programera zavisi da li će koristiti pokazivače ili neće. Da budem najiskreniji pa da javno iznesem šta mislim - svako ko kuka o pokazivačima (a na to kukaju svi ljudi koji se bave razvojem softvera u drugim jezicima) treba odmah da prestane da programira u C/C++ i da se pozabavi nekim jezikom koji nema pokazivače, niti namerava da ima... :)

A sada ja malo ja budem dosadan... - Naime, smatram lično da je UPRAVO draž (što napisa jedan mnogo pametniji čovek od mene u jednom članku negde u nekim novinama) programiranja u C/C++ BAŠ korišćenje pokazivača da bi se došlo do kompaktnijeg izvršnog koda, za koji ne treba NNNN Mb RAM-a, NNN GB tvrdog diska i NN GHz procesor(i).

No, ovo je možda za neku diskusiju tipa "programerska filosofija". :)

Ne znam... čovek mora nekada da sedne i razmisli da li želi da programira nisko, ili visoko. Ako odabere prvo - koristiće pokazivače kao bela lala, ako odabere drugo, koristiće STL.

E, sada još malo filosofije... U pitanju je kreativnost - koristiti gotove STL stvari po meni čoveku ostavljaju sve manje i manje prostora za kreativni rad. Uglavnom se onda čitav posao svodi na instanciranje tamo nekih objekata, vezivanje istih na pravi način, postavljanje nekih relacija, akcija, reakcija, i to je to. "HighLevel" programer je sa MOG stanovištva najobičnija radna snaga i generalno svako ko vidi/shvata poentu STL-a i svih sličnih stvari (JAVA je fantastičan primer) zna da sam u pravu, jer je to osetio na svojoj koži.
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
24.05.2003. u 03:38 

-zombie-
Tomica Jovanovic
freelance programmer
ni.ac.yu

Član broj: 4128
Poruke: 3448
*.dial.InfoSky.Net

Sajt: localhost


Profil

icon Re: nizovi apstraktnih klasa24.05.2003. u 03:49
reinventing the wheel 4ever!

asm 4ever!


real programmers use

copy con > virus.exe
24.05.2003. u 03:49 

Reljam
Relja Markovic
Seattle, WA

Član broj: 531
Poruke: 1739
*.client.attbi.com

Sajt: www.linkedin.com/in/relja..


Profil

icon Re: nizovi apstraktnih klasa24.05.2003. u 04:34
Leka, nemoj tako, DT ukazuje na vrlo dobru alternativu. Naravno da je do programera da li ce da koristi pokazivace, C++, neki skript jezik ili ce da ide na plazu. Ali, IMHO, greska je predstavljati kreativnost u programiranju kao koriscenje pokazivaca i optimizovanje na niskom nivou. Kreativnost je u dizajnu sistema, u necemu malo vecem, u biblioteci klasa, itd. Optimizacija se prvo radi na visokom nivou, a dosta kasnije na niskom. Nije tesko koristiti pointere, tesko je napraviti neki veci sistem koji je pritom ekstenzibilan i jeftin za odrzavanje.

Having said that, mislim da je bolja putanja za ucenje da se prvo ovlada pointerima, jer ce i pored STLa Marko morati kad tad sa tim da se suoci. Ali kasnije, kada jedanput to nauci / izvezba, nema vise svrhe izmisljati toplu vodu - onda treba koristiti STL.

Sto se tice jezika bez pointera, takvih vise prakticno i nema (osim ako se neko ne uhvati stare verzije VBa). Imaju doduse mnogo jednostavnije pointere.

Citat:
leka:"HighLevel" programer je sa MOG stanovištva najobičnija radna snaga i generalno svako ko vidi/shvata poentu STL-a i svih sličnih stvari (JAVA je fantastičan primer) zna da sam u pravu, jer je to osetio na svojoj koži.


Zanimljiva ideja. Cisto diskusije radi, koji programeri po tebi onda nisu radna snaga? Mislim cime se oni bave po ceo dan?
24.05.2003. u 04:34 

degojs

Član broj: 4716
Poruke: 5050
*.cpe.net.cable.rogers.com

Sajt: www.novetehnologije.com


Profil

icon Re: nizovi apstraktnih klasa24.05.2003. u 10:39
Citat:
leka:
U pitanju je kreativnost - koristiti gotove STL stvari po meni čoveku ostavljaju sve manje i manje prostora za kreativni rad. Uglavnom se onda čitav posao svodi na instanciranje tamo nekih objekata, vezivanje istih na pravi način, postavljanje nekih relacija, akcija, reakcija, i to je to.


Auuu..
Od kad je to izmisljanje tople vode kreativnost?
Pa majku mu, koja je osnovna poenta OOP-a?
I ko ce to da kaze gde se konacno treba zaustaviti ako krenes tim putem (vidi post zombija)?
U svoj toj prici, gde je tu produktivnost? I ko ce to da placa - da ti radis ono sto mislis da je ove nedelje cool? Ako se radi za svoju dusu ajd jos i da razumem (mada i tada - koja je poenta ponavljanja istog???)

Bez ljutnje, al' zvucis kao da ti je programiranje bolje od seksa.

Commercial-Free !!!
24.05.2003. u 10:39 

marko000
marko vucinic
Beograd

Član broj: 6501
Poruke: 63
*.eunet.yu



Profil

icon Re: nizovi apstraktnih klasa24.05.2003. u 23:02
sve je to lepo sto ste vi napisali ali meni niko ne odgovori na pitanje ;)))))

salim se,stvarno bi mi znacilo da mi neko obajsni u cemu je fora sa

Predmet **pp=new Predmet *[...int...];

ako je Predmet apstraktna klasa


pozdrav
24.05.2003. u 23:02 

Časlav Ilić
Braunšvajg, Nemačka

Član broj: 4945
Poruke: 481
*.ppp-bg.sezampro.yu



Profil

icon Re: nizovi apstraktnih klasa25.05.2003. u 11:23
Šta te konkretno zbunjuje? Tim kodom rezervisaćeš prostor za niz pokazivača na klasu Predmet, tj. neće doći do kreiranja instanci klase, pa nema veza što je apstraktna.
25.05.2003. u 11:23 

Dragi Tata

Član broj: 1958
Poruke: 3885
*.dial.InfoSky.Net

Sajt: www.novetehnologije.com


Profil

icon Re: nizovi apstraktnih klasa25.05.2003. u 13:19
Citat:
leka:
Jesi, dosadan si...


Hvala, trudim se :)

Citat:
leka:
Elem od programera zavisi da li će koristiti pokazivače ili neće. Da budem najiskreniji pa da javno iznesem šta mislim - svako ko kuka o pokazivačima (a na to kukaju svi ljudi koji se bave razvojem softvera u drugim jezicima) treba odmah da prestane da programira u C/C++ i da se pozabavi nekim jezikom koji nema pokazivače, niti namerava da ima... :)


A ko je protiv pokazivača? Pokazivače treba koristiti za ono za šta su originalno i napravljeni - da se drži adresa neke promenljive/objekta u njoj. Ja sam protiv korišćenja C-like nizova, jer su nečitljivi i zahtevaju puno koncentracije kad se radi sa njima. Što se performansi tiče, STL šabloni su pravljeni tako da omoguće zero-overhead; vector u odnosu na C nizove nije ni malo sporiji. Mada, istina je da u nekim implementacijama (npr VC++) korišćenje C++ standardne biblioteke implicira i povezivanje (statičko ili dinamičko) sa još jednom dodatnom bibliotekom.

Citat:

A sada ja malo ja budem dosadan... - Naime, smatram lično da je UPRAVO draž (što napisa jedan mnogo pametniji čovek od mene u jednom članku negde u nekim novinama) programiranja u C/C++ BAŠ korišćenje pokazivača da bi se došlo do kompaktnijeg izvršnog koda, za koji ne treba NNNN Mb RAM-a, NNN GB tvrdog diska i NN GHz procesor(i).


Kao što rekoh gore, ništa od toga nećeš da postigneš ako koristiš C nizove umesto STL šablona.

Citat:

E, sada još malo filosofije... U pitanju je kreativnost - koristiti gotove STL stvari po meni čoveku ostavljaju sve manje i manje prostora za kreativni rad. Uglavnom se onda čitav posao svodi na instanciranje tamo nekih objekata, vezivanje istih na pravi način, postavljanje nekih relacija, akcija, reakcija, i to je to. "HighLevel" programer je sa MOG stanovištva najobičnija radna snaga i generalno svako ko vidi/shvata poentu STL-a i svih sličnih stvari (JAVA je fantastičan primer) zna da sam u pravu, jer je to osetio na svojoj koži.


IMHO, STL te oslobađa od nekreativnog rada - recimo praviti binary search "od nule" je dobra vežba za studente, ali za profesionalnog programera je ne samo gubljenje vremena, već i dosadno. Kakva mi je to kreativnost da se otvori neki udžbenik o algoritmima i da se iskodira nešto odatle u nekom programskom jeziku?

25.05.2003. u 13:19 

alkal
Aleksandar Kalanj
Beograd

Član broj: 7960
Poruke: 26
*.ptt.yu

Jabber: alkal@elitesecurity.org
Sajt: galeb.etf.bg.ac.yu/~kalan..


Profil

icon Re: nizovi apstraktnih klasa25.05.2003. u 14:51
Da apsolviramo:

Ne može se napraviti objekat tipa apstraktne klase iz
jednostavnog razloga što bi takav objekat bi neodređen.
Stoga, mogući su jedino pokazivači i upućivači (reference)
na objekte tipa apstraktne klase.

Recimo da imaš apstraktnu klasu Predmet i izvedene klase
Knjiga i Frizider, a treba ti niz Predmeta.
Budući da ne možeš koristiti konkretne objekte tipa Predmet
napravićeš niz pokazivača na Predmet.

Ukoliko je niz konstantne dužine:
Code:

Predmet* niz[5];

Ako dužina niza nije poznata u trenutku prevođenja, koristićeš
dinamičko kreiranje niza (pretpostavljam da znaš vezu između
nizova i pokazivača):
Code:

Predmet* *niz;
// ... Ucitaj duzinu niza - n.
niz = new Predmet* [n];

niz[0] = new Knjiga();
niz[1] = new Frizider();
// ...

Ukoliko ti ovo izgleda ružno, koristi std::vector<Predmet*> koji
pruža mnogo udobniji rad.
25.05.2003. u 14:51 

marko000
marko vucinic
Beograd

Član broj: 6501
Poruke: 63
*.eunet.yu



Profil

icon Re: nizovi apstraktnih klasa26.05.2003. u 03:07
alkale ti si kralj...
ne mogu da ti objasnim koliko si mi pomogao
veliki pozdrav

marko
26.05.2003. u 03:07 

[es] :: C programiranje :: nizovi apstraktnih klasa

[ Pregleda: 2127 | Odgovora: 15 ]

Postavi temu Odgovori

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