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

Problem sa konstruktorom kod nasledjivanja

[es] :: Java :: Problem sa konstruktorom kod nasledjivanja

[ Pregleda: 3713 | Odgovora: 14 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

miltes
Novi Sad

Član broj: 151901
Poruke: 13
*.ns.ac.yu.



Profil

icon Problem sa konstruktorom kod nasledjivanja19.07.2007. u 22:38 - pre 176 meseci
Dakle, imam nasledjivanje,klasa Organizator nasledjuje klasu Dezurni, i treba da mi objekat iz super klase (dezurni), posle nekog vremena, postane objekat u sub klasi (organizator) sa dodatim jos nekim atributom (predmet).
Ali objekat (dezurni) iz super klase, znaci MORA nestati, tj. preci u (organizatora) sub klasu ceo... Naravno moram paziti i na reference vezane za stari objekat, jer je to isti korisnik, samo mu se menja uloga u sistemu i naravno on dobija jos neke funkcionalnosti...
Nadam se da razumete sta pitam!
Ps.Mozda ima i veze sa copy constructorom. U klasi "cerci" (Organizator) je dakle problem, tj. kako bi trebao da izgleda taj konstruktor?
Dali se neko sretao sa slicnim problemo? Nadam se da jeste!
HVALA PUNO!
Pozdrav!
Milan
Milan
 
Odgovor na temu

aleksandarpopov
IT consultant
Senta

Član broj: 57172
Poruke: 484
77.46.158.*

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


Profil

icon Re: Problem sa konstruktorom kod nasledjivanja20.07.2007. u 09:14 - pre 176 meseci
Pa ne znam da li ce ti ovo pomoci, ali mozes da deklarises objekat kao bazna klasa a da je on u stvari referenca na izvedenu klasu.

Dezurni o = new Organizator();

Posle mozes da kastujes i o u izvedenu klasu (valda moze ovo i u Javi, ja sam C# programer). Da li ti ovako nesto radi posao?
RTFM
 
Odgovor na temu

Java Beograd
Novi Beograd

Član broj: 11890
Poruke: 8708
..yu.220.247.194.in-addr.arpa.



+9921 Profil

icon Re: Problem sa konstruktorom kod nasledjivanja20.07.2007. u 10:52 - pre 176 meseci
Kao prvo moraš da shvatiš da jedan objekat klase A nikako ne može da "postane" objekat klase B. Objekat je ono šta jeste, tj. ono kakav je sagrađen.

Ali, ono što omogućava nasleđivanje je: da ako klasa "organizator" nasleđuje klasu "dežurni" ti uvek možeš objekat klase "organizator" da tretiraš kao "dežurni". Jer on ti i jeste. Dakle, ne može da "nestane" i da "ceo pređe u podređenu klasu".

Dakle, ako klasa "mačka" nasleđuje klasu "životinja", onda će objekat mojaMačka uvek imati sve atribude i metode nadređene klase životinja, tj. nikad u mojojMački neće nestati atributi životinje. To su osnove nasleđivanja.
OTPOR blokadi ulica, OTPOR blokiranom Beogradu, OTPOR blokiranoj Srbiji
 
Odgovor na temu

miltes
Novi Sad

Član broj: 151901
Poruke: 13
*.ns.ac.yu.



Profil

icon Re: Problem sa konstruktorom kod nasledjivanja20.07.2007. u 11:55 - pre 176 meseci
Citat:
aleksandarpopov: Pa ne znam da li ce ti ovo pomoci, ali mozes da deklarises objekat kao bazna klasa a da je on u stvari referenca na izvedenu klasu.

Dezurni o = new Organizator();

Posle mozes da kastujes i o u izvedenu klasu (valda moze ovo i u Javi, ja sam C# programer). Da li ti ovako nesto radi posao?


To moze i u javi, ali mi ne resava problem, zato sto (aj da se raspricam...) Radi se o sistemu za evidenciju dezurstava asistenata na ispitima, pa tu imam dezurne koji samo dezuraju i organizatore koji isto mogu da dezuraju, ali mogu i da organizuju dezuranje na ispitu iz PREDMETA koji im je neki admin dodelio... Kada neki admin sistema kreira dezurnog kao korisnika, on to moze biti i pola godine i duze i uvek, e onda (ako se javi potreba) admin moze tom DEZURNOM da dodeli predmet iz kojeg on konkretno moze da organizuje neke ispite. On naravno jeste i dalje dezurni i ima sve funkcionalnosti dezurnog (to je naravno jasno...), ali on sada pripada i klasi Organizator. Bitno: Moram paziti da reference koje su pokazivale na tog dezurnog sada isto pokazuju na tog organizatora...
Ne znam dali sam bio jasan... Problem je poprilici...... Mislim da mi treba neki poseban konstruktor u klasi Organizator, ali ne mogu da provalim...
Hvala!


Milan
 
Odgovor na temu

milton

Član broj: 121508
Poruke: 43
*.fastres.net.

Sajt: www.complus.it


Profil

icon Re: Problem sa konstruktorom kod nasledjivanja20.07.2007. u 13:30 - pre 176 meseci
Probaj da ih ne delis na dve klase/objekta...
s'obzirom da su i Dezurni i Organizator u principu istih osobina sa dodatkom za Organizatora koji ima posebnu ulogu.
Jedna od ideja je da recimo u klasi Dezurni ubacis promenljivu "organizator" koja ce biti boolean
i u slucaju da je promenljiva organizator=true definisi mu potrebne parametre/osobine za Organizatora,
a ako je false onda je Dezurni...
 
Odgovor na temu

miltes
Novi Sad

Član broj: 151901
Poruke: 13
*.ns.ac.yu.



Profil

icon Re: Problem sa konstruktorom kod nasledjivanja20.07.2007. u 15:00 - pre 176 meseci
Citat:
milton: Probaj da ih ne delis na dve klase/objekta...
s'obzirom da su i Dezurni i Organizator u principu istih osobina sa dodatkom za Organizatora koji ima posebnu ulogu.
Jedna od ideja je da recimo u klasi Dezurni ubacis promenljivu "organizator" koja ce biti boolean
i u slucaju da je promenljiva organizator=true definisi mu potrebne parametre/osobine za Organizatora,
a ako je false onda je Dezurni...

Tako nesto i ja mislim da je ok resenje, mada ne bih da menjam model! A i kasnije posto cu imati dosta posla i sa dezurnim i sa organizatorom, uvek cu morati da imam if...else petlju da bih znao koji je koji...
Ako je to "najbezbolnije" resenje OK. A ako neko zna neko drugo... neka pise...
HVALA!
Milan
 
Odgovor na temu

rj444
Radomir Jakovljevic
Beograd

Član broj: 48212
Poruke: 354
*.ehv.campus.philips.com.



Profil

icon Re: Problem sa konstruktorom kod nasledjivanja20.07.2007. u 17:36 - pre 176 meseci
Ovo je klasican primer za primenu interfejsa i razlog za njihovo postojanje o OO jezicima.

Znaci imao bi interfejse: IDezurni i IOrganizator u kojima bi deklarisao metode koje ti trebaju.
Onda u tvojim vec definisanim klasama Dezurni i Organizator stavis da implementiraju interfejse koje treba (Dezurni samo IDezurni, a Organizator oba).

Ovim neces morati mnogo da menjas dizajn. Samo treba da stavis da klase impl. interfejse i da imena metoda u interfejsima stavis da odgovaraju onima koje si vece naveo u klasama.

Objekat Dezurni ces koristiti samo preko promenljive tipa IDezurni, a Organizator preko neke promenljive tipa IDezurni ili IOrganizator zavisno od toga koja mu je uloga u tom trenutku. Tako si postigao da je Dezurni uvek samo Dezurni, a da je Organizator i jedno i drugo zavisno od potrebe, kao sto i jeste u realnosti.

@milton:
Resenje koje si naveo bi funkcionisalo, ali uopste nije u duhu OO jezika i ne treba ga primenjivati. Npr sta se desava ako treba softver da se izmeni jer je Organizator dobio zaduzenje i da pregleda ispitne zadatke?

Pozdrav,
Rade
 
Odgovor na temu

Au197/79
Zlatan Kadragić
Minhen

Član broj: 3556
Poruke: 772
*.adsl.beotel.net.

Sajt: aurelije.blogspot.com


+47 Profil

icon Re: Problem sa konstruktorom kod nasledjivanja20.07.2007. u 18:24 - pre 176 meseci
A što ne bi probao neki patern, tipa dekorator ili adapter?
Bolje džaba ležat nego džaba radit.
 
Odgovor na temu

gosha
Zemun

Član broj: 2384
Poruke: 589
89.216.195.*



+40 Profil

icon Re: Problem sa konstruktorom kod nasledjivanja21.07.2007. u 08:42 - pre 176 meseci
Problem je u tome sto je zanemarena jedna zajednicka klasa, a to je Asistent. Iz nje treba da budu izvedene i Dezurni i Organizator.

To je jedino pravo resenje jer sva ostala dupliraju zajednicki kod, koji bi se nalazio u klasi Asistent.

Poz. Gosha
JokeJunky :)

Mrzim sublimirane marketinske poruke.
 
Odgovor na temu

miltes
Novi Sad

Član broj: 151901
Poruke: 13
*.ns.ac.yu.



Profil

icon Re: Problem sa konstruktorom kod nasledjivanja21.07.2007. u 14:47 - pre 176 meseci
Citat:
rj444: Objekat Dezurni ces koristiti samo preko promenljive tipa IDezurni, a Organizator preko neke promenljive tipa IDezurni ili IOrganizator zavisno od toga koja mu je uloga u tom trenutku. Tako si postigao da je Dezurni uvek samo Dezurni, a da je Organizator i jedno i drugo zavisno od potrebe, kao sto i jeste u realnosti.

Nije mi bas jasno kako cu objekat Dezurni koristiti preko promenjljive tipa IDezurni... a ni za Organizatora... Ako neko ima neki primer, ili "parce" koda bio bih mu veoma zahvalan!

Citat:
gosha: Problem je u tome sto je zanemarena jedna zajednicka klasa, a to je Asistent. Iz nje treba da budu izvedene i Dezurni i Organizator.

To je jedino pravo resenje jer sva ostala dupliraju zajednicki kod, koji bi se nalazio u klasi Asistent.

Poz. Gosha
Ja imam klasu KorisnickiNalog koju nasledjuje Dezurni, a Dezurnog nasledjuje Organizator... Ali opet ne vidim kako da kreiram objekat Organizator, od nekog "starog" Dezurnog...
Hvala!
Pozdrav!
Milan
 
Odgovor na temu

gosha
Zemun

Član broj: 2384
Poruke: 589
89.216.195.*



+40 Profil

icon Re: Problem sa konstruktorom kod nasledjivanja21.07.2007. u 15:21 - pre 176 meseci
To ti je greska. Klasi korisnicki nalog ne bi trebalo da nasledjuje nego da poseduje.

Kada radis nasledidjvanje jednostavno se zapitaj: Da li je dezurni korisnicki nalog ?

Vidis da to izgleda smesno. A na pitanje: Da li je dezurni asistent ?
Dobijas lep odgovor :)

Da li Asistent poseduje KorisnickiNalog ? Da


Znaci tvoja hijerarhia bi trebalo da bude:

Klasa: KorisnickiNalog
Klasa: Asistent poseduje KorisnickiNalog
Klasa: Dezurni nasledjuje Asistent
Klasa: Organizator nasledjuje Asistent

Ne vidim u kom delu programa bi Asistent morao u istom tenutku da dezura i ogranizuje. To mi malo nije jasno.
Sada kad malo razmislim mislim da je greska u postavci.

KorisnickiNalog moze biti obican i sa privilegijama organizovanja.
Jer time sto neki admin u sistemu dozvoli Asistentu da menja raspored dezurstava on mu je samo promenio privilegiju u korisnickom nalogu.

Asistent poseduje KorisnickiNalog
Dezurstvo poseduje Asistent, Predmet, Organizator(ali je tip Asistent) ...
Dezurstva (kolekcija objekata Dezurstvo sa metodama DodajDezurstvo u kojoj ces proveravati da li Asistent ima pravo da to radi)

Nekako mi ovo deluje jednostavnije i prikladnije za sistem koji pravis.

Poz. Gosha





[Ovu poruku je menjao gosha dana 21.07.2007. u 16:42 GMT+1]

[Ovu poruku je menjao gosha dana 21.07.2007. u 16:42 GMT+1]
JokeJunky :)

