5面向对象分析与设计1传统方法学的缺点(补充)问题的表现1)生产效率低2)不能满足用户需求3)软件复用程度低4)软件仍然很难维护(SA:1几个阶段描述工具不一致2数据与操作分离)5面向对象分析与设计2导致传统方法学缺陷的原因(补充)1结构化技术本身缺陷2预先定义的需求可能会过时3系统需求的模糊性4语言鸿沟5面向对象分析与设计3面向对象方法的发展•出发点和原则:模拟人类习惯的思维方式,使得软件开发过程接近人类解决问题的方法和过程•基本思想:使用对象、类、继承、封装、消息等基本概念来进行程序设计5面向对象分析与设计4面向对象方法概述(补充)客观世界的实体->对象•对象的内部特性实体静态属性->对象属性实体动态行为->对象操作(方法)•对象的外在特性:客观世界的实体之间的关系->对象间的关系•面向对象分析任务:标志类和对象,规定类的属性和操作5面向对象分析与设计5面向对象基本概念(补充)对象类和对象对象间的关系(继承,组成,动态,静态)面向对象程序设计风格•封装性•继承性•多态性几何形状5面向对象分析与设计65.1.1面向对象方法概述1、主要特点(对象及对象间相互关系)⑴用对象表示事务⑵对象的属性和服务⑶封装(属性和服务结合为一个独立实体)⑷类和对象(类似非面向对象语言的类型和变量)⑸一般类和特殊类⑹聚合(学生类与学号(字符串类))⑺用消息通信实现对象之间的动态联系。⑻通过关联表达对象之间的静态关系。5面向对象分析与设计7传统软件工程与面向对象软件工程•传统软件工程OOSE面向对象软件工程问题域需求分析总体设计详细设计测试计算机自然语言编程语言编程分析与设计的鸿沟问题域OOAOODOOT计算机自然语言面向对象的编程语言OOP5面向对象分析与设计85.1.2面向对象的软件工程方法面向对象的软件工程方法OOSE(ObjectOrientedSoftwareEngineering)定义:是面向对象方法在软件工程领域的全面运用过程:•面向对象分析OOA(ObjectOrientedAnalysis)•面向对象设计OOD(ObjectOrientedDesign)•面向对象编程OOP(ObjectOrientedProgramming)•面向对象测试和软件维护OOP(ObjectOrientedTest)5面向对象分析与设计95.1.2面向对象的软件工程方法OOA强调针对问题域中客观存在的各种事物建立OOA模型中的对象。并保留了问题域中事物之间关系2.面向对象的设计OOD则是针对系统的一个具体的实现运用OO方法。1.面向对象的分析(OOA)5面向对象分析与设计105.1.2面向对象的软件工程方法3.面向对象的编程•用一种面向对象的编程语言把OOD模型中的每个成分书写出来。•用具体的数据结构来定义对象的属性,用具体的语句来实现服务流程图所表示的算法。4.面向对象的测试•定义:对于用OO技术开发的软件,在测试过程中继续运用OO技术,进行以对象概念为中心的软件测试。•5.面向对象的软件维护5面向对象分析与设计115.1.3面向对象的基本概念和特征1对象定义:对象是问题域或实现域中某些事物的一个抽象,它反映该事物在系统中需要保存的信息和发挥的作用;对象对象就是一个包含数据以及与这些数据有关的操作的集合。每个实体都是对象。对象数据操作代码5面向对象分析与设计125.1.3面向对象的基本概念和特征特征2、消息和方法⑴消息:就是面向对象发出的服务请求,应含有提供服务的对象标识、服务标识、输入信息和回答信息。•消息接收者是提供服务的对象•消息发送者是要求提供服务的对象或其他系统成分。•消息中只包含发送者的要求,并不告诉接收者应该如何处理(隐蔽)返回消息可选5面向对象分析与设计135.1.3面向对象的基本概念和特征⑵方法方法实际上是类对象上的各种操作。•面向对象设计方法放弃了传统语言控制结构的概念,而是通过对象及消息传递来实现。5面向对象分析与设计14特征3、类和类层次——⑴类的定义5.1.3面向对象的基本概念和特征类是一组具有相同数据结构和相同操作的对象集合。类的定义包括一组数据属性和在数据上的一组合法操作。类定义可视为一个具有类似特性与共同行为的对象摸板,可用来产生对象。可以说,类是对象的抽象,而对象是类的具体实例。类名属性服务对象名服务属性5面向对象分析与设计155.1.3面向对象的基...