您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 第-3-章-面向对象分析和设计初步
第三章面向对象分析和设计初步主要内容1.面向对象分析2.面向对象设计及实现一个面向对象的C++程序实例1.需求陈述(一个简单图形程序的需求):在显示器荧光屏上圆心坐标为(100,100)的位置上,画一个半径为40的圆,在圆心坐标为(200,300)的位置上,画一个半径为20的圆,在圆心坐标为(400,150)的位置上,画一条弧,弧的起始角度为30,结束角度为120,半径为50。2.面向对象分析确定对象使用“语法分析”方法,在需求陈述中包含的名词或名词短语是对象的候选者,它们有下列一些:显示器荧光屏,圆心坐标,位置,半径,圆,弧,起始角度,结束角度。[分析]:•“显示器荧光屏”是一种输出设备,是运行程序的物质基础(硬件平台),应该从候选对象中删去。•“圆心坐标”和“半径”实质上是圆和弧的基本属性,并不需要独立存在,因此也应该从候选者中删去。•“位置”实际上是指圆心的位置,也就是圆心坐标,没必要重复列出。•“起始角度”和“结束角度”实质上是弧的属性,也应该从候选者中删去。[结论]:最后得出的是圆(Circle)和弧(Arc)两类对象。•圆的两个基本属性是圆心坐标和半径。•弧的基本属性有圆心坐标,半径,起始角度和结束角度。[分析]:由于不可能在需求陈述中找到所有属性,还必须借助领域知识和常识,才能分析得出所需要的全部属性。因此,圆和弧都应该再增加一个属性——可见性。确定属性确定服务在分析阶段可以认为,每个属性都是可以访问的。所谓可以访问是指提供了访问对象属性的对外接口。(由对象主动地向外界提供服务)[分析]:由这个程序应完成的功能可知,圆和弧都应该提供在荧光屏上“画自己”的服务。相应地也应该提供“隐藏自己”这样一个服务。[结论]:圆和弧分别有各自的属性和服务,如下图所示。圆心坐标半径可见性读/写圆心坐标读/写半径读/写可见性显示隐藏圆圆心坐标半径起始角度结束角度可见性读/写圆心坐标读/写半径读/写起始角度读/写结束角度读/写可见性显示隐藏弧3.面向对象设计_I建立类等级面向对象程序的一个突出优点来源于继承性。应该尽量抽取出相似类的公共属性和公共服务,以建立这些相似类的父类,并在类等级的适当层次中正确地定义各个属性和服务。简单图形程序的对象模型如下图(为简明起见,图中没有列出读/写属性值的常规服务)。位置坐标点可见性显示隐藏圆半径显示隐藏弧起始角度结束角度显示隐藏3.面向对象设计_II定义属性所谓定义属性就是要确定每个属性的数据类型和数据结构,同时还要确定每个属性的访问权限(通常被定义在保护部分或私有部分)。定义服务实现“显示”服务的算法概括来说就是,把“可见性”属性设置为true,然后调用相应的库函数用当前的前景颜色画出所要的图形。4.面向对象实现_I圆类的定义classCircle:publicPoint{protected:intRadius;public:Circle(intInitX,intInitY,intInitRadius);voidShow();voidHide();intGetRadius();};Circle::Circle(intInitX,intInitY,intInitRadius):Point(InitX,InitY){Radius=InitRadius;}voidCircle::Show(){Visible=true;circle(X,Y,Radius);}4.面向对象实现_II4.面向对象实现_IIIvoidCircle::Hide(){intTempColor;TempColor=getcolor();setcolor(getbkcolor());Visible=false;circle(X,Y,Radius);setcolor(Tempcolor);}intCircle::GetRadius(){returnRadius;}5.小结用面向对象程序设计方法,解决一个简单的实际工程的基本步骤如下:1)面向对象分析:通过对用户需求的分析,合理地提取问题域中所涉及到类-&-对象。包括:这些类-&-对象中应该包括哪些属性和方法。2)面向对象设计:对分析中得到的准确结果,设计出实现程序的方案。包括:建立类之间的继承关系:根据对系统中共性和个性的划分建立类等级即类之间的继承关系(提取公共的属性和服务以建立父类)定义属性:确定属性的数据类型及访问权限。定义服务:确定实现服务的准确算法以及清晰的接口。3)面向对象实现:选择一种合适的编程语言,实现上述设计。小结1.面向对象分析(基本内涵、任务和步骤)2.面向对象设计(设计内容和准则)3.面向对象实现(任务、程序语言的选择)
本文标题:第-3-章-面向对象分析和设计初步
链接地址:https://www.777doc.com/doc-5836464 .html