Domaci zadatak (pitanje za asistenta)
Poštovani,
U klasi SymbolTableBST.Obj bi se prepravkom konstruktora i metode toString()
dobilo elegantnije rešenje, a pošto prepravke nisu dozvoljene, moram da
pitam da li je sledeće urađeno namerno ili je u pitanju greška:
1.) Polje *name* klase Obj koje je tipa String se ne inicijalizuje ni u
jednom konstruktoru, pa ukoliko se to eksplicitno ne učini metoda
Obj.equals() ispaljuje NullPointerException. S obzirom na to da u klasi
TreeNode koja je superklasa klase Obj već postoji polje sa istim imenom, i
da se ono koristi kao ključ prilikom pretraživanja, mislim da je definisanje
polja *name* u klasi Obj suvišno.
2.) U metodi Obj.toString() postoji sledeći deo koda:
public String toString() {
// ....
BSTree *localTree = locals*;
// ...
for (Obj current = (Obj)BSTree.getMinimalKeyInSubtree(*localTree.root*);
current != null;
current = (Obj)BSTree.getSuccessor(current))
{
if (kind == Prog) sb.append("\n ");sb.append("[");
sb.append(current.toString());
sb.append("]");
}
//...
}
Mislim da bi ovde, pre ulaska u for petlju, trebalo proveriti da li je
localTree jednako null, da ne bi došlo do ispaljivanja izuzetka prilikom
pokušaja da se pristupi polju localTree.root, ili da se u konstruktoru polje
locals inicijalizuje praznim stablom. Ako sam dobro razumeo, polje localTree
neće biti null samo za metode i za glavni program, a u svim ostalim
slučajevima ono je null.
Unapred se zahvaljujem,
V. Pavlović
U klasi SymbolTableBST.Obj bi se prepravkom konstruktora i metode toString()
dobilo elegantnije rešenje, a pošto prepravke nisu dozvoljene, moram da
pitam da li je sledeće urađeno namerno ili je u pitanju greška:
1.) Polje *name* klase Obj koje je tipa String se ne inicijalizuje ni u
jednom konstruktoru, pa ukoliko se to eksplicitno ne učini metoda
Obj.equals() ispaljuje NullPointerException. S obzirom na to da u klasi
TreeNode koja je superklasa klase Obj već postoji polje sa istim imenom, i
da se ono koristi kao ključ prilikom pretraživanja, mislim da je definisanje
polja *name* u klasi Obj suvišno.
2.) U metodi Obj.toString() postoji sledeći deo koda:
public String toString() {
// ....
BSTree *localTree = locals*;
// ...
for (Obj current = (Obj)BSTree.getMinimalKeyInSubtree(*localTree.root*);
current != null;
current = (Obj)BSTree.getSuccessor(current))
{
if (kind == Prog) sb.append("\n ");sb.append("[");
sb.append(current.toString());
sb.append("]");
}
//...
}
Mislim da bi ovde, pre ulaska u for petlju, trebalo proveriti da li je
localTree jednako null, da ne bi došlo do ispaljivanja izuzetka prilikom
pokušaja da se pristupi polju localTree.root, ili da se u konstruktoru polje
locals inicijalizuje praznim stablom. Ako sam dobro razumeo, polje localTree
neće biti null samo za metode i za glavni program, a u svim ostalim
slučajevima ono je null.
Unapred se zahvaljujem,
V. Pavlović
- Follow-Ups:
- Re: Domaci zadatak (pitanje za asistenta)
- From: "Nemanja Kojic @ ETF" <nemanja.kojic@etf.rs>
- Re: Domaci zadatak (pitanje za asistenta)
Previous by date: Re: Prijavljivanje za odbranu domaceg zadatka u januarskom roku 2010/2011.
Next by date: Re: Domaci zadatak (pitanje za asistenta)
Previous by thread: U terminu predavanja (10-12) 28.12.2010. bice odrzane vezbe Next by thread: Re: Domaci zadatak (pitanje za asistenta)
Previous by thread: U terminu predavanja (10-12) 28.12.2010. bice odrzane vezbe Next by thread: Re: Domaci zadatak (pitanje za asistenta)