面向对象开发方法与uml简介

上传人:aa****6 文档编号:53073657 上传时间:2018-08-27 格式:PPT 页数:74 大小:1.16MB
返回 下载 相关 举报
面向对象开发方法与uml简介_第1页
第1页 / 共74页
面向对象开发方法与uml简介_第2页
第2页 / 共74页
面向对象开发方法与uml简介_第3页
第3页 / 共74页
面向对象开发方法与uml简介_第4页
第4页 / 共74页
面向对象开发方法与uml简介_第5页
第5页 / 共74页
点击查看更多>>
资源描述

《面向对象开发方法与uml简介》由会员分享,可在线阅读,更多相关《面向对象开发方法与uml简介(74页珍藏版)》请在金锄头文库上搜索。

1、第四章 面向对象开发方法与UML简介,2018年8月27日,第4章 面向对象开发方法与UML简介,4.1 面向对象开发方法 4.1.1 结构化开发方法 4.1.2 面向对象方法 4.2 统一建模语言简介,软件工程方法,结构化 复杂世界复杂处理过程(事情的发生发展) 设计一系列功能(或算法)以解决某一问题 寻找适当的方法存储数据 面向对象 任何系统都是由能够完成一组相关任务的对象构成 如果对象依赖于一个不属于它负责的任务,那么就需要访问负责此任务的另一个对象(调用其他对象的方法) 一个对象不能直接操作另一个对象内部的数据,它也不能使其它对象直接访问自己的数据 所有的交流都必须通过方法调用,举例:

2、五子棋游戏,面向过程(事件)的设计思路就是首先分析问题的步骤: 开始游戏,初始化画面 黑子走,绘制画面, 判断输赢,如分出输赢,跳至步骤6 白子走,绘制画面, 判断输赢,如未分出输赢,返回步骤2, 输出最后结果。 面向对象的设计思路是分析与问题有关的实体,实体间通过消息交互: 玩家:黑白双方,这两方的行为是一模一样的, 棋盘:负责绘制画面 规则:负责判定诸如犯规、输赢等。,结构化方法,使用结构化编程、结构化分析和结构化设计技术的系统开发方法 结构化编程 结构化设计 结构化分析 程序=数据结构+算法 以过程(事件)为中心的设计方法,结构化编程,具有一个开始和一个结束的程序或程序模块,并且在程序执

3、行中的每一步都由三个部分之一组成:顺序、选择或循环结构,结构化设计,从功能的观点设计系统 自顶向下,逐步分解和细化 将大系统分解为若干模块,主程序调用这些模块实现完整的系统功能,结构图,结构化分析,帮助开发人员定义系统需要做什么(处理需求),系统需要存储和使用哪些数据(数据需求),系统需要什么样的输入和输出以及如何把这些功能结合在一起来完成任务。 数据流图(DFD图) 实体-联系图(ER,IDEF1X),传统软件工程方法:结构化方法,问题域,需求分析,概要设计,详细设计,编码,测试,计算机,自然语言,传统的 编程语言,分析与设计的鸿沟,结构化方法的常见问题,需求的错误 不完整、不一致、不明确

4、开发人员和用户无法以同样的方式说明需求 需求分析方法与设计方法不一致,分析的结果不能平滑过渡到设计 需求的变化 需求在整个项目过程中始终发生变化 系统功能不断变化 许多变化出现在项目后期 维护过程中发生许多变化 系统结构的崩溃 系统在不断的变化中最终变得不可用,造成上述问题的根本原因,结构化方法以功能分解和数据流为核心,但是系统功能和数据表示极有可能发生变化 函数实现了过程抽象,但复杂的系统数据也复杂,结构化方法修改困难,数据,子程序,子程序,子程序,第4章 面向对象开发方法与UML简介,4.1 面向对象开发方法 4.1.1 结构化开发方法 4.1.2 面向对象开发方法 4.2 统一建模语言简

