OOA(Object Oriented Analysis,面向对象分析): 从客观存在的事务和事务之间的关系,归纳出有关对象(包括对象的属性和行为)以及对象之间的联系,并将具有相同属性和行为的对象用一个类(class)来表示。建立一个能够反映真实情况的需求模型。
OOD(Object Oriented Design,面向对象设计):将面向对象分析阶段形成的需求模型进一步具体设计。如类的设计(继承、派生、类与类之间的消息协作)、算法的设计等。采取通用的工具,如流程图、类图等来描述。
题目描述:
- 采取面向对象的方法,四则运算自动出题软件,根据需求可以划分为几个类?每个类具有什么属性?每个类具有什么行为?
- 类与类之间是如何进行协作的?谁给谁发送消息?谁持有谁的引用?
- 该自动出题软件采取何种算法或者是如何实现的?可以采用流程图描述的方法。
一、类的划分
我将四则运算分成了五个类,分别是:用户交互类、随机算式类、计算类、判断类和文件读写类。每个类的属性和行为如下:
用户交互类
主要负责语言选择,统计正误题数,以及与用户进行信息交互等功能。
class Interaction
{
private:
int language; //语言选择
int sum; //总题数
int right; //正确题数
int wrong; //错误题数
public:
int setlanguage(); //用户进行语言选择
int setsum(); //用户输入需要题数
void Statistics(); //统计正误题数
}
随机算式类
用于生成随机式子。
class Random
{
private:
int num[4];
int operation[3];
public:
int RandomNumber();
char Randomoperation();
void Randomexpression(); //生成随机式子
}
计算类
计算生成的随机式子的答案。
class Calculate
{
private:
float result; //生成式子的答案
public:
float calculateresult(); //计算答案
}
判断类
进行各项判断,决定程序下一步的运行。
class Judge
{
private:
bool ToF; //记录判断结果
public:
bool Judgelanguage(); //判断语言选择是否正确
bool Judgeresult(); //判断生成式子是否符合要求
bool Judgeend(); //判断用户是否需要程序停止运行
bool Judgeanswer(); //判断用户回答是否正确
}
文件读写类
进行文件的读写。
class File
{
public:
void Language(); //调用语言文件
void Write-File(); //将信息存入指定文件
}
二、类的协作
三、流程图
四、
介于对面向对象这一概念的生疏,我在这次的设计中还是偏向从过程出发了,这使我分出来的类中存在着功能的交叉,运行过程也较为繁琐。对面向对象这一概念,还需要多加学习。