«« ( Date ) »» // «« ( Thread ) »» // ri4pp - 2006

Re: Klasa Class

by Jovan Popovic
sreda, 24. maj 2006 - 20:06.

Da, treba ako to koristite da utvrdite da li je to referentni tip. Drugi
nacin je da koristite instanceof Class posto ako je tip value tip simbol
je instanca klase Struct. Mozete da koristite symbol.type.isA(Obj.CLASS)
da utvrdite da li je tip klasni.

U SSW implementaciji je ova informacija stavljena u polje kind klase
Struct posto su definisane vrste Arr, Class,... koje se dodeljuju
promenljvoj kind.

Sto se tice vrsta simbola (Obj.kind) mozete da promenite konstante
definisane u klasi Obj (ili Iobj). Ja sam stavio neke vrste koje vam nece
trebati ( (jedna od STRUCT ili TYPE) i PACKAGE).
Postoji jedna razlika izmedju SSw implementacije i klase obj koju sam vam
ja dao. U SSW implementaciji parametri, globalne i lokalne promenljive
imaju istu vrstu Obj.Var a svaki Obj simbol ima promenljivu level koja
moze da ima vrednosti 0, 1 ili 2 tako da je :

kind=Var i level =0 za globalne promenljive
kind=Var , level=1 za parametre i polja klasa
kind=Var, level=2 za lokalne promenljive

level se razlikuje za parametre i lokalne promenljive da bi samo pomocu
simbola koji imaju level=1 utvrditi

U klasama koje sam vam ja dao definisao sam posebnu vrstu
STATIC,PARAM,LOCAL,FIELD sa svaku vrstu simbola da ne bih koristio i
level. vi mozete da koristite ili prvi ili drugi pristup.

Ako menjate vrste Obj-a u implementaciji koju sam vam dao pazite da se
razlicite vrste razlikuju po bitovima tj. da budu 1,2,4,8,16,32 itd. Ako
ovo ne koristite ne mozete da koristite metodu isA(int) posto kada ona
proveri da li je simbol neke vrste npr. sym.isA(Obj.FIELD) ona ispituje da
li je postavljen bit field u promelnjivoj kind. ako ne stavite da se svi
tipovi razlikuju po bitovima ne koristite isA() funkciju nego direktno
koristite if(symbol.kind==Obj.FIELD) umesto if(symbol.isA(Obj.FIELD))

Na sledecem casu vezbi cemo imati konsultacije o domacem.

Pozdrav,
Jovan

> Zar ne bi trebali redefinisati metodu IsReferenceType u ovoj klasi da
> vraca
> true?
>
>