科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件VC面向对象开发分析与设计实例解析

VC面向对象开发分析与设计实例解析

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本篇文章以一个实际的例子,向大家介绍一下如何对实际问题进行分析和设计

作者:风之韵 来源:yesky 2007年11月16日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
二.系统分析与设计:

  采用OOP分析的关键就是要对问题的对象空间的分类(类的分析与设计,这一点跟面向过程的流程图设计不太一样),也就是在整个系统中包括那几个类,每个类包含那些属性特征和行为特征。对于上面的电梯问题,很明显有两个类:即电梯类和乘客类(从所设计到的对象描述可以观察到,但是有的问题即使这一步也要仔细分析)。电梯类应该反映所有关于电梯状态和行为的信息,而乘客类也应该反映这些信息。综合上面问题的表述,现在将分析结果整理如下:

  乘客类:

Cpassenger
{
bool bInLift; //是否在电梯里
bool bSignal; //发出请求标志
bool bStart; //仿真启动标志(false标志仿真结束)
Cstring flag; //标识每个人得序号以及需求层数
Int iAtFloor; //所在楼层
Int iToFloor; //要去得楼层
Int iLifts; //已经乘坐电梯得次数了
Int number; //乘客得序号
}

  电梯类:

Celevator
{
bool bStart; //仿真开始标志
int iAtFloor; //当前所处得层数得起点
int iToFloor; //即将去得层数
int iPassengers; //电梯里得人数
bool bStop; //电梯停止标志
bool bIsEmptyOperation; //电梯是否空载运行
CArray<CPassenger,CPassenger&> m_passengers; //存放载处于电梯里面得乘客
}

  这里说明一下,CArray<CPassenger,CPassenger&>是MFC里面的一个模板集合类,第一个参数表示该集合所存储的类别,第二个参数表示对该集合里面的元素所采取的访问方式,这里采用的是引用的访问方式,这种方式通过传递32位指针来进行访问,它同时兼有地址访问(效率高)和值传递的双重优势,现在一般对大的对象的存取一般提倡使用这种方式。

  另外,这里也引用了view类,定义如下:

class CLiftsimulationView : public CFormView
{
UINT m_nTimer;
int k;
int n;
int l;
int s;
int t;
int floor;
CPassenger m_passenger[100]; //最大为100个乘客
CElevator m_elevator; //一个电梯
int iSrcFloor,iDesFloor; //分别代表载客时得起始楼层和终结楼层,用在ontimer中
int iEmptySrcFloor,iEmptyDesFloor; //分别代表空载时得起始楼层和终结楼层,用在ontimer中
int itimes[41];
DWORD ElapseTime;
void DeleteColor(int src);
void DrawColor(int src,int increment);
};

  这里大致把各个对象的成员设定出来了,为了方便存储,将所有的变量定义为public的类型,这样可以提高存储的效率,当然了,它也破坏了OOP封装的思想,降低了对象与对象之间的隔离性。这里因为问题不是很复杂,所以我们采用前面的方法。至此,类设计基本结束了,当然了,很多时候不是一开始就可以把类设计得很好,往往都是要先设计一部分,然后在后面得问题得处理中,还要对原来设计的类结构进行添加和删除工作的。这里要特别注意的是类设计的最终目的是降低系统的耦合,达到程序逻辑与数据之间的分离,更有利于代码的编制和维护。
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章