«« ( Date ) »» // «« ( Thread ) »» // si4pp1 - 2010

Re: [ir4pp1] Domaci zadatak (pitanje za asistenta)

by Nemanja Kojic @ ETF
četvrtak, 23. decembar 2010 - 22:00.

Bacicu pogled da zadatu implementaciju ASAP, pa cu imati pravi odgovor.
Medjutim, ukoliko se u zadatoj implementaciji pojavi nekakva greska ("showstopper")
zbog koje dalji razvoj ne bi bio moguc, ispravite je, ali se trudite da to bude lokalizovano i jasno
odvojeno od izvornog koda zadate implementacije.

Zasad mozete da nastavite sa radom na nacin koji sam upravo opisao.

Pozdrav,
Nemanja

On 12/23/2010 9:12 PM, Vladimir Pavlovic wrote:
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ć