Cu 1. Xy dng lp MyException gm cc thuc tnh v phng thc nh hnh trang bn, bit rng lp MyException c: a. 3 thuc tnh: reason ch l do xy ra ngoi l, context ch ng cnh xy ra ngoi l (xy ra u, thng tin v ni xy ra ngoi l) v info l thng tin thm cho ngoi l. b. 4 hng tnh c gi tr nh trong hnh v. c. Vit cc phng thc set v get cho cc thuc tnh reason, context v info; ch phng thc setReason(String reasonType) ty thuc vo tham s reasonType truyn vo m thit lp cho thuc tnh reason cc gi tr tng ng nh sau: i. Nu reasonType c gi tr l null th reason c thit lp l Null pointer exception. ii. Nu reasonType c gi tr l hng EXIST th reason c thit lp l The id of the item youve entered is already existed! iii. Nu reasonType c gi tr l hng NOT_EXIST th reason c thit lp l The item you want to update is not existed!. iv. Nu reasonType c gi tr l hng INVALID th reason c thit lp l The item youve entered is not valid!. v. Nu reasonType c gi tr l hng NO_ITEM th reason c thit lp l There is no item!. vi. Nu reasonType c gi tr l hng NOT_EMPTY th reason c thit lp l The id of the item youve entered can not be empty!. d. Phng thc getMessage() tr v tt c cc thng tin ca ngoi l , gi tr tr v c dng: Reason: <gi tr ca thuc tnh reason>; \nContext: <gi tr ca thuc tnh>; \nAdditional Info: <gi tr ca thuc tnh info>. Ch xt cc trng cc thuc tnh null hoc c gi tr th khng cn a vo gi tr tr v. e. Phng thc toString() tr v mt xu gm: Tn lp ca i tng hin ti, du : v gi tr ca getMessage()
f. Vit cc phng thc khi to nh trong hnh v, ch : i. Cc phng thc khi to s gi phng thc khi to ca lp cha truyn cc thng tin tng ng bao gm message (ging nh kt qu ca phng thc getMessage()) v cause (nu c). ii. Phng thc MyException(Exception cause, String context) thit lp cho cc thuc tnh reason v info cho i tng ngoi l hin ti t i tng cause (nu cause l mt i tng ca lp MyException). Cu 2. Vit m ngun cho lp Student v StudentClass nh hnh v bit rng: a. Vit cc phng thc set, get cn thit cho 2 lp Student v StudentClass. b. Cc phng thc c throws ra ngoi l MyException th cn c x l trong m ngun tng ng vi cc reason lit k trong Bi 1 (nu c). Ch : i. Kim tra tnh null ca cc i tng truyn vo throw ra nhng ngoi l c thng tin tng ng. ii. M ca sinh vin trong tp hp phi l duy nht, ko cho php c 2 sinh vin c cng m s. iii. score ca sinh vin phi c gi tr nm trong on [0,4]. Nu gi tr ny c cp nht khng tha mn th throw ra ngoi l vi thng tin tng ng.
c. Mi quan h gia Student v StudentClass c ci t bng mt tp hp, khng c dng mng. d. Phng thc add(Student) thm sinh vin vo cui tp hp. Nu sinh vin thm vo c m s ging vi sinh vin c trong tp hp, throw ra ngoi l vi cc thng tin tng ng. e. Phng thc add(int index, Student student) thm student vo v tr c ch s l index. Nu sinh vin thm vo c m s ging vi sinh vin c trong tp hp, throw ra ngoi l vi cc thng tin tng ng. f. Phng thc update(Student student) tm kim student (theo m) c trong tp hp, nu thy th cp nht cc thng tin cn li vo sinh vin va tm thy, nu khng thy th throw ra ngoi l vi cc thng tin tng ng. g. Phng thc remove() xa sinh vin cui cng trong tp hp (mi thm vo nht) v tr v sinh vin va xa. StudentClass
* h. Phng thc remove(Student student) tm kim student trong tp hp v xa sinh vin khi tp hp. Nu khng tm thy th throw ra ngoi l vi thng tin tng ng. i. Phng thc remove(int index) xa sinh vin c ch s l index khi tp hp, tr v sinh vin va xa. Nu khng tm thy sinh vin c ch s a vo th throw ra ngoi l vi thng tin tng ng. j. Phng thc getDetail() ca lp Student tr v thng tin chi tit v sinh vin . Phng thc getDetail() ca lp StudentClass tr v thng tin chi tit ca lp cng cc thng tin chi tit ca sinh vin trong lp . k. Vit lp Test trong to cc i tng ca lp Student v StudentClass; s dng cc i tng trong vic gi cc phng thc vit trong cc phn trn minh ha cho vic bt v x l ngoi l.