Mrzim sublimirane marketinske poruke.
 
Odgovor na temu

miltes
Novi Sad

Član broj: 151901
Poruke: 13
*.ns.ac.yu.



Profil

icon Re: Problem sa konstruktorom kod nasledjivanja21.07.2007. u 15:57 - pre 176 meseci
Mislim da si tu u pravu...
Ali onda mi organizator nece biti i dezurni, zar ne? Ili to mogu resiti preko kardinalnosti... Pa da, i onda jednom asistentu koji je, recimo i dezurni i organizator prosto delim poslove u zavisnosti sta radi, tj. kao koja uloga u sistemu... Jel razmisljam u dobrom pravcu...?:)
Ono sa interfejsima isprobavam, ali nemam bas iskustva sa radom sa interfejsima, pa ne mogu da "izguram" do kraja...
Pozdrav!
Milan
Milan
 
Odgovor na temu

gosha
Zemun

Član broj: 2384
Poruke: 589
89.216.195.*



+40 Profil

icon Re: Problem sa konstruktorom kod nasledjivanja22.07.2007. u 09:31 - pre 176 meseci
Ovde pricam o prvom nacinu:

Zasto organizator mora da bude i dezurni ?
Znaci asistent je dezurni samo za vreme polaganja ispita i ne "unapredjuju" se Dezurni u organizatora nego Asistent.
Tako da se osobine te dve klase uopste ne preklapaju. Zato sam ti i napisao da je bolje resenje da budu izvedene iz klase Asistent.


