⾯向对象分析与设计试题及其答案
⾯向对象分析与设计试题B卷
⼀、单项选择题( 在每⼩题的四个备选答案中,选出⼀个正确答案,并将正确答案的序号填在题⼲的括号内。每⼩题2 分,共20 分)
1.到20世纪末,⾯向对象软件⼯程已经逐渐发展成熟,特别是()的
形成和⼴泛使⽤,采⽤⾯向对象分析与编程的软件开发⽅法已成为软件开发的主流⽅法。
A. Simula67语⾔
B. Smalltalk语⾔
C. Java语⾔
D. 统⼀建模语⾔(UML)的标准
2. ⾯向对象的运动产⽣了多种⾯向对象的语⾔, 其中()是⼀种混合性⾯向对象语⾔, 既⽀持⾯向过程的程序设计⽅法,⼜⽀持⾯向对象的程序设计⽅法,有⼴泛应⽤的基础和丰富开发环境的⽀持,因⽽
使⾯向对象的程序设计能得到很快普及。
A. Smalltalk
B. Eiffel
C. C++
D. Java
3.下列不属于⾯向对象技术的基本特征的是()。
A. 封装性
B. 模块性
C. 多态性
D. 继承性
4. ⾯向对象程序设计将描述事物的数据与( ) 封装在⼀起,作为⼀个相互依存、不可分割的整体来处理。
A. 信息
B. 数据隐藏
C. 对数据的操作
D. 数据抽象
5. 关于⾯向对象⽅法的优点,下列不正确的叙述是()。
A. 与⼈类习惯的思维⽅法⽐较⼀致
B. 可重⽤性好
C. 以数据操作为中⼼
D.可维护性好
6. ()是从⽤户使⽤系统的⾓度描述系统功能的图形表达⽅法。
A. 类图
B. 对象图
C. 序列图
D. ⽤例图
7. ( ) 是表达系统类及其相互联系的图⽰,它是⾯向对象设计的核⼼,建⽴状态图、协作图
和其他图的基础。
A.对象图 B. 组件图 C. 类图 D. 配置图
8.()描述了⼀组交互对象间的动态协作关系,它表⽰完成某项⾏为的对象和这些对象之
间传递消息的时间顺序。
A.对象图 B. 协作图 C. 状态图 D. 序列图
9.()就是⽤于表⽰构成分布式系统的节点集和节点之间的联系的图⽰,它可以表⽰系统
中软件和硬件的物理架构。
A. 组件图
B. 协作图
C. 状态图
D. 配置图
10. 使⽤UML进⾏关系数据库的()时,需要设计出表达持久数据的实体类及其联系,并把它们映射成为关系数据库表(Table)、视图(View)等。
A. 业务Use Case模型设计
B. 逻辑数据模型设计
C. 物理数据模型设计 C. 物理实现设计
⼆、填空题( 每空1 分,共20 分)
1. ⾯向对象开发⽅法⼀改过去传统的以___功能分析___为基础的__⾯向过程__的结
构化分析与设计⽅法,它模拟⼈们理解和处理客观世界的⽅式来分析问题,把系统视为
java面向对象的特征有哪些方面
⼀系列__对象_的集合,其__⾯向对象的设计__⼜将分析的结果映射到某种⾯向对象实现⼯具的结构上,使映射过程有着⽐较直接的对应关系,使分析者、设计者和编程者都可使⽤相同的_概念_,从⽽使⾯向对象的软件开发能⽐较⾃然地模拟客观世界的活动,使问题描述空间与_解空间__在结构上尽可能⼀致。因此,采⽤⾯向对象⽅法可以更有效地开发⼤型软件系统。⾯向对象⽅法的_封装_、_继承_、__多态_等机制不仅⽀持软件复⽤,⽽且使软件维护⼯作可靠有效,可实现软件系统的柔性制造,更好地克服_软件危机__。因此,它已成为成熟的⼴为采⽤的软件开发⽅法。
2. 对象是客观实体的抽象表⽰,是由__描述对象属性的数据__和_对这些数据进⾏的操作
⾏为__两部分组成。⽽_类_是对具有相同属性和⾏为的⼀组对象的抽象描述。因此,它可作为⼀种⽤户⾃定义类型和创建对象的样板,⽽按照这种样板所创建的⼀个个具体对象就是类的__实例__。通过_继承__关系⼜可形成⼀种类层次结构。
3. UML中⽤于描述系统的静态建模的视图称为静态视图,包括_⽤例图__、
_类图__、_对象图__、__包图__和__构件图_。
三、写出下列程序的输出结果。( 满分10 分)
#include
#include
class Person
{
public:
Person(char *s)
{
name=new char[strlen(s)+1];
strcpy(name, s);
}
virtual void print()
{ cout<<”My name is”<
protected:
char *name;
};
class Student:public Person
{ public:
Student(char *s, float g):Person(s) { avg=g; } void print(char *s)
{ cout<
private:
float avg;
};
class professor:public Person
{ public:
Professor(char *s, int n):Person(s) { publs=n; } void print()
{ cout<<”My name is”<
<<” publication.”<
private:
int publs;
};
void main(void)
{ Person *p;
Person x(“Zhang”);
Student y(“Wang”, 4, 2);
Professor z(“Liu”, 5);
p=&x p->print();
p=&y p->print();
p=&z p->print(); }
【运⾏结果:
My name is Zhang
My name is Wang
My name is Liu and I have 5 publications.
四. 简答题(每⼩题5分,共20 分)
1. 简述⾯向对象软件开发⽅法的优点。
2. 简述⾯向对象技术的三⼤机制。
答:(1)封装性(encapsulation)
所谓封装就是把对象的属性和⾏为结合成⼀个独⽴的单位,使外界不能直接访问或修改这些数据和代码,外界只能通过对象提供的接⼝函数来改变或获取对象的属性数据,这就实现了消息隐蔽。
(2)继承性
如果在⼀个已定义的类上,增加⼀些特殊属性或操作,可以形成⼀个新的类,这个类不仅继承了前⼀个类的全部特征,⽽且具有新的特性,因此可看作前⼀个类的特例,是对前⼀个类的继承。前⼀个类称为⽗类,新产⽣的类叫做⼦类。通过继承关系可形成⼀种类层次结构,叫做继承结构。
(3)多态性
在类层次结构的不同类中,可⽤相同的函数名实现功能不同的函数。
3. 简述OOA模型的层次结构。
答:OOA模型采⽤五层次结构,它们分别是:
(1)对象-类层
划分待开发系统及其环境信息的基本构造单位,标出反映问题域的对象和类,并⽤符号进⾏规范的描述,⽤信息提供者熟悉的术语为对象和类命名。
(2)属性层
定义对象和某些结构中的数据单元,继承结构中所有类的公共属性可放于通⽤类中。标识对象类必需的属性并放在合适的继承层次上,属性的特殊限制和实例连接关系也应标识出来。
(3)服务层
表⽰对象的服务或⾏为,即是要定义类上的操作。
(4)结构层
标识现实世界中对象之间的关系。当⼀个对象是另⼀个对象的⼀部分时,⽤"整体-部分"关系表⽰;当⼀个类属于另⼀个类时,⽤类之间继承关系表⽰。
(5)主题层
可将相关类或对象划分为⼀个主题。
4. 简述OOD模型的总体结构,并画图表⽰。
【4】
答案:
OOD体系结构的各个部分内容:
(1)问题论域部分,在OOA模型的基础上,细化分析结果,设计⼀组构成底层应⽤模型的类和对象。
(2)⼈机交互部分:设计⽤户界⾯模型,该⽤户界⾯模型中的类和对象提供实现⼈机交互操作的接⼝函数。⽤户界⾯设计包括菜单设计、窗⼝设计、输⼊/输出界⾯设计等等。
(3)任务管理部分:建⽴⼀些类,⽤以负责处理操作系统级的并发问题、中断、调度以及其它与特定平台有关的问题。
(4)数据管理部分:提供数据管理系统中存储和检索对象的基本结构,包括对永久性数据的访问和管理。数据管理设计包括:
—数据存放设计:数据存放设计选择数据存放的⽅式(⽂件存放、关系数据库表格存放或⾯向对象的数据库存放)。
—设计相应的操作。为每个需要存储的对象和类增加⽤于存储管理的属性和操作,在类和对象的定义中加以描述。
class & object layer
(类及对象层)
attribute layer
(类及对象层)
service layer
(服务层)
struct layer
(结构层)
subject layer
(主题层)
}
五. 试⽤UML 对教学管理系统及相关的数据库系统进⾏分析和设计。学⽣选课系统⼀般包括(1)选课管理功能;(2) 成绩管理功能。试完成下列⼯作:(1)建⽴系统静态结构模型—画出系统⽤例图和类图;(10分) (2) 建⽴系统动态结构模型—画出系统序列图和协作图;(10分)(3)建⽴关系数据库逻辑模型。(10分)【答案:
(1) 系统⽤例图如下
学⽣
(a
)选课管理的⽤例图
学⽣
(b )成绩管理的⽤例图
对象类图如下:
(a)选课对象类图
(b)成绩管理对象类图
(2)把需要持久存储的数据实体类及其联系,映射成为如下关系数据库表:
学⽣(学⽣号、姓名、出⽣⽇期、性别、籍贯、地址、电话、⼊学时间、专业、班级备注)教师(教师号、姓名、出⽣⽇期、性别、籍贯、地址、电话、职称、专长、备注)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论