2009下半年软件设计师考试真题及答案-下午卷.doc

上传人:雁** 文档编号:14570428 上传时间:2022-05-05 格式:DOC 页数:19 大小:3.18MB
返回 下载 相关 举报
2009下半年软件设计师考试真题及答案-下午卷.doc_第1页
第1页 / 共19页
2009下半年软件设计师考试真题及答案-下午卷.doc_第2页
第2页 / 共19页
点击查看更多>>
资源描述

《2009下半年软件设计师考试真题及答案-下午卷.doc》由会员分享,可在线阅读,更多相关《2009下半年软件设计师考试真题及答案-下午卷.doc(19页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、2009下半年软件设计师考试真题及答案-下午卷试题一阅读以下说明和数据流图,回答问题1至问题4。 说明 现准备为某银行开发一个信用卡管理系统CCMS,该系统的基本功能为: 1信用卡申请。非信用卡客户填写信用卡申请表,说明所要申请的信用卡类型及申请者的基本信息,提交CCMS。如果信用卡申请被银行接受,CCMS将记录该客户的基本信息,并发送确认函给该客户,告知客户信用卡的有效期及信贷限额:否则该客户将会收到一封拒绝函。非信用卡客户收到确认函后成为信用卡客户。 2信用卡激活。信用卡客户向CCMS提交激活请求,用信用卡号和密码激活该信用卡。激活操作结束后,CCMS将激活通知发送给客户,告知客户其信用卡

2、是否被成功激活。 3信用卡客户信息管理。信用卡客户的个人信息可以在CCMS中进行在线管理。每位信用卡客户可以在线查询和修改个人信息。 4交易信息查询。信用卡客户使用信用卡进行的每一笔交易都会记录在CCMS中。信用卡客户可以通过CCMS查询并核实其交易信息(包括信用卡交易记录及交易额)。 下图(a)和(b)分别给出了该系统的顶层数据流图和0层数据流图的初稿。1、根据说明,将图(a)中的E1E3填充完整。2、图(a)中缺少三条数据流,根据说明,分别指出这三条数据流的起点和终点。(注:数据流的起点和终点均采用图中的符号和描述)3、图(b)中有两条数据流是错误的,请指出这两条数据流的名称,并改正。(注

3、:数据流的起点和终点均采用图中的符号和描述)4、根据说明,将图(b)中P1P4的处理名称填充完整。试题二阅读下列说明,回答问题1至问题3。 说明 某公司拟开发一多用户电子邮件客户端系统,部分功能的初步需求分析结果如下: 5 邮件客户端系统支持多个用户,用户信息主要包括用户名和用户密码,且系统中的用户名不可重复。 6 邮件账号信息包括邮件地址及其相应的密码,一个用户可以拥有多个邮件地址 (如userl)。 7 一个用户可拥有一个地址簿,地址簿信息包括联系人编号、姓名、电话、单位地址、邮件地址1、邮件地址2、邮件地址3等信息。地址簿中一个联系人只能属于一个用户,且联系人编号唯一标识一个联系人。 8

4、 一个邮件账号可以含有多封邮件,一封邮件可以含有多个附件。邮件主要包括邮件号、发件人地址、收件人地址、邮件状态、邮件主题、邮件内容、发送时间、接收时间。其中,邮件号在整个系统内唯一标识一封邮件,邮件状态有已接收、待发送、已发送和已删除4种,分别表示邮件是属于收件箱、发件箱、已发送箱和废件箱。一封邮件可以发送给多个用户。附件信息主要包括附件号、附件文件名、附件大小。一个附件只属于一封邮件,附件号仅在一封邮件内唯一。5、根据以上说明设计的E-R图如下图所示,请指出地址簿与用户、电子邮件账号与邮件、邮件与附件之间的联系类型。 6、该邮件客户端系统的主要关系模式如下,请填补a.c.的空缺部分。 用户(

5、用户名,用户密码) 地址簿( a. ,联系人编号,姓名,电话,单位地址,邮件地址1,邮件地址2,邮件地址3) 邮件账号(邮件地址,邮件密码,用户名) 邮件( b. ,收件人地址,邮件状态,邮件主题,邮件内容,发送时间,接收时间) 附件( c. ,附件号,附件文件名,附件大小)7、(1) 请指出问题2中给出的地址簿、邮件和附件关系模式的主键,如果关系模式存在外键请指出。 (2) 附件属于弱实体吗?请用50字以内的文字说明原因。试题三阅读下列说明和UML图,回答问题1至问题4。 说明 某企业为了方便员工用餐,为餐厅开发了一个订餐系统(COS:Cafeteria Ordering System),企

6、业员工可通过企业内联网使用该系统。 企业的任何员工都可以查看菜单和今日特价。 系统的顾客是注册到系统的员工,可以订餐(如果未登录,需先登录)、注册工资支付、预约规律的订餐,在特殊情况下可以覆盖预订。 餐厅员工是特殊顾客,可以进行备餐、生成付费请求和请求送餐,其中对于注册工资支付的顾客生成付费请求并发送给工资系统。 菜单管理员是餐厅特定员工,可以管理菜单。 送餐员可以打印送餐说明,记录送餐信息(如送餐时间)以及记录收费(对于没有注册工资支付的顾客,由送餐员收取现金后记录)。 顾客订餐过程如下: 1顾客请求查看菜单: 2系统显示菜单和今日特价; 3顾客选菜; 4系统显示订单和价格; 5顾客确认订单

7、; 6系统显示可送餐时间; 7顾客指定送餐时间、地点和支付方式: 8系统确认接受订单,然后发送E-mail给顾客以确认订餐,同时发送相关订餐信息通知给餐厅员工。 系统采用面向对象方法开发,使用UML进行建模。系统的顶层用例图和一次订餐的活动图初稿分别如下图(a)和(b)所示。8、根据说明中的描述,给出图(a)中A1和A2所对应的参与者。9、根据说明中的描述,给出图(a)中缺少的四个用例及其所对应的参与者。10、根据说明中的描述,给出图(b)中(1)(4)处对应的活动名称或图形符号。11、指出图(a)中员工和顾客之间是什么关系,并解释该关系的内涵。 试题四阅读下列说明,回答问题1至问题2。 说明

8、 0-1背包问题可以描述为:有n个物品,对i=1,2,n,第i个物品价值为vi重量为wi(vi和wi非负数),背包容量为W(W为非负数),选择其中一些物品装入背包,使装入背包物品的总价值最大,即 且总重量不超过背包容量,即 W,其中, ,xi=0表示第i个物品不放入背包,xi=1表示第i个物品放入背包。12、用回溯法求解此0-1背包问题,请填充下面伪代码中(1)(4)处空缺。 回溯法是一种系统的搜索方法。在确定解空间后,回溯法从根结点开始,按照深度优先策略遍历解空间树,搜索满足约束条件的解。对每一个当前结点,若扩展该结点已经不满足约束条件,则不再继续扩展。为了进一步提高算法的搜索效率,往往需要

9、设计一个限界函数,判断并剪枝那些即使扩展了也不能得到最优解的结点。现在假设已经设计了BOUND(v,w,k,W函数,其中v、w、k和W分别表示当前已经获得的价值、当前背包的重量、已经确定是否选择的物品数和背包的总容量。对应于搜索树中的某个结点,该函数值表示确定了部分物品是否选择之后,对剩下的物品在满足约束条件的前提下进行选择可能获得的最大价值,若该价值小于等于当前已经得到的最优解,则该结点无需再扩展。 下面给出0-1背包问题的回溯算法伪代码。 函数参数说明如下: W:背包容量;n:物品个数;w:重量数组;v:价值数组;fw:获得最大价值时背包的重量;fp:背包获得的最大价值;X:问题的最优解。

10、 变量说明如下: cw:当前的背包重量;cp:当前获得的价值;k:当前考虑的物品编号;Y:当前已获得的部分解。 BKNAP(W,n,w,v,fw,fp,x) 1 cwcp0 2 (1) 3 fp-1 4 while true 5 while kn and cw+wk W do 6 (2) 7 cpcp十vk 8 Ykl 9 kk+1 10 if kn then 11 if fpcp then 12 fpcp 13 fwcw 14 kn 15 XY 16 else Y(k)0 17 while BOUND(cp,cw,k,W) fp do 18 while k0 and Y(k)1 do 19

11、(3) 20 if k=0 then return 21 Yk0 22 cwcw-wk 23 cpcp-vk 24 (4) 13、考虑下表所示的实例,假设有3个物品,背包容量为22。0-1 背包问题实例 物品1物品2物品3重量151010价值301817单位价值21.81.7 下图是根据上述算法构造的搜索树,其中结点的编号表示了搜索树生成的顺序,边上的数字1/0分别表示选择/不选择对应物品。除了根结点之外,每个左孩子结点旁边的上下两个数字分别表示当前背包的重量和已获得的价值,右孩子结点旁边的数字表示扩展了该结点后最多可能获得的价值。为获得最优解,应该选择物品 (5) ,获得的价值为 (6) 。

12、 对于上述实例,若采用穷举法搜索整个解空间,则搜索树的结点数为 (7) ,而用了上述回溯法,搜索树的结点数为 (8) 。试题五阅读下列说明和C补代码,将应填入 (n) 处的字句写在答题纸的对应栏内。 说明 现欲构造一文件/目录树,采用组合(Composite)设计模式来设计,得到的类图如下图所示: C+代码 #includelist #includeiostream #includestring using namespace std; class AbstractFile protected: string name; /文件或目录名称 public: void printName19cou

13、tname; /打印文件或目录名称 virtual void addChild(AbstractFile *file)=0; /给一个目录增加子目录或文件 virtual void removeChild(AbstractFile*file)=0; /删除一个目录的子目录或文件 virtual listAbstractFile*getChildren19=0; /获得一个目录的子目录或文件 ; class File:publiC AbstractFile public: File(string name) 14 =name; void addChild(AbstractFile *file)

14、return; void removeChild(AbstractFile*file) return; 15 getChildren19 return 16 ; ; class Folder:public AbstractFile private: listAbstractFile*childList; /存储子目录或文件 public: Folder(string name) 17 =name; void addChild(AbstractFile*file)childList.push_back(file); void removeChild(AbstractFile*file) chil

15、dList.remove(file); listAbstractFile*getChildren19return 18 ; ; void main19 /构造一个树形的文件/目录结构 AbstractFile*rootFolder=new Folder(c:); AbstractFile*compositeFolder=new Folder(compositel); AbstractFile*windowsFolder=new Folder(windows); AbstractFile*file=new File(TestComposite.java); rootFolder-addChild

16、(compositeFolder); rootFolder-addChild(windowsFolder); compositeFolder-addChild(file); 试题六阅读下列说明和Java代码,将应填入 (n) 处的字句写在答题纸的对应栏内。 说明 现欲构造一文件/目录树,采用组合(Composite)设计模式来设计,得到的类图如下图所示: Java代码 import java.util.ArrayLiSt; import java.util.List; 19 class AbstractFile protected String name; public void printN

17、ame24System.out.println(name); public abstract boolean addchild(AbstractFile file); public abstract boolean removeChild(AbstractFile file); public abstract ListAbstractFile getChildren24; Class File extends AbstractFile public File(String name) this.name=name; public boolean addchild(AbstractFile fi

18、le) return false; public boolean removeChild(AbstractFile file) return false; public ListAbstractFile getChildren24 return 20 ; Class Folder extends AbstractFile private List AbStractFile ChildList; public Folder(String name) this.name=name; this.ChildList = new ArrayLiStAbStractFile24; public boole

19、an addChild(AbstractFile file) return ChlldList.add (file); public booleau removeChild(AbstractFile file) return childList. reloove(file); public 21 AbstractFile getChildren24 return 22 ; public class Client public static void main(Stringargs) /构造一个树形的文件/目录结构 AbstractFile rootFolder=new Folder(c:);

20、AbstractFile compositeFolder=new Folder(composite); AbstractFile windowsFolder=new Folder(windows); AbstractFile file=new File(TestComposite.java); rootFolder.addChild(compositeFolder); rootFolder.addChild(windowsFolder); compositeFolder.addChild(file); /打印目录文件树 printTree(rootFolder); private static

21、 void printTree(AbstractFile ifile) ifile.printName24; ListAbstractFilechildren=ifile.getChildren24; if(children=null) return; for (AbstractFile file:children) 23 ; 该程序运行后输出结果为: C: composite TestComposite.java Windows试题七阅读以下说明和C程序,将应填入 (n) 处的字句写在答题纸的对应栏内。 说明 现有n(n1000)节火车车厢,顺序编号为1,2,3,n,按编号连续依次从A方向的

22、铁轨驶入,从B方向铁轨驶出,一旦车厢进入车站(Station)就不能再回到A方向的铁轨上:一旦车厢驶入B方向铁轨就不能再回到车站,如下图所示,其中Station为栈结构,初始为空且最多能停放1000节车厢。 下面的C程序判断能否从B方向驶出预先指定的车厢序列,程序中使用了栈类型 STACK,关于栈基本操作的函数原型说明如下: void InitStack(STACK*s):初始化栈 void Push(STACK *s,int e):将一个整数压栈,栈中元素数目增1 void Pop(STACK *s):栈顶元素出栈,栈中元素数目减1 int Top(STACK s):返回非空栈的栈顶元素值,

23、栈中元素数目不变 int IsEmpty(STACK s):若是空栈则返回1,否则返回0 C程序 #includestdio.h /*此处为栈类型及其基本操作的定义,省略*/ int main29 STACK station; int state1000; int n; /*车厢数*/ int begin,i,j,maxNo; /*maxNo为A端正待入栈的车厢编号*/ printf(请输入车厢数:); scanf(%d,&n); printf(请输入需要判断的车厢编号序列(以空格分隔):); if (n1) return-1; for(i=0;in;i+) /*读入需要驶出的车厢编号序列,存

24、入数组state*/ scanf(%d,&statei); 24 ;/*初始化栈*/ maxNo=1; for(i=0;in;)/*检查输出序列中的每个车厢号statei是否能从栈中获取*/ if( 25 )/*当栈不为空时*/ if(statei= =Top(station)/*栈顶车厢号等于被检查车厢号*/ printf(%d,Top(station); Pop(&station); i+; else if( 26 ) printf(errorn); return 1; else begin= 27 ; for(j=begin+1;j=statei;j+) Push(&station,j)

25、; else /*当栈为空时*/ begin=maxNo; for(j=begin;j=statei;j+) Push(&station,j); maxNo= 28 ; printf(OK); return 0; 答案:试题一1、E1:非信用卡客户 E2:信用卡客户 E3:银行解析 根据题目中的说明,可以很容易找到与CCMS系统进行信息交互的角色有非信用卡客户、信用卡客户以及银行。下面要做的事情是在上图(a)中找到对应的位置。 根据图(a)给出的输入和输出数据流,可知E1表示非信用卡客户;E2表示信用卡客户;E3表示银行。2、起 点 终 点名 称E1P0信用卡申请表E2P0激活请求P0或信用卡

26、管理系统CCMSE2信用卡交易信息解析 这道题目主要考查父图与子图的平衡问题。对照上图(a)和(b)可以发现,数据流“信用卡申请表”、“激活请求”、“信用卡交易信息”出现在图(b)中,却没有出现在图(a)中。下一步只要正确地标出这三条数据流的起点和终点就可以了。3、错误的数据流: 错误数据流名称是激活请求和信用卡申请表。 改正后的数据流:数据流名称改正后数据流起点改正后数据流终点激活请求E2P3信用卡申请表E1P4解析 数据流的错误主要有与错误的加工相连接、没有经过任何的加工、数据流方向错误等。在图(b)中,并没有出现任何的数据流没有经过加工,那错误就在于与数据流相连接的加工有问题或者数据流方

27、向错误。 这样,可以找两条有错误的数据流“激活请求”和“信用卡申请表”。从图(a)中可知,“激活请求”是从系统流向外部实体E2的,而在图(b)中,“激活请求”却出现在两个加工之间。数据流“信用卡申请表”是在问题2中补充找到的数据流,它应该从外部实体E1流向CCMS系统。4、P1:交易信息查询 P2:客户信息管理 P3:信用卡激活 P4:信用卡申请解析 这道题要求将图(b)中的加工补充完整。加工的名称在说明中已经明确给出了:信用卡申请、信用卡激活、信用卡客户信息管理以及交易信息查询。下一步需要根据图 (b)中给出的数据流关系将这4个加工对号入座即可。这样可以得到P1表示交易信息查询;P2表示信用

28、卡客户信息管理;P3表示信用卡激活;P4表示信用卡申请。 本题属于经典的考题,主要考查对DFD的理解。 试题二5、(1) 1 (2) 1 (3) m 或n或* (4) 1 (5) m 或n或*解析 两个实体模型之间的联系可以分为三类:一对一联系(1:1)、一对多联系(1:n)和多对多联系(m:n)。 根据题意,地址簿与用户之间应该是一个1:1的联系,空(1)应填1。电子邮件账号与邮件之间应该是一个1:m的联系,故空(2)和空(3)应分别填写1和m。邮件与附件之间应该是一个1:m的联系,故空(4)和空(5)应分别填写1和m。得到的E-R图如下图所示。 6、(a) 用户名 (b) 邮件号,发件人地

29、址 (c) 邮件号解析 (a) 根据题意可知邮件客户端系统支持多个用户,用户信息主要包括用户名和用户密码,且系统中的用户名不可重复,“用户名”可以作为用户关系模式主键。地址簿关系模式中与用户关系模式是一个1:1的联系,必须将任一方的主键加入另一方,以建立它们之间的联系,故空(a)处应填写“用户名”。 (b) 根据题意可知邮件号在整个系统内唯一标识一封邮件,故邮件关系模式必须有属性“邮件号”,另外一封邮件需要填写“发件人地址”,故空(b)处应填写“邮件号,发件人地址”。 (c) 根据题意可知邮件和附件是一个1:m的联系,按照E-R模型向关系模型的转换规则对于1:m的联系应将1端的主键并入多端,故

30、空(c)处应填写“邮件号”。7、(1) 关系模式主键外键地址簿联系人编号用户名邮件邮件号发件人地址或收件人地址附件邮件号,附件号邮件号(2) 附件属于弱实体,因为附件的存在必须以邮件的存在为前提,即附件总是依附于某邮件。解析 (1) 地址簿关系模式的主键为“联系人编号”,外键为“用户名”,因为“用户名”是参考用户关系模式的“用户名”主键。邮件关系模式的主键为“邮件号”,外键为“发件人地址”或“收件人地址”,因为当用户向其他人发邮件的时候,“发件人地址”是参考邮件账号关系模式的“邮件地址”的主键;当用户收邮件的时候,“收件人地址”是参考邮件账号关系模式的“邮件地址”的主键。附件关系模式的主键为“

31、邮件号,附件号”,外键为“邮件号”,因为该“邮件号”参考邮件关系模式的“邮件号”的主键。 (2) 附件属于弱实体,因为如果没有邮件,附件也就不存在。试题三8、A1:工资系统 A2:菜单管理员解析 识别参与者时,考查和系统交互的人员和外部系统。本题中,与系统交互的人员包括员工、注册到系统的员工(顾客)、餐厅员工、菜单管理员、送餐员以及工资系统。 由“菜单管理员是餐厅特定员工”以及图中A2和图中餐厅员工之间的“是一种”关系可知,A2为菜单管理员;图中还缺少描述中与工资系统的交互,由“并发送给工资系统”可知,A1为工资系统。9、用例名参与者查看当日特价员工注册工资支付顾客和工资系统(或顾客和A1)生

32、成付费请求餐厅员工和工资系统(或餐厅员工和A1)管理菜单菜单管理员(或A2)(注:4行的顺序可以不同,但是每行必须对应)解析 考查用例及其和参与者之间的关系时,通过判断哪一个特定参与者发起或者触发了与系统的哪些交互,来识别用例并建立和参与者之间的关联。 本题中,由“任何员工都可以查看菜单和今日特价”可知,图中缺少用例查看今日特价,对应参与者是员工;由“系统的顾客是,注册工资支付、”可知,图中缺少用例注册工资支付,对应参与者是顾客和工资系统;由“餐厅员工是,可以进行备餐、生成付费请求发送给工资系统”可知,图中缺少用例“生成付费请求”,对应的参与者是餐厅员工和工资系统;由“菜单管理员是餐厅特定员工

33、,可以管理菜单”可知,图中缺少用例管理菜单,对应的参与者是菜单管理员。 需要注意的是,在注册工资支付所对应的参与者中,虽然没有明确说明要和工资系统交互,但是由“对于注册工资支付的顾客生成付费请求并发送给工资系统”可知,工资支付是由工资系统控制,所以注册也需要和工资系统交互。10、解析 在顾客订餐过程的描述中,在“顾客选菜”之前,图中缺少符号和活动。由说明中顾客“可以订餐(如果未登录,需先登录)”可以判断,在系统“显示菜单和今日特价”之后“顾客选菜”之前,需要判断(判定符号 )当前用户身份是否为顾客,如果不是,需先登录;由“ 发送E-mail给顾客以确认订餐,同时发送相关订餐信息通知给餐厅员工”

34、可知,发送E-mail和通知餐厅员工为并行活动,需要在前后有同步条 (或纵向)。11、泛化关系(一般/特殊关系、继承关系)。泛化关系描述了一个参与者可以完成另一个参与者同样的任务,并可补充额外的角色功能。解析 参与者之间的关系表示子类型“是一种”父类型,即泛化关系。其中父类型通常是一个抽象泛化的参与者,可以完成子类型可完成的共同行为,每个具体的子类型继承它,可以完成父类型参与者同样的任务,并可以补充额外的角色功能。 本题考查面向对象系统开发时,采用UML模型进行建模的方法。 此类题目要求考生认真阅读题目说明中对现实问题的描述,使用UML建模时的原则,从中确定用例图、活动图以及图中的各种关系。题

35、目给出了未完成的用例图和活动图,需要根据描述给出参与者、用例、活动图中的活动和符号,以及参与者之间的关系内涵。 用例图是用例建模的一个重要产物,它以图形化的方式将系统描述成用例、参与者及其之间的关系。用例图在高层交流了系统必须处理的业务事件的范围,是描述系统与其他外部系统以及用户之间交互的图形。发起或者触发用例的外部用户称为参与者。为了完成某些业务任务,参与者发起系统活动,即用例。在构建用例图时,常用的方式是先识别参与者,然后确定用例以及用例之间的关系。 UML活动图用于建模系统的过程步骤或活动。构造活动图通常先为用例添加开始和结束点,为用例的主要步骤添加一个活动,从每个活动到其他活动、决策点

36、和终点添加转换,并行活动的地方添加同步条。试题四12、(1) k1 或其等价形式 (2) cwcw+wk 或其等价形式 (3) kk-1 或其等价形式 (4) kk+1 或其等价形式解析 本题考查的是用回溯法求解0-1背包问题。回溯法有两类算法框架:非递归形式和递归形式,本题采用非递归形式表示。理解回溯法的基本思想和这两类算法框架是正确解答本题的根本要求。 回溯法从第一项物品开始考虑是否应该装入背包中,因此当前考虑的物品编号k从 1开始,即k1。然后逐项往后检查,若能全部放入背包则将该项放入背包,此时背包的重量应该是当前的重量加上当前考虑物品的重量,即cwcw+wk,当然背包中物品的价值也为当

37、前的价值加上当前考虑物品的价值。若已经考虑完了所有的物品,则得到一个解,判断该解是否为当前最优,若为最优,则将该解的信息放入变量fp、fw和X中。若还没有考虑完所有的物品,意味着有些物品不能放入背包,此时先判断若不将当前的物品放入背包中,则其余物品放入背包是否可能得到比当前最优解更优的解,若得不到则回溯;否则继续考虑其余的物品。13、(5) 物品2和物品3 (6) 35 (7) 15 (8) 8解析 根据问题1中给出的伪代码运行该实例,可以很容易得到此0-1背包问题的最优解,应该选择物品2和物品3,此时背包的重量为10+10=20,获得的价值为17+18=35。 若采用穷举法搜索整个解空间,即

38、要构造一颗完全二叉树,此时搜索树的结点数应为24-1=15,而采用了上述回溯法,搜索树的结点数仅为8个,如上图所示。 本题考查算法设计技术回溯法。 此类题目要求考生掌握基本的算法设计技术,包括分治法、动态规划法、贪心算法、回溯法和分支限界法等,然后结合具体的问题,用对应的算法设计技术来解决问题。试题五14、this-name 15、listAbstractFile* 16、 NULL 17、 this-name 18、&childList解析 本题考查基本面向对象设计中设计模式的运用能力。 组合设计模式主要是表达整体和部分的关系,并且对整体和部分对象的使用无差别。题目中AbstractFile

39、是File类和Folder类的父类,它抽象了两个类的共有属性和行为,在后续main方法的使用中,不论是File对象还是Folder对象,都可被当作AbstractFile对象来使用。另外,由于Folder对象可以聚合其他的Folder对象和File对象,等价于 Folder对象可以聚合另一个AbstractFile对象。 在类File和类Folder的构造函数中都需要记录文件或目录的名称,因此空(1)和空(4)处主要是设置对象的名称。因为File对象不再聚合其他的对象,所以File对象没有孩子节点,因此,空(3)处应该返回NULL。getChildren()方法继承自AbstractFile类,因此其返回类型也应保持一致。对于空(5),要求返回Folder对象的孩子对象,因此返回其成员childList的地址。试题六19、abstract 20、null 21、List 22、childList 23、printTree(file)解析 本题考查基本面向对象设计中设计模式的运用能力。 组合设计模式主要是表达整体和部分的关系,并且对整体和部分对象的使用无差别。题目中AbstractFile是File类和Folder类的父类,它抽象了两个类的共有属

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