第08章 面向对象程序设计
- 格式:ppt
- 大小:175.50 KB
- 文档页数:40


141 第八章 面向对象设计
分析是提取和整理用户需求,并建立问题域精确模型的过程。设计则是把分析阶段得到的需求转变成符合成本和质量要求的、抽象的系统实现方案的过程。从面向对象分析到面向对象设计,是一个逐渐扩充模型的过程。或者说,面向对象设计就是用面向对象观点建立求解域模型的过程。
尽管分析和设计的定义有明显区别,但是在实际的软件开发过程中二者的界限是模糊的。许多分析结果可以直接映射成设计结果,而在设计过程中又往往会加深和补充对系统需求的理解,从而进一步完善分析结果。因此,分析和设计是一个多次反复迭代的过程。
OOD实现一个完成一系列不同的模块性等级的设计。主要的系统构件被组织为称为子系统的系统级“模块”,数据和操纵数据的操作被封装为对象--一种作为OO系统的构造块的模块形式。此外,OOD必须描述属性的特定数据组织和个体操作的过程细节,这些表示了OO系统的数据和算法片,从而实现整体模块性。
OOD的独特性在于其基于四个重要的软件设计概念——抽象、信息隐蔽、功能独立性和模块性建造系统的能力。所有的设计方法均力图建造有这些基本特征的软件,但是,只有OOD提供了使设计者能够以较少的复杂性达到所有这四个特征的机制。
设计面向对象的软件是有一定困难的,设计可复用的面向对象的软件更加困难。必须找到适当的对象、以适当的粒度将它们转化为类的因子、定义类接口和继承层次以及建立它们之间的关键关系。设计应该针对于手边的问题,但也应足够通用化以适应将来的问题和需求。还应避免重复设计,至少应使重复设计减少到最小程度。一般来说,面向对象的设计很难在第一次就达到目标,通常尝试复用几次,并每次做一些修改,才可能实现。
OOD、OOP和OOT是构造OO系统的活动,在本章,我们考虑其中的第一步。
8.1 面向对象设计(OOD)概述
OOA和OOD之间有密切的衔接关系,从OOA到OOD是一个逐渐扩充模型的过程。分析处理以问题为中心,可以不考虑任何与特定计算机系统有关的问题,而OOD则把人们带进了面向计算机系统的“实地”开发活动中去。通常,OOD分为两个阶段,即高层设计和低层设计。高层设计建立应用的体系结构,低层设计集中于类的详细设计。
软 件 学 院
课程设计报告书
课程名称 面向对象分析与设计
设计题目 餐饮点餐系统
专业班级
学 号
姓 名
指导教师
2013年 6月
目 录
1 设计时间 ......................................................................................................................... 1
2 设计目的 ......................................................................................................................... 1
3设计任务 ........................................................................................................................... 1
4 设计内容 ......................................................................................................................... 1
4.1设计内容概述 .............................................................................................................. 1
《面向对象程序设计》第05章在线测试 剩余时间: 59:56
答题须知:1、本卷满分20分。
2、答完题后,请一定要单击下面的“交卷”按钮交卷,否则无法记录本试卷的成绩。
3、在交卷之前,不要刷新本网页,否则你的答题结果将会被清空。
第一题、单项选择题(每题1分,5道题共5分)
1、为了实现两个复数类对象c1,c2相加c1+c2,下面的语句正确的是()
A、class Complex { Complex operator+()。} B、class Complex { Complex operator+(Complex
&)。}
C、class Complex { Complex operator+(Complex, Complex)。} D、Complex operator+(Complex &)。
2、在成员函数中进行双目运算符重载时,其参数表中应带有( )个参数。
A、0 B、1
C、2 D、3
3、双目运算符重载为普通函数时,其参数表中应带有( )个参数。
A、0 B、1
C、2 D、3
4、如果表达式a++中的“++”是作为普通函数重载的运算符,若采用运算符函数调用格式,则可表示为( )。
A、a.operator++() B、operator++(a)
C、operator++(a,1) D、operator++(1,a)
5、如果表达式++a中的“++”是作为成员函数重载的运算符,若采用运算符函数调用格式,则可表示为( )。
A、a.operator++(1) B、operator++(a)
C、operator++(a,1) D、a.operator++()
第二题、多项选择题(每题2分,5道题共10分)
1、在重载一运算符时,若运算符函数的形参表中没有参数,则可能的情况是( )。
A、该运算符是一个单目运算符。
B、该运算符函数有一个隐含的参数this。
- 1 - C++面向对象程序设计
考试试卷(详细讲解)
一、 单项选择题(共20题,每题1分,共20分)
1、下列关于C++标识符的命名不合法的是 C 与C#一样
A. Pad B. name_1 C. A#bc D. _a12
2、若有以下类型标识符定义: ( )D
int x=2; char w='a'; float y=23.45f; double z=45.6712;
则表达式w*x+y-z的结果类型是
A. float B. char C. int D. double
6、对重载函数形参的描述中,错误的是 D 重载是重点
A. 参数的个数可能不同
B. 参数的类型可能不同
C. 参数的顺序可能不同
D. 参数的个数、类型、顺序都相同,只是函数的返回值类型不同
7、以下能正确定义数组并正确赋初值的语句是 D
A. int N=5,b[N][N];
B. int a[2]={{1},{3},{4},{5}};
C. int c[2][]={{1,2},{3,4}};
D. int d[3][2]={{1,2},{3,4}};
8、下列给字符数组进行的初始化中,不正确的是 D
A. char s1[]="abcd";
B. char s2[3]={'x','y','\0'};
C. char s3[]={'a','x','y','\0'};
D. char s4[6]={"xyz","mnp"};
9、通常的拷贝构造函数的参数是 C
A. 某个对象名 B.某个对象成员名
C. 某个对象的引用 D.某个对象的指针名
10、关于构造函数特点的描述中,错误的是 A
A. 定义构造函数必须指出类型 (构造函数特点是无返回类型)
B. 构造函数的名字与该类的类名相同
C. 一个类中可定义0至多个构造函数 (不写构造函数,系统会自动生成一个空的构造函数)