NTU-Exam 板


LINE

課程名稱︰物件導向程式設計 課程性質︰必修 課程教師︰林軒田 開課學院:電資學院 開課系所︰資訊工程學系 考試日期(年月日)︰2009 4/21 考試時限(分鐘):180 是否需發放獎勵金:是 (如未明確表示,則不予發放) 試題 : This is a closed-book exam. Any form of cheating will not be tolerated. Students can get zero scores and/or fail the class and/or be kicked out of school and/or receive other punishments for those kinds of misconducts. Both English and Traditional Chinese(if suited) are allowed for answering the questions. We do not accept any other languages. 1.Let's Go Students(20%) class Student{ static final int CSIE = 9020; static final int IM = 7050; int dept; int ID; String name; public Student(int ID) { this.ID = ID; } public static Student new_CSIE_Student(int ID){ Student s = new Student(ID); s.dept = CSIE; return s; } public void show(){ System.out.print(dept); System.out.print(",︼"); System.out.print(ID); System.out.print(",︺") System.out.println(name); } } Please wirte down the output when the /* CODE */ part is replaced by the following lines (respectively for each subproblem). If you think there is a compile error, white "compile error" or "hahaha." If you think there is a run-time error (exception), write down "run-time error" or "ohohoh." (1) System.out.println(Student.CSIE); (2) System.out.println(Student.ID); (3) System.out.println((new Student()).name); (4) System.out println((nes Student(54)).dept); (5) Student s; s.show(); (6) Student s = new Student(54); s.show(); (7) s1.show(); (8) s2.show(); (9) Student s = Student.new_CSIE_Student(62); s.name = "Luc"; s.show(); (10) Student s = null; System.out.println(s.IM); 2. Object Lifecycle(20%) Please answer the questions under//. You can assume that there is no compile nor run-time errors, and the JVM runs normally. class Person{ static int count = 0; String name; Person best_friend; public Person(String name){ this.name = name; count++; } protected void finalize() throws Throwable { count--; } } public class PersonDemo{ public static void main(String[] argv){ Person.count = 0; for(int i = 0; i < 100; i++){ Person p = new Person("" + i); } //(1): the maximum possible value of count //(2): the minimum possible value of count //Next, assume that Person.count is at its minimum possible value Person.count = 0; Person q = null; for(int i = 0; i<100; i++){ Person p = new Person("" + i); q=p; } //(3): the maximum possible value of count //(4): the minumum possible value of count //Next, assume that Person.count is at its minimum possible value Person.count = 0; Person r = null; for(int i = 0; i < 100; i++){ Person p = new Person("" + i); p.best_friend = r; r=p; } //(5): the maximum possible value of count //(6): the minimum possible value of count //Next, assume that Person.count is at its minimum possible value Person.count = 0; Person george = new Person("George"); george.best_friend = new Person("Mary"); george.best_friend.best_friend = george; //(7): the maximum possible value of count //(8): the minimum possible value of count //Next, assume that Person.count is at its minimum possible value //Note: Person.count is not reset to 0!!! Person mary = george.best_friend; Person bob = new Person("Bob"); bob.best_friend = new Person("Mary"); mary.best_friend = george; bob.best_friend = george.best_friend; //(9): the maximum possible value of count //(10): the minimum possible value of count } } 3.Method Invocation(20%) Assume that OOPUtill.is_prime(n) returns whether the integer n is a prime (as a boolean true or false), Please answer the question under //. You can assume that there is no compile nor run-time errors, and the JVM runs normally. class CrazyPrime{ static final int MAXN = 20; static final CrazyPrime [] result = new CrazyPrime[MAXN]; int value; static CrazyPrime compute(int n, int level){ //Let's assume that 0<= n <= MAXN level++; System.out.print("l"); System.out.print(level); System.out.print("︼); System.out.print("n"); System.out.print(n); System.out.print("︺"); int res = 0; if (result[n] == null){ if (n <= 2){ res = 1; } else if (OOPUtill.is_prime(n)){ res = CrazyPrime.compute((n-1)/2, level).value; } else{ res = CrazyPrime.compute(n-1, level).value; } result[n] = new CrazyPrime(); result[n].value = res; } System.out.print("r"); System.out.print(result[n].value); System.out.print("︺"); return result[n]; } } public class CrazyPrimeDemo{ public static void main(String[] argv){ CrazyPrime c2 = CrazyPrime.compute(2, 0); System.out.println(""); //(1): Write down the output before the new line CrazyPrime c3 = CrazyPrime.compute(3, 0); System.out.println(""); //(2): Write down the output before the new line CrazyPrime c6 = CrazyPrime.compute(6, 0); System.out.println(""); //(3): Write down the output before the new line CrazyPrime c7 = CrazyPrime.compute(7, 0); System.out.println(""); //(4): Write down the output before the new line c7.compute(5, 0); System.out.println(""); //(5): Write down the output before the new line } } 4.Encapsulation(20%) /* SpokesPerson.java */ package prototype; public class SpokesPerson{ private String story; public void tell_public_story(){ } void tell_default_story(){ } protected void tell_protected_story(){ } private void tell_private_story(){ } private void talk_to_myself(){ } /* CODE1 */ } } When the /* CODE1 */ part is replaced by the following lines (respectively for each subproblem), if you think there is a compile error, please write "compile error" or "hahaha." Otherwise write "safe." (1) story = "POO︼is︼the︼best︼BBS."; (2) tell_private_story(); (3) tell_public_story(); (4) tell_protected_story(); (5) tell_default_story(); /* HeadSpokesPerson.java */ package extensions; class HeadSpokesPerson extends prototype.SpokesPerson{ public void talk_to_media(){ /* CODE2 */ } } Now, consider another java source file above. When the /* CODE2 */ part is replaced by the following lines (respectively for each subproblem), if you think there is a compile error, please write "compile error" or "hahaha." Otherwise write "safe." (6) story = "POO︼is︼the︼best︼BBS."; (7) talk_to_myself(); (8) tell_public_story(); (9) tell_protected_story(); (10) tell_default_story(); 5 Inheritance(20%) class BBSBoardSystem { }; class BBS{ public BBSBoardSystem board_system; int ip; } class Casino{ private in n_games; } class PTTCasino extends Casino { }; class POOCasino extends PTTCasino { }; class PTTBBS extends BBS{ public PTTCasino casino; } class POOBBS extends BBS{ private POOCasino casino; } class NetBBS extends BBS{ PTTBBS ptt; POOBBS poo; } class PPPBBS extends POOBBS{ } If you know that in Java, an Object-type instance occupies B bytes of space for its instance variables, an integer-type variable occupies 4 bytes, and a reference-type variable occupies R bytes. How many bytes does an instance of each of the following type occupy (at least)? (1) BBS (2) POOBBS (3) NetBBS (4) PTTCasino (5) BBSBoardSystem public class BBSDemo{ public static void main(String[] argv){ PTTBBS ptt1 = new PTTBBS(); PTTBBS ptt2 = new PTTBBS(); NetBBS net = new NetBBS(); BBS bbs = ptt2; net.ptt = ptt1; net.poo = new PPPBBS(); ptt1.casino = new POOCasino(); /* CODE */ } } Now, consider another java source file above. Please write down the output when the /* CODE */ part is replaced by the following lines (respectively for each subproblem). If you think there is a compile error ,write "compile error" or "hahaha." If you think there is a run-time error (exception), write down "run-time error" or "ohohoh." (6) System.out.println(ptt2 instanceof PTTBBS); (7) System.out.println(ptt1 instanceof NetBBs); (8) System.out.println(bbs instanceof POOBBS); (9) System.out.println(net.ptt.casino instanceof PTTCasino); (10) System.out.println(net.poo.casino instanceof POOCasino); --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.45.69.77
1F:推 andy74139 :已收錄至!! 06/30 10:50
※ 編輯: f28525 來自: 114.45.59.6 (07/02 11:37)







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:iOS站內搜尋

TOP