软件工程课件-第四章-面向对象技术

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第四章面向对象的技术面向对象的思想最初出现于挪威奥斯陆大学和挪威计算机中心共同研制的Simula67语言中,随着的Smalltalk---76和80语言推出,面向对象的的程序设计方法得到了比较完善的实现。此后,面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统,交互式界面,分布式系统,网络管理结构和人工智能等领域。面向对象的技术已成为软件开发的一种新方法,新技术。4.1面向对象的基本概念4.1.1什么是面向对象的开发方法OOSD(Object-OrientedSoftwareDevelopment)法是一种把面向对象的思想应用于软件开发过程,指导开发活动的系统方法。问题空间—软件系统所涉及到的应用领域和业务范围(现实世界)。解空间—用于解决某些问题的软件系统。一、软件开发过程问题空间(现实世界)解空间(软件系统)映射二、传统软件开发方法存在的问题1.传统软件开发方法无法实现从问题空间到解空间的直接映射。问题空间(现实世界)解空间(软件系统)复杂映射2.传统软件开发方法无法实现高效的软件复用。原因是:传统软件开发方法数据与代码(操作)分离。3.传统软件开发方法难以实现从分析到设计的直接过渡。复杂转换分析文档(DFD)设计文档(SC)三、面向对象技术的特点1.对软件开发过程所有阶段进行综合考虑。使问题空间与解空间具有一制性,降低复杂性。2.软件生存期各阶段所使用的方法、技术具有高度的连续性,用符合人类认识世界的思维方式来分析、解决问题。自然、连续问题空间(现实世界)解空间(软件系统)实体1实体2实体n对象1对象n对象23.将OOA、OOD、OOP有机地集成在一起。有利于系统的稳定性.OOA(Object-OrientedAnalysis)OOD(Object-OrientedDesign)OOP(Object-OrientedProgram)以对象为中心各种构造系统,而不是以功能为中心,能很好地适应需求变化.4.具有良好的可重用性由于对象所具有的封装性和信息隐蔽,具有很强的独立性。理解面向对象的基本概念对于学习和掌握面向对象的开发方法是十分重要的。4.1.2面向对象的概念类(Class)对象(Object)消息(Information)多态性(Polymorphism)继承(Inheritance)永久对象(Persistentobject)1、对象(Object)对象(Object)是客观事物或概念的抽象表述,即对客观存在的事物的描述统称为对象。对象可以是事、物、或抽象概念,是将一组数据和使用该数据的一组基本操作或过程封装在一起的实体。属性(attribute)—对象本身的性质。操作(operation)—给对象定义一组运算。对象将它自身的属性及运算“包装起来”,称为“封装”(encapsulation).对象的最基本的特征是封装性和继承性。2、类(Class)类又称对象类(ObjectClass),是一组具有相同属性和相同操作的对象的集合。在一个类中,每个对象都是类的实例(instance),它们都可以使用类中提供的函数。类具有属性,用数据结构来描述类的属性,类具有操作,它是对象的行为的抽象,操作实现的过程称为方法(method),方法有方法名,方法体和参数。由于对象是类的实例,在进行分析和设计时,通常把注意力集中在类上,而不是具体的对象上。几何对象颜色位置移动(delta:矢量)选择(P:指针型):布尔型旋转(角度)图4.1对象类的描述人姓名:字符串年龄:整型改换工作改换地址文件文件名文件大小最近更新日期打印(人)张红兵28绘图员人民路8号(人)李军24程序员无图4.2对象的描述对象和类的描述对象和类一般采用“对象图”和“类图”来描述。类名属性运算对象类3、继承(Inheritance)继承是使用现存的定义作为基础,建立新定义的技术。是父类和子类之间共享数据结构和方法的机制,这是类之间的一种关系。继承性分:单重继承:一个子类只有一个父类。即子类只继承一个父类的数据结构和方法。多重继承:一个子类可有多个父类。继承多个父类的数据结构和方法。基类子类A子类B图4.4继承性描述现存类定义父类(基类)新类定义子类(派生类)继承图4.3继承性4、消息(Message)消息就是向对象发出的服务请求(互相联系、协同工作等)。对象之间的联系可表示为对象间的消息传递,即对象间的通讯机制。一个消息应该包含以下信息:消息名、接收消息对象的标识、服务标识、消息和方法、输入信息、回答信息。在对象的操作中当一个消息发送给某个对象时,消息包含接收对象去执行某种操作的消息。5、多态性和动态绑定多态性(Polymorphism)是指相同的操作或函数、过程作用于不同的对象上并获得不同的结果。即相同的操作的消息发送给不同的对象时,每个对象将根据自己所属类中定义的操作去执行,产生不同的结果。例如:“绘图”操作,作用在“椭圆”和“矩形”上,画出不同的图形。动态绑定(dynamicbinding)是在运行时根据对象接收的消息动态地确定要连接的服务代码。使用虚函数可实现动态联编,不同联编可以选择不同的实现,这便是多态性。继承是动态联编的基础,虚函数是动态联编的关键。多态性的实现举例实现多态性的基本步骤(以VC为例):(1)在基类中,定义成员函数为虚函数(virtual);(2)定义基类的公有(public)派生类;(3)在基类的公有派生类中“重载”该虚函数;(4)定义指向基类的指针变量,它指向基类的公有派生类的对象。注意:重载虚函数不是一般的重载函数,它要求函数名、返回类型、参数个数、参数类型和顺序完全相同。例如:下面是实现“多态性”的一个例子#includeiostream.hclassfigure//定义基类{protected:doublex,y;public:voidset_dim(doublei;doublej=0){x=i;y=j;}virtualvoidshow_area()//定义虚函数{cout“Noareacomputationdefine”;cout“forthisclass.\n”;}};(1)在基类中,将成员函数说明为虚函数(virtual);classfigureprotected:doublex,y;public:set_dim()virtualshow_area()图4.5类classtriangle:publicfigure//(2)定义基类的公有派生类{public:virtualvoidshow_area()//(3)“重载”该虚函数{求三角形面积}};classsquare:publicfigure//(2)定义基类的公有派生类{public:virtualvoidshow_area()//(3)“重载”该虚函数{求矩形面积}};classcircle:publicfigure//(2)定义基类的公有派生类{public:virtualvoidshow_area()//(3)“重载”该虚函数{求园面积}};p=&s;//指向矩形对象p-set_dim(10.0,5.0);p-show_area();p=&c;//指向园形对象p-set_dim(9.0);p-show_area();}voidmain(){figure*p;//定义指向基类的指针变量trianglet;//squares;//定义基类的公有派生类的对象circlec;//p=&t;//指向三角形对象p-set_dim(10.0,5.0);p-show_area();}(4)运行过程中实现“动态绑定”6、永久对象(Persistentobject)所谓永久对象是指生存期可以超越程序的执行时间而长期存在的对象。目前,大多数OOPL不支持永久对象,如果一个对象要长期保存,必须依靠于文件系统或数据库管理系统实现,程序员需要作对象与文件系统或数据库之间数据格式的转换,以及保存和恢复所需的操作等烦琐的工作。为了实现永久对象,使上述烦琐工作由系统自动完成,需要较强的技术支持;需要一个基于永久对象管理系统OMS(objectmanagementsystem),能够描述和处理永久对象的编程语言。4.3面向对象的分析面向对象分析OOA(Object-OrientedAnalysis)的目标是完成对所求解问题的分析,确定系统“作什么”,并建立系统的模型。OOA的基本任务运用面向对象的方法,对问题域和系统责任进行分析和理解,找出描述它们的类和对象,定义其属性和操作,及其结构、静态联系和动态联系。基本概念:问题域(problemdomain)—被开发系统的应用领域。系统责任(systemresponsibilities)—所开发的系统应具备的职能。4.3.1OOA的分析过程获取用户基本需求标识类和对象定义类的结构和层次表示类(对象)间的关系为对象行为建模图4.7OOA分析过程4.3.2OOA模型对象层特征层关系层交互图主题图详细说明基本模型(类图)图4.8OOA模型与详细说明基本模型是一个类图(classdiagram),是以直观的方式表达系统最重要的信息。OOA基本模型的三个层次分别描述了:系统中应设哪几类对象,每类对象的内部构成,对象与外部的关系。4.3.2OOA模型对象层特征层关系层交互图主题图详细说明基本模型(类图)主题(subject)又称为子系统(subsystem)是将一些联系密切的类组织在一起的类的集合。按照粒度控制原则,将系统组成几个主题,便于理解。4.3.2OOA模型对象层特征层关系层交互图主题图详细说明基本模型(类图)交互图(interactiondiagram)是Usecase与系统成分之间的对照图。主题图和交互图又称为补充模型。4.3.2OOA模型对象层特征层关系层交互图主题图详细说明基本模型(类图)详细说明按照分析方法所要求的格式,对分析模型进行说明和解释。主要以文字为主。OOA的特点1.有利于对问题及系统责任的理解;2.有利于人员之间的交流;3.对需求变化有较强的适应性;4.支持软件复用。面向对象的设计OOD(Object-OrientedDesign)是面向对象方法在软件设计阶段应用与扩展的结果。是将OOA所创建的分析模型转换为设计模型,解决如何作的问题。OOD与OOA没有明显的分界,采用相同的符号。4.4面向对象的设计4.4.1OOD基本任务1.系统设计将分析模型划分为若干子系统,子系统应该具有良好的接口,子系统内的类相互协作。标识问题本身的并发性,为子系统分配处理器。保险单填写界面系统内部保险单客户数据库界面(abstract)Oracle界面Sybasec界面子系统的分解是关键,可以有分层和分块:分层:将软件系统组织为层次结构,每层是一个子系统。分层结构又分为封闭式和开放式。分块:垂直分块是将系统分解为若干个相对独立的、弱耦合的子系统。每个子系统相当于一个块,每块实现一类服务。常常使用分层和分块的混合结构,如图所示:应用程序包人机对话控制窗口图形仿真程序包屏幕图形点阵图形操作系统计算机硬件4.4.1OOD基本任务2.对象设计在面向对象的系统中,模块、数据结构及接口等都集中体现在对象和对象层次结构中。对象设计是为每个类的属性和操作进行详细设计,包括属性和操作,它们的数据结构和实现算法。3.消息设计设计连接类与它的协作者之间的消息规约(specificationofthemessages)。4.优化及复审主要考虑提高效率和建立良好的继承结构。4.4.2OOD模型面向对象设计准则:1)模块化2)抽象3)信息隐藏4)弱耦合5)强内聚6)可重用介绍几种典型的面向对象的开发方法:Coda方法,Booch方法和OMT方法1、Coda/Yourdon方法—由OOA,OOD构成建立问题域的分析模型。该模型由5个层次组成:即主题层、对象层、结构层、属性层和服务层。要建立4个组元的设计模型:问题域组元、人机交互组元、任务管理组元和数据管理组元。该方法的特点是:简单、易学,对于对象、结构、服务的认定较系统、完整、可操作性强

1 / 55
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功