Ovde pricam o drugom nacinu:
Probaj na problematiku da gledas i na drugi nacin. Znaci ne postoje Dezurni i Organizator nego postoji samo Asistent koji preduzima radnje Dezuraj i Organizuj. Te radnje i ostale koje pripadaju tim grupama odvojis u posebnu klasu na primer "RasporedDezurstava".


Sta da procitas
"Casting Objects", "Interfaces", "Inheritance"

Nekako sam stekao utisak da nisi savladao teoriju pa sada imas problem u praksi. Moras razumeti ove koncepte OOP-a da bi mogao valjano da resis problem koji imas.

Ako ne budes razumeo teoriju pitaj konkretno sta ti nije jasno. Takodje bi nam pomoglo kada bi smo znali kako si ti zamislio ceo sistem, a ne samo delic Asistent, Organizator, Dezurni.


Poz. Gosha


PS: Ono oko uloge u sistemu si dobro razumeo. Znaci u odredjenim delovima programa ce ti trebati Dezurni, a u odredjenim Organizator. Nemas potrebe za Dezurnim koji je Organizator.
JokeJunky :)

Mrzim sublimirane marketinske poruke.
 
Odgovor na temu

miltes
Novi Sad

Član broj: 151901
Poruke: 13
*.ns.ac.yu.



