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灯, 水草

请输入看板名称,例如:Soft_Job站内搜寻

TOP