5、介,面向对象的程序开发,将数据和过程抽象在一起:对象,面向对象的程序开发,面向对象编程是一种实现的方法,程序被组织成许多组相互协作的对象,每个对象代表某个类的一个实例,而类则属于一个通过继承关系形成的层次结构。 在结构化程序开发模式中优先考虑的是过程抽象,在面向对象开发模式中优先考虑的是实体(问题论域的对象); 主要考虑对象的行为而不是必须执行的一系列动作; 对象是数据抽象与过程抽象的综合; 算法被分布到各种实体中; 消息从一个对象传送到另一个对象; 控制流包含在各个数据抽象中的操作内 系统的状态保存在各个数据抽象所定义的数据存储中;,二者的本质区别,面向过程的结构化系统 = 功能 + 数据

6、面向对象的系统 = 对象 + 消息,面向对象语言也能编写结构化系统!,面向对象方法的优势,面向对象模型更接近于问题域(尽可能模拟人类习惯的思维方式) 以问题域中的对象为基础建模 以对象、属性和操作对问题进行建模 反复细化高层模型直到可以实现的程度 努力避免在开发过程中出现大的概念跳变 将模型组织成对象的集合 真实世界中的具体事物 售货员、商品、仓库、顾客 飞机、机场等 逻辑概念 商品目录、生产计划、销售 操作系统中的分时策略、军事训练中的冲突解决规则等,面向对象方法,把系统看做是一起工作来完成某项任务的相互作用的对象的集合 面向对象分析 面向对象设计 面向对象编程,面向对象方法,面向对象分析(

7、Object Oriented Analysis, OOA) 分析和理解问题域,找出描述问题域和系统责任所需的类及对象,分析它们的内部构成和外部关系,建立OOA 模型。 面向对象设计(Object Oriented Design, OOD) 将OOA 模型细化,描述对象间交互,变成OOD 模型,并且补充与一些实现有关的部分,如人机界面、数据存储、操作细节等。 面向对象编程(Object Oriented Programming, OOP) 用一种面向对象的编程语言将OOD 模型中的各个成分编写成程序,由于从OOAOODOOP实现了无缝连接和平滑过渡,因此提高了开发工作的效率和质量。,OOA/D

8、,分析:强调的是对问题和需求的调查研究,而不是解决方案 面向对象分析过程中,强调的是在问题领域内发现和描述对象 设计:强调的是满足需求的概念上的解决方案(在软件方面和硬件方面),而不是其实现。 面向对象设计过程中,强调的是定义软件对象以及它们如何协作以实现需求。 有价值的分析和设计可以概括为:做正确的事(分析)和正确地做事(设计),面向对象方法,问题域,面向对象分析,面向对象设计,面向对象编程,面向对象测试,计算机,自然语言,面向对象的 编程语言,对象建模,面向对象的基本概念,对象(Object) 类(Class) 消息(Message) 封装(Encapsulation) 继承(Inheri

9、tance) 多态(Polymorphism),对象(Object),对象(Object):具有责任的实体。一个特殊的,自成一体的容器,对象的数据对于外部对象是受保护的。 特性:标识符(区别其他对象)、属性(状态)和操作(行为)。 属性(Attribute):与对象关联的数据,描述对象静态特性; 操作(Operation):与对象关联的程序,描述对象动态特性;,类(Class),类(Class):具有相同属性和操作的一组对象的抽象,它为属于该类的全部对象提供了统一的抽象描述。 类是概念定义,抽象了同类对象共同的属性和操作 对象是类的一个实例,类与对象的对比,类与对象的比较 “同类对象具有相同的

10、属性和操作”是指它们的定义形式相同,而不是说每个对象的属性值都相同。 类是静态的,类的存在、语义和关系在程序执行前就已经定义好了。 对象是动态的,对象在程序执行时可以被创建和删除。在面向对象的系统分析和设计中,并不需要逐个对对象进行说明,而是着重描述代表一批对象共性的类。,类与对象的对比,定义一个学生类:Class Student String sno;String sname;String dept;public Student (String sno, string sname, string dept) ;public boolean RegisterMyself() ;public b

