1、2005年上半年软件水平考试(中级)软件设计师下午(应用技术)试题真题试卷及答案与解析 一、必答题(共 4道大题,每道大题 15分) 1 阅读以下说明和数据流图,回答问题 1问题 3。【说明】 学生住宿服务系统帮助学生在就学的缄市内找到所需的住房,系统对出租的房屋信息、房主信息、需要租房的学生信息以及学生和房主的会面信息进行管理和维护。 房主信息包括姓名、地址、电话号码以及系统分配的唯一身份标识 (D)和密码;房屋信息包括房屋地址、类型 (单间 /套间 )、适合住宿的人数、房租、房主的 ID以及现在是否可以出租 (例如由 于装修原因,需等到装修后才可出租或者房屋已被租出 )。每当房屋信息发生变
2、化时,房主必须通知系统,系统将更新房屋文件以便学生能够获得准确的可租用房屋信息。房主向系统中加入可租用的房屋信息时,须交纳一定的费用,由系统自动给出费用信息。房主可随时更新房屋的各种属性。 学生可通过系统查询现有的可租用的房屋,但必须先在系统中注册。学生信息包括姓名、现住址、电话号码、出生日期、性别以及系统分配的唯一身份标识 (1D)和密码。若学生希望租用某房屋,则需要发出租房请求,请求中包含房屋的详细信息,系统将安排学生与房主会面的时间和 地点,并将会面信息通知学生和房主,会面信息包括会面时间、地点以及会面双方的基本信息,系统将记录会面信息。 学生住宿服务系统的顶层图如图 1-1所示;学生住
3、宿服务系统的第 0层 DFD图如图 1-2所示,其中,加工 3的细化图如图 1-3所示。1 (1)数据流图 1-1缺少了一条数据流 (在图 1-2中也未给出该数据流 ),请给出此数据流的起点和终点,并采用说明中的词汇给出此数据流名。 (2)数据流图 1-2中缺少了与 “查询房屋 ”加工相关的数据流,请指出此数据流的起点和终点。 2 “安排会面 ”加工除需要写入会面文件外 ,还需要访问哪些文件 ? 3 请补齐下列数据字典条目: 登录信息 =学生 ID+密码 注册信息 =_ 4 阅读以下说明和表,回答问题 1问题 4。【说明】 某公司信息管理系统的需求分析和部分关系模式设计的结果描述如下。 1公司
4、有多个部门,每个部门有一名负责人、一间办公室、一部电话、多名职员,每个职员最多属于一个部门,负责人也是一名公司职员。 2公司职员的月工资大于等于 1000元且小于等于 8000元。 3数据库的部分关系模式设计如下: 职员 (职员号,职员姓名,月工资,部门号, 办公室,电话 ) 部门 (部门号,部门名,负责人代码,任职时间 ) 4 “职员 ”和“部门 ”的关系示例分别如表 2-1和表 2-2所示。4 根据上述说明,请给出 (1)“职员 ”关系模式的主键和外键。 (2)“部门 ”关系模式的主键和外键。 5 (1)用 SQL定义 “职员 ”关系模式,请在空缺处填入正确的内容。 Create Tabl
5、e 职员 ( 职员号 CHAR(5) (a), 职员姓名 CHAR(8), 月工 资 NUMBER(4), 部门号 CHAR(1), 办公室 CHAR(20), 电话 CHAR(8), (b) (部门号 ), CHECK (月工资 =1000 AND月工资 =8000); (2)针对人数大于等于 2的部门创建视图 D_View(Dept, D_num, D_Totals, D_AvgPay),其中, Dept为部 门号, D_num为部门人数, D_Totals为工资总数,D_AvgPay为平均工资,请在空缺处填入正确的内容。 Create View D_View (Dept, D_num,
6、D_Totfls, D_AvgPay)As (Select部门号, (c) from 职员 (d)count(*) =2 WHERE 部门号 IS NOT NULL); 6 对于表 2-1、表 2-2所示的 “职员 ”和 “部门 ”关系,请指出下列各行是否可以插入“职员 ”关系,为什么 ? 7 原来的 “职员 ”关系模式存在什么问题 ?在不增加新关系模式的前提下,请给出修改后的 “职员 ”和 “部门 ”关系模式。 8 阅读以下说明和流程图,从供选择的答案中选出应填入流程图 (n)处的字句写在答题纸的对应栏内。【说明】 一个印刷电路板的布线区域可分成 nm个方格,如图3-1(a)所示,现在需要确
7、定电路板中给定的两个方格的中心点之间的最短布线方案。电路只能沿水平或垂直方向布线,如图 3-1(b)中虚线所示。为了避免线路相交,应将已布过线的方格做封锁标 记,其他线路不允许穿过被封锁的方格。设给定印刷电路板的起始方格 x与目的方格 y尚未布线,求这两个方格间最短布线方案的基本思路是:从起始方格 x开始,先考查距离起始方格距离为 1的可达方格并用一个路径长度值标记,然后依次考查距离为 2, 3, 的可达方格,直到距离为 k的某一个可达方格就是目标方格 y时为止,或者由于不存在从 x到 y的布线方案而终止。布线区域中的每一个方格与其相邻的上、下、左、右四个方格之间的距离为 1,依次沿下、右、上
8、、左这四个方向考查,并用一个队列记录可达方格的位置。表 3-1给出了沿这四个方向前进 1步时相 对于当前方格的相对偏移量。例如,设印刷电路板的布线区域可划分为一个 68的方格阵列,如图 3-2(a)所示,其中阴影表示已封锁方格。从起始方格 x(位置 3, 2,标记为 0)出发,按照下、右、上、左的方向依次考查,所标记的可达方格如图 3-2(a)所示,目标方格为 y(位置 4, 7,标记为 10),相应的最短布线路径如图 3-2(b)虚线所示。 【图 3-2】图 3-3和图 3-4所示的流程图即利用上述思路,在电路板方格阵列中进行标记,图中使用的主要符号如表 3-2所示。在图 3-4中,设置电路
9、板初始格局即将可布线方格置为数值 -1、已布线方格 (即封锁方格 )置为 -9。设置方格阵列 “围墙 ”的目的是省略方格位置的边界条件判定,方法是在四周附加方格,并将其标记为 -9(与封锁标记相同 )。供选择的答案 A Foundtrue B Found=true C T=EndPos D Q insert(T) E TQ.delete() F CurPos=EndPos G i4 H CurPosQ delete() I GridT.row,T.col=-1 J GridT.row,T.col-1 9 阅读以下说明 和 C程序,将应填入 (n)处的字句写在答题纸的对应栏内。 【说明】 假设需
10、要将 N个任务分配给 N个工人同时去完成,每个人都能承担这 N个任务, 但费用不同。下面的程序用回溯法计算总费用最小的一种工作分配方案,在该方案中,为每个人分配 1个不同的任务。 程序中, N个任务从 0开始依次编号, N个工人也从 0开始依次编号,主要的变量说明如下: cij:将任务 i分配给工人 j的费用; taski:值为 0表示任务 i未分配,值为 j表示任务 i分配给工人 j; workerk:值为 0表示工人 k未分配任务,值为 1表示工人 k已分配任务; mincost:最小总费用。 【 C程序】 #include stdio.h #define N 8 /*N表示任务数和工人数
11、 */ int cNN; unsigned int mincost=65535; /*设置 min的初始值,大于可能的总费用 */ int taskN, tempN, workerIN; void Plan(int k, unsigned Int cost) int i; if (1) case 3: return new Circle; default: return NULL; void main (int argo, char *argv) if (argc!=2) cout “error parameters !“ endl; return; inttype=atoi (argv1)
12、; Factory factory; Shape *s; s = factory. (5): if (s=NULL) cout “Error get the instance !“ endl; return; s- display () ; (6); return; 11 阅读以下说明和 Java代码,将应填入 (n)处的字句写在答题纸的对应栏内。【说明】 某绘图系统存在 Point、 Line、 Square三种图元,它们具有 Shape接口,图元的类图关系如图 6-1所示。现要将 Circle图元加入 此绘图系统以实现功能扩充。已知某第三方库已经提供了 XCircle类,且完全满足系统新增
13、的 Circle图元所需的功能,但 XCircle不是由 Shape派生而来,它提供的接口不能被系统直接使用。代码6-1既使用了 XCircle又遵循了 Shape规定的接口,既避免了从头开发一个新的Circle类,又可以不修改绘图系统中已经定义的接口。代码 6-2根据用户指定的参数生成特定的图元实例,并对之进行显示操作。 绘图系统定义的接口与 XCircle提供的显示接口及其功能如下表所示:【代码 6-1】 class Circle (1) private (2) pxc; public Circle()pxc=new (3) ; public void display() pxc (4)
14、; 【代码 6-2】 public class Factory public (5) getShapeInstance(int type) /生成特定类实例 switch(type) case 0: return new Point ( ); case 1: return new Rectangle ( ) ; case 2: return new Line ( ) ; case 3: return new Circle ( ) ; default: return null; public class App public static void main (String argv ) if
15、(argv. length != l) System. out.println (“error parameters !“); return; inttype= (new Integer (argv0) .intValue ( Factory factory = new Factory ( ) ; Shape s; s=factory, (6) if (s=null) System.out.println ( “Error get instance !“ ) return; s.display () ; return; 12 阅读以下说明和 Visual Basic代码,将应填入 (n)处的字
16、句写在答题纸的对应栏内。【说明】 某绘图系统定义了一个抽象类 IShape,现有三个类 CPoint、 CLine和 CCircle,它们都具有 IShape界面。相应的类图关系如图 7-1所示。 已知某第三方库已经提供了 XCircle类,且完全满足 CCircle图元显示时所需的功能。代码 7-1是抽象类 IShape的类模块内容,代码 7-2实现了类 CCircle的 IShape界面,并使用了 XCircle提供的显示功能。 XCimle提供的显示功能方法接口为 displayIt。【代码 7-1】 Public Color As Long Sub draw() 方法体不包括可执行语句
17、 End Sub Sub move(stepx As Single, stepy As Smgle) 方法体不包括可执行语句 End Sub【代码 7-2】 (1) Private color As Long 其他定义省略 Private bridged As (2) Private Sub Class_Initialize ( ) Set bridged=(3) End Sub Private Property (4) ( )As Long IShape_Color = color End Property Private Property (5) (ByVal newColor As Lo
18、ng) color=newColor End Property Private Sub IShape_draw ( ) 使用 XCirele提供的显示功能 (6) End Sub Private Sub IShape_move (stepx As Single, stepy As Single) 省略描述 End Sub 2005年上半年软件水平考试(中级)软件设计师下午(应用技术)试题真题试卷答案与解析 一、必答题(共 4道大题,每道大题 15分) 1 【正确答案】 (1)起点:学生住宿服务系统 终点:房主 数据流名:费用信息 或 交纳的费用 或费用 (2)起点:房屋文件 终点:查询房屋 或
19、 4 【试题解析】 (1)题目中明确地说明了 “房主向系统中加入可租用的房屋信息时,需交纳一定的费用,由系统自动给出费用信息 ”,但是在数据流图中却没有相关的数据流。所以,需要补齐的数据流为: 起点:学生住宿服务系统 终点:房主 数据流名:费用信息 或 交纳的费用 或费用 (2)查 询房屋需要读取房屋文件,所以数据流的起点和终点为; 起点:房屋文件 终点:查询房屋 或 4 2 【正确答案】 房主文件 学生文件 【试题解析】 题目中说明了 “将会面信息通知学生和房主,会面信息包括会面时间、地点以及会面双方的基本信息,系统将记录会面信息 ”。此处要注意会面双方的基本信息也被包含在会面信息中了。所以
20、,安排会面需要查询学生文件和房主文件以获得双方的基本信息 3 【正确答案】 姓名 +现住址 +电话号码 +出生日期 +性别 【试题解析】 根据数据流图 4-2中的加工 3以及数据流图 4-3加工 3的细化图可以看出,学生信息包含了登录信息和注册信息,登录信息为学生 ID和密码,所以学生信息中除去登录信息就是注册信息了,因此,注册信息为:姓名 +现住址 +电话号码 +出生日期 +性别 4 【正确答案】 (1)主键:职员号 外键:部门号 (2)主键:部门号,或部门名 外键:负责人代码 【试题解析】 本试题中, “部门 ”关系的主键为部门号, “职员 ”关系的主键为职员号。在 “部门 ”关系中,部门
21、由于负责人也是来自职员关系,所以负责人代码是外键。在 “职员 ”关系中,部门号是 “部门 ”关系的主键,因此部 门号是外键。根据题意, “职员 ”和 “部门 ”的关系模式可表示如下: 职员 (职员号,职员姓名,月工资,部门号,办公室,电话 ) 部门 (部门号,部门名 , ,任职时间 ) 5 【正确答案】 (a)PRIMARY KEY (b)FOREIGNKEY (部门号 ) REFERENCES部门 (c)count(*), Sum (月工资 ), Avg(月工资 ) (d)GROUP by部门号 HAVING 注:以上答案中的单词可以小写。 【试题解析】 用 SQL 定义关系模式的一个非常重
22、要的问题是完整性控制。完整性控制应具有三方 面的功能:定义功能、检测功能、处理功能 (一旦发现违背了完整性约束条件,采取相关的动作来保证数据的完整性 )。数据库中最重要的约束是声明一个或一组属性形成关系的键。键的约束在 SQL的 CREATE TABLE 命令中声明。在关系系统中,最重要的完整性约束条件是实体完整性和参照完整性。 1实体完整性定义 在关系中只能有一个主键。声明主键有两种方法: 将 PRIMARY KEY保留字加在属性类型之后; 在属性列表中引入一个新元素,该元素包含保留字 PRIMARY KEY和用圆括号括起的形成该 键的属性或属性组列表。 2参照完整性 参照完整性定义格式如下
23、: FOREIGN KEY (属性名 ) REFERENCES 表名 (属性名 ) ON DELETECASCADEt|SET NULL 参照完整性通过使用保留字 FOREIGN KEY 定义哪些列为外码;REFERENCES 指明外键对应于哪个表的主键; ON DELETE CASCADE 指明删除被参照关系的元组时,同时删除参照关系中的元组; SETNULL表示置为空值方式。 本试题中,职员关系的主键为职员号,部门关系 的主键为部门号,这样,职员关系中的部门号是外键。其中,职员关系的主键职员号可采用如下两种方式定义: 职员号 CHAR(5)PRIMARY KEY 或者是 PRIMARY K
24、EY (职员号 ) 根据分析问题 2(1)职员关系的 SQL 定义如下: Create Table职员 ( 职员号 CHAR (5) PRIMARY KEY, 职员姓名 CHAR(8), 月工资 NUMBER(4), 部门号 CHAR(1), 办公室 CHAR(20), 电话 CHAR(8), FOREIGN KEY (部门号 ) REFERENCES 部门 (部门号 ), 问题 2(2)的关键在于要对职员关系采用分组语句按部门分类,并统计。如果统计的元组个数大于等于 2,则在结果集中。根据分析,针对人数大于等于 2的部门创建视图 DView(Dept, D_num, D_Tomis, D_A
25、vgPay)如下: Create View D View(Dept, D num, D Totals, D AvgPay)As (Select 部门号, count (*), Sum(月工资 ), Avg(月工资 ) from 职员 GROUP by部门号 HAVING count(*) =2 WHERE 部门号 IS NOT NULL); 6 【正确答案】 (1)该行不能插入 “职员 ”关系,它违反了用户定义完整性中月工资的取值范围必须大于等于 1000元,小于等于 8000元。 (2)该行不能插入 “职员 ”关 系,因为职员号 “60802”在表 2-1中已存在,违反了实体完整性中主键必须
26、唯一区分关系中的每一个属性。 (3)该行可以插入 “职员 ”关系,尽管部门号、电话和办公室为空,但是它表示该职员没有分配到某个部门。 【试题解析】 本题主要考查完整性定义的约束性。下表是待将插入的记录组。 (1)由于在职员表中的定义中,职员的月工资的取值范围必须大于等于 1000元,小于等于8000元。该行不能插入 “职员 ”关系,它违反了用户定义完整性,该条记录不能插入。 (2)该元组不能插入 “职员 ”关系,因为职员号 “60802”在职员表 中已存在,违反了实体完整性中主键必须唯一区分关系中的每一个属性。 (3)该行可以插入 “职员 ”关系,尽管部门号、电话和办公室为空,但是它表示该职员
27、没有分配到某个部门 7 【正确答案】 “职员 ”关系模式主要的问题是: 数据冗余问题。因为某部门的职员人数有多少,其办公室和电话将要重复存入多少。 数据修改不一致问题。因为某部门的办公室变了可能会导致某些职员的办公室属性修改了,某些职员的未修改。 将关系模式修改为: 职员 (职员号,职员姓名,月工资,部门号 ) 部门 (部门号,部门名,负责人代码,任职时间,办公室,电话 ) 【试题解析】 此题考察的是查询效率的问题。在涉及相关查询的某些情形中,构造临时关系可以提高查询效率。 原来的 “职员 ”关系模式主要的问题是数据冗余和数据修改不一致问题。例如,某部门的职员人数有 100个,其办公室和电话的
28、属性值将要重复存入 100次。如果某部门的办公室变了,可能会导致有些职员的办公室属性值修改了,另一些职员的办公室属性值未修改。根据题意,每个部门有一名负责人、一间办公室、一部电话,因此,为了解决冗余和数据修改不一致的问题,应该将职员关系模式中的属性 “办公室 ”和 “电话 ”放到部门关系模 式中,这样修改后的关系模式为: 职员 (职员号,职员姓名,月工资,部门号 ) 部门 (部门号,部门名,负责人代码,任职时间,办公室,电话 ) 8 【正确答案】 (1)GridT.row,T.col=-1 (2)T=EndPos (3)Q.insert(T) (4)Foundtrue (5)CurPosQ.d
29、elete() 【试题解析】 根据题目中的说明,设给定印刷电路板的起始方格 x与目的方格 y尚未布线,求这两个方格间最短布线方案的基本思路是:从起始方格 x开始,先考查距离起始方格距离为 1的 可达方格并用一个路径长度值标记,然后依次考查距离为 2、 3、 的可达方格,直到距离为 k的某一个可达方格就是目标方格 y时为止,或者由于不存在从 x到 y的布线方案而终止。布线区域中的每一个方格与其相邻的上、下、左、右四个方格之间的距离为 1,依次沿下、右、上、左这四个方向考查,并用一个队列记录可达方格的位置。该方法体现了广度优先搜索策略,以题中的图 4-5为例,根结点表示起始方格的位置 (3,2),
30、孩子结点表示一步可达的位置,其过程可用下图所示的树结构表示。 按照广度优先的策略,先将起始位置结点加入队列,此后在队列 不为空的情况下,每次从队列中取出一个结点(元素出队列 ),按照下、右、上、左的方向依次扩展并将扩展所得的结点加入队列,重复这个过程,直到目标位置结点出现,或队列为空还没有出现目标位置时为止。对于上例,根结点 3, 2出队列后,扩展出结点 4, 2、 3, 3、 2, 2、3, 1)并依次加入队列,然后由 14, 2扩展出 5, 2、 4, 3、 4, 1), 3, 3扩展出 3, 4), 2, 2扩展出 2, 1)、 1, 2,依次类推,当扩展出目标结点 4, 7时,路径长度
31、为 10。 在流程图 3-4描述的上述处理 过程中,满足条件 i 4且Found=False时处理沿 4个方向进行考查并扩展结点的操作,即 T.row=CurPos.row+offseti.r T.col=CurPos.col+offseti.c) 但是方格位置T.row,T.col有可能已经封锁 (标记为 -9),所以在对可扩展结点 (标记为 -1)进行路径长度标记时应判断是否可以标记,因此空 (1)处应对 GridT.row,T.col的标志进行判断,根据流程中的处理逻辑,显然应填入 “GridT.row,T.col=-1。当得到一个扩展结 点时 (GridT.row,T.colGridC
32、urPos.row , CurPos.col+1),应判断目标结点是否出现,即扩展出的结点 T是否等于目标结点 EndPos,若是,则可结束扩展操作 (Found=True),否则,将结点 T 加入队列,因此空 (2)处填入 “T=EndPos、空(3)处填入 “Q insert T)”。显然空 (4)处表示找到目标方格时的结束条件,根据流程中的处理逻辑应填入 “Foundtrue”。当尚未找到目标位置结点而队列又不为空时,应从队列中取出一个新的结点作为当前结点进行考查 和扩展,因此空 (5)处填入 “CurPosO.delete()” 。 9 【正确答案】 (1)k =N,或 k=N,或其等
33、价形式 (2)cost+eki mincost,或其等价形式 (3)i (4)k+1 (5)workeri=0,或其等价形式 【试题解析】 首先为函数 Plan()代码加上行号,以便说明。 1: void Plan(ihtk,unsigned int cost) 2: int i; 3: if( (1) &cost mincost) 4: mincost=cost; 5: for(i=0; i N; i+) tempi=taski; 6: 7: else 8: for(i=0; i N; i+) /*分配任务 k*/ 9: if (workeri 0& (2) ) 10: workeri=1;
34、 taskk= (3) ; 11: Plan( (4) , cost+cki); 12: (5) ; taskk=0; 13: /*if*/ 14: /*else*/ 15: /*Plan*/ 由注释可知,在 Plan(k,cost)中,以 k表示任务编号、 cost表示费用。根据题目中的说明,程序用回溯法计算总费用最小的一种工作分配方案,因此在得到每一个分配方案时需要和先前已经得到的分配方案中的最小费用进行比较。由于需要将 N个任务分配给 N个工人,以任务为序时,最后一个任务 (第 N-1个任务 )分配之后便得到一种方案,因此第 3行代码的空 (1)处填入 “k =N或 k=N”。 显然,在
35、分配任务 k时,需要考查所有的工人 (第 8行代码 ),此时若工人 i尚未接收任务 (workeri=0),并且将任务 k分配给工人 i不会超出前面某个方案的费用,则可将任务 k分配给他 (taskk=i,然后开始分配第 k+1个任务。回溯时则需要将分配工人 i的任务撤销,以便考查其他的分配方案。 二、选答题(共 3道大题,每道大题 15分) 从下列 3道试题中任选 1道解答,如果解答的试题数超过 1道,则仅题号小的 1道题解答有效。 10 【正确答案】 (1)Shape (2)XCircle (3)displayIt() (4)Shape* (5)getShapeInstance(type)
36、 (6)delete s 【试题解析】 题目中明确要求 Circle具有 Shape接口,所以,第 1空应填上Shape。因为要重用 XCircle类而不用从头开发一个新的 Circle类,所以,凡是Circle类实现 Shape的接口时都应调用相应的 XCircle类提供的方法。因此第 2空应填上 Xcircle,第 3空应填上 displayIt()。阅读主程序,第 5空调用 factory对象的方法,而类 Factory 类只有一个方法为 getShapeInstanee,所以第 5空应填入getShapeInstance,参数为用户运行程序时指定的参数,程序中为 type参数,表明需要
37、生成哪一种类型的对象。同样,因为 s是 Shape*类型,所以,getShapeInstance(type)的返回值类型为 shape*,因此第 4空应填入 Shape*;程序退出前需要释放指针 s所占用的内存空间,所以第 6空应填写 delete s。 11 【正确答案】 (1)implements Shape (2)XCircle (3)Xcircle() (4)displayIt() (5)Shape (6)getShapeInstance(type) 【试题解析】 题目中明确要求 Circle具有 Shape接口,所以,第 1空应填上implements Shape。因为要重用 XCi
38、rcle类而不用从头开发一个新的 Circle类,所以,凡是 Circle类实现 Shape的接口时都调用相应的 XCircle类提供的方法。因此第 2空应填上 Xcircle,第 3空应填上 Xcircle()生成相应的 XCircle的一个实例,第 4空调用 displaylt()来实现 Shape接口中的 display方法。阅读主程序,第 6空调用 factory对象的方法,而类 Factory 类只有一个方法为 getShapeInstance,所以第 6空为应填入 getShapeinstance(type),参数为用户运行程序时指定的参数,程序中为 type参数,表明需要生成哪一
39、种类型的对象。同样,因为 s是Shape类型的引用,所以, getShapeInstance的返回值类型为 Shape,因此第 5空应填入 Shape。 12 【正确答案】 (1)Implemellts IShape (2)XCirc1e (3)New XCircle (4)Get IShspe_Co1or (5)Let IShspe_Co1or (6)bridSed.displayIt 【试题解析】 在 VB中,抽象类模块只包含属性和方法的定义,而不包括任何可执行代码。本题目中定义的抽象类 Ishape中定义了一个属性 color、两个方法draw 和 move。 在实现界面时,需要在有 I
40、shape界面的类模块的说明段中添加一个 Implements关键字,因此空 (1)处应填入 “Implemems IShape“。根据试题中的说明部分可知,类 CCircle中 要使用 XCircle提供的显示功能,需声明 XCircle的实例变量并生成和引用实例对象,因此空 (2)处应填入 “XCircle”,空 (3)处填入 “New XCircle”,空(6)处填入 “bridged.displaylt”。 由 “color=newColor”可知,空 (5)处所在的 Property过程使 CCircle的私有数据成员 color取得外部设置的 newColor值,因此空 (5)填入 “Let IShape Color“。 同理由 “IShape_Color=color”可知,空 (4)处所在的 Property 过程使IShape_Color取得 CCircle的私有数据成员 color的值,因此空 (4)填入 “Get IShape Color”。