Profil

icon Re: Problem sa konstruktorom kod nasledjivanja22.07.2007. u 16:12 - pre 176 meseci
U pravu si da nemam bas iskustva u svemu ovome, ali uci se polako...:-) HVALA na savetima!

Citat:
gosha: Takodje bi nam pomoglo kada bi smo znali kako si ti zamislio ceo sistem, a ne samo delic Asistent, Organizator, Dezurni.

Radim na sistemu za evidenciju i organizaciju ispita na fakultetu. Organizator pored sto ima sve sto i dezurni (kalendar, poruke...), on moze i da organizuje ispit, na kojem je on skoro uvek i dezurni, jer je to njegov ispit i belezi mu se dezurstvo i na njemu...
Osnovna biznis logika ovde ce biti ustvari u komuniciranju izmedju dezurnih i organizatora (misli se na kada Organizator kreira ispit, on tada poziva "potencijalne" Dezurne, dopisuju se "predefinisano" i koji je od tih dezurnih slobodan u tom terminu ispita, on se poziva da dezura...). Nadam se da sam malo pojasnio...
I sada iz toga (te komunikacije, gde imam klase Dezurni, Ispit, izmedju njih asocijativnu klasu Poziv, za koju je dalje vezana klasa StatusPoziva) crtam dijagram kolaboracije... Ako neko ima neki slican primer, i ako mu nije problem, neka mi posalje, jer ja sam prvi put sada nacrtao jedan dijagram kolaboracije, pa uporedjivanje sa nekim nije na odmet:-)... Hvala!
Milan
 
Odgovor na temu

chipi
Marko Dragoljevic
Novi Beograd

Član broj: 9821
Poruke: 8
62.215.3.*



Profil

icon Re: Problem sa konstruktorom kod nasledjivanja27.07.2007. u 08:06 - pre 176 meseci
U duhu velikih sistema (Portala pre svega) to bi izgledalo ovako:

Imao bi klasi Asistent koja bi imala role (pa sad koje god, role bi se drzale u roles tabeli i mogle bi i naknadno da se dodaju da bi sistem mogao da se prosiruje sa funkcionalnostima).

U stvari svaki User bi trebao da ima role, a Asistent bi bio specifican User.

Po meni to ne bi trebalo razmatrati kao OO problem vec kao cisto funkcionalni problem.

Pozz
 
Odgovor na temu

[es] :: Java :: Problem sa konstruktorom kod nasledjivanja

[ Pregleda: 3713 | Odgovora: 14 ] > FB > Twit

Postavi temu Odgovori

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