Pogovor:Izpitno vprašanje RAČ2PRA 5600

Iz MaFiRaWiki

Pozdravljeni!

- Popravila sem eno napakico, mislim, za tab.length sem dodala oklepajčke (tab.length()) --- Zadevo sem popravil nazaj. length je lastnost (in ne metoda) tabel --Matija Lokar 13:59, 12 februar 2007 (CET)

- Mi pa ni jasno, kje je logika, da v skladu, ko iščemo vrhnji element, vrnemo največje možno število, če je sklad prazen. Najbolj enostavno je, da ne vrnemo nič ali javimo napako, ta MAX_VALUE pa samo zakomplicira vse skupaj se mi zdi :-)

public int vrhR() // vrne rdec vrh  {  
     if(!prazenR())  {
           return tab[kamR - 1];   
    }      
 return Integer.MAX_VALUE; // ce je prazen vrne Integer.MAX_VALUE 
 } 

--- Gre zato, da včasih študenti še niso slišali nič o izjemah, metanju napak in podobno. Ta Integer.MAX_VALUE je pač oznaka, da je bilo nekaj narobe - da metoda ni smiselna. Zagotovo je veliko bolj prav, da bi namesto return Integer.MAX_VALUE napisali throw new Exception("OPis napake"). --Matija Lokar 13:59, 12 februar 2007 (CET)

- Pri 2.konstruktorju smo zapisali: tab = new int[n]; medtem ko imam v predavanjih (pri pripravi sklada) zapisano, da Java tega ne dovoli in da je treva napisati: tab = (T[]) new Object[n]; Kaj je prav in kaj ne? --- To smo morali napisati, ker je T objekt! In pri objektih ne moremo tako "čarati". Tukaj pa imamo opraviti s skladom, v katerem hranimo cela števila (ni narejen generično!). Zato je tab = new int[n] povsem v redu! Tako kot bi bilo OK, če bi npr. želeli narediti dvojni sklad v katerem hranimo npr. Zajce. Takrat bi pač napisali tab = new Zajec[n] (in seveda prej pri deklaraciji komponent Zajec[] tab). Tisto "kompliciranje" z tab = (T[]) new Object[n] je zaradi tega, ker smo želeli narediti generični sklad - torej takega, da šele takrat, ko sklad ustvarimo povemo, za kakšen tip podatkov, ki jih hranimo v tem skladu, gre (za Ovce, Zajce, integer, String, ...)! --Matija Lokar 13:59, 12 februar 2007 (CET)

Hvala, LP,--Skalan 21:28, 9 februar 2007 (CET)

Osebna orodja