11、oolean SelectCourses() ;private float QueryScore(int courseID) ; ,使用这个类:Student 张三 = new Student (“1080310501”, “张三”, “CS” ); Student 李四 = new Student (“1080310502”, “李四”, “CS” ); Student 王五 = new Student (“1080310503”, “王五”, “CS” );If ( 张三.RegisterMyself() = true) 张三.SelectCourses(); float score =

12、张三.QueryScore (32);,类(Class)的三种抽象层次,需求层次,分析层次,设计 层次,类名,属性,操作,类的属性(Attribute),类的属性:描述对象“静态”(结构)特征的一个数据项; 属性的“可见性”(Visibility)分类: 公有属性(public) + 私有属性(private) 保护属性(protected) #属性的表达方式: 可见性 属性名:数据类型=初始值,类的操作(或方法、服务,Operation/Method/Service),类的操作:描述对象“动态”(行为)的特征的一个函数或过程; 方法的“可见性”(Visibility)分类: 公有属性(pub

13、lic) + 私有属性(private) 保护属性(protected) # 方法的表达方式: 可见性 方法名(参数列表):返回值数据类型 例如:+ getNextSentence (int i) : string,消息(Message),消息(Message):一个对象向其他对象发出的请求,一般包含消息接收对象、接收对象所采用的方法、方法需要的参数、返回信息等; 一个对象向另一个对象发出消息请求某项服务; 另一个对象接收该消息,触发某些操作,并将结果返回给发出消息的对象; 对象之间通过消息通信彼此关联在一起,形成完整的系统。,加速,speed=myCar.speedup(1),封装(Enca

14、psulation),封装(Encapsulation):把对象的属性和操作结合成一个独立的单元,并尽可能对外界隐藏数据的实现过程; 一个对象不能直接操作另一个对象内部数据,它也不能使其他对象直接访问自己的数据,所有的交流必须通过方法调用。 getXXX() setXXX() 例如:对“汽车”对象来说,“司机”对象只能通过方向盘和仪表来操作“汽车”,而“汽车”的内部实现机制则被隐藏起来。,“封装”的作用,使对象形成两个部分:接口(可见)和实现(不可见),将对象所声明的功能(行为)与内部实现(细节)分离“封装”的作用是什么? 保护对象,避免用户误用; 保护客户端(调用程序),其实现过程的改变不会

15、影响到相应客户端的改变。,信息隐藏(Information Hiding),泛化/继承,泛化关系是类元的一般描述和具体描述之间的关系,具体描述建立在一般描述的基础之上,并对其进行了扩展。 在共享祖先所定义的成分的前提下允许它自身定义增加的描述,这被称作继承。,继承(Inheritance),继承(Inheritance):子类可自动拥有父类的全部属性和操作。,继承关系使类之间 形成层次化结构,单一继承:一个子类只有唯一的一个父类 多重继承:一个子类有一个以上的父类抽象类:把一些类组织起来,提供一些公共的行为,但不能使用这个类的实例(即从该类中派生出具体的对象),而仅仅使用其子类的实例。称不能建

16、立实例的类为抽象类。 抽象类中至少有一个方法被定义为“abstract”类型的。,class Graduate extends Student/methods and fields,继承(Inheritance),定义的父类型可用子类型替换,继承使用的原则 可替代性原则:子类必须能够替换它们的父类 Vehicle vehicles=new Vehicle3; vehicles0=new Car(); vehicles1=new Plane(); vehicles2=new Train();for(int i=0;ivehicles.length;i+)vehiclesi.start();vehiclesi.ring(); ,多态(Polymorphism),泛化使得多态操作成为可能,即操作的实现是由它们所使用的对象的类,而不是由调用者确定的。 多态性(Polymorphism):在父类中定义的属性或服务被子类继承后,可以具有不同的数据类型或表现出不同的行为。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > 教育/培训/课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号