软件工程-8-面向对象概述课件

上传人:阳*** 文档编号:100733029 上传时间:2022-06-03 格式:PPT 页数:37 大小:700.50KB
返回 下载 相关 举报
软件工程-8-面向对象概述课件_第1页
第1页 / 共37页
软件工程-8-面向对象概述课件_第2页
第2页 / 共37页
软件工程-8-面向对象概述课件_第3页
第3页 / 共37页
点击查看更多>>
资源描述
Software Engineering第八章 面向对象基础一、软件工程主要方法论一、软件工程主要方法论v结构化分析和设计方法论结构化分析和设计方法论 也叫数据流建模方法论也叫数据流建模方法论 把现实世界描绘为数据在信息系统中的流动,在数把现实世界描绘为数据在信息系统中的流动,在数据流动过程中数据发生转化。据流动过程中数据发生转化。 通过自顶向下的程序设计将复杂的程序分解为程序通过自顶向下的程序设计将复杂的程序分解为程序模块的层次图。模块的层次图。v存在问题存在问题 面向过程方法大多基于瀑布模型面向过程方法大多基于瀑布模型 面向过程方法是将用户需求对应到软件功能上,而面向过程方法是将用户需求对应到软件功能上,而采用面向过程的处理方式来应对用户提出的功能上采用面向过程的处理方式来应对用户提出的功能上的变更造成了系统结构的不稳定。的变更造成了系统结构的不稳定。 过程分析和数据分析之间的边界问题始终没解决过程分析和数据分析之间的边界问题始终没解决v面向对象方法论 认为客观世界是由各种对象组成,任何事物都认为客观世界是由各种对象组成,任何事物都是对象,复杂的对象可以由比较简单的对象以是对象,复杂的对象可以由比较简单的对象以某种方式组合而成的。某种方式组合而成的。 把所有的对象划分成各种对象类(简称类把所有的对象划分成各种对象类(简称类 class)class),每个对象类都定义了一组数据和一组,每个对象类都定义了一组数据和一组方法。方法。 按照子类(或称为派生类)与父类(或称为基按照子类(或称为派生类)与父类(或称为基类)的关系,把若干个对象类组成一个层次结类)的关系,把若干个对象类组成一个层次结构的系统。构的系统。 对象彼此之间仅能通过传递消息互相联系。对象彼此之间仅能通过传递消息互相联系。v传统方法论与面向对象方法论的比较传统方法论与面向对象方法论的比较v例子例子 设计一个程序,对不同类型的图形求其面积,并打设计一个程序,对不同类型的图形求其面积,并打印结果。印结果。 请分别采用结构化思想和面向对象思想对问题展开请分别采用结构化思想和面向对象思想对问题展开分析。分析。 传统方法论传统方法论 面向对象方法论面向对象方法论 面向对象方法不再把程序看成工作在数据上的面向对象方法不再把程序看成工作在数据上的一系列过程或函数的集合,而是把程序看作是一系列过程或函数的集合,而是把程序看作是相互协作而又彼此独立的对象的集合。相互协作而又彼此独立的对象的集合。 每个对象可以看作是一个微型程序,有自己的每个对象可以看作是一个微型程序,有自己的数据、操作、功能和目的。数据、操作、功能和目的。v面向对象分析和设计解决的两个经典问题面向对象分析和设计解决的两个经典问题 传统的分析和设计方法将处理问题的数据模型传统的分析和设计方法将处理问题的数据模型和处理模型分离,而面向对象的方法将数据模和处理模型分离,而面向对象的方法将数据模型和处理模型二者合一。型和处理模型二者合一。 从系统分析能够平滑地过渡到系统设计。从系统分析能够平滑地过渡到系统设计。 UML将分析和设计模型统一,使用的符号统一,将分析和设计模型统一,使用的符号统一,设计模型是分析模型的完善和扩充。设计模型是分析模型的完善和扩充。v对象对象v类类v消息消息v封装封装v继承继承v多态多态二、面向对象基本概念二、面向对象基本概念v对象对象 定义定义 可以将问题域中任何事物都视为对象,可以将问题域中任何事物都视为对象,是具有一定知识和处理,是具有一定知识和处理能力的独立个体。它可以是具体的物理实体,如能力的独立个体。它可以是具体的物理实体,如一个文件;也可是是人为抽象概念的,如多任务一个文件;也可是是人为抽象概念的,如多任务操作系统中的调度策略。操作系统中的调度策略。 对象包含两个基本要素:对象包含两个基本要素: 属性:用于描述对象的静态特征,是反映类或对属性:用于描述对象的静态特征,是反映类或对象当前状态本质的数据项。象当前状态本质的数据项。 方法:用于描述对象的动态特征,反映对象的一方法:用于描述对象的动态特征,反映对象的一种行为,是对对象属性的操作、服务。种行为,是对对象属性的操作、服务。 对象的形象化表示对象的形象化表示对象对象属性属性方法3方法1操作操作1方法2操作操作2操作操作3界界面面v类类 定义定义 具有相同属性和行为的一组对象的集合具有相同属性和行为的一组对象的集合 类与对象的关系类与对象的关系 类是对象的抽象类是对象的抽象 对象是类的实例对象是类的实例 类的描述方法类的描述方法v消息消息 定义定义 消息是用来请求对象执行某一处理或回答某一要求的消息是用来请求对象执行某一处理或回答某一要求的信息,是对象之间建立的一种通信机制,它统一了数信息,是对象之间建立的一种通信机制,它统一了数据流和控制流。据流和控制流。 通常一个消息由三部分组成:通常一个消息由三部分组成: 对象名:接收消息的对象对象名:接收消息的对象 消息名:要求接收对象完成的操作消息名:要求接收对象完成的操作 参数:执行操作时的参数或操作返回的结果参数:执行操作时的参数或操作返回的结果 例如例如 MyCircle.Show(Green): MyCircle是接收消息的对象的名字,是接收消息的对象的名字,Show是消息名,是消息名,Green是消息的参数。是消息的参数。 MyCircle.ChangeColor(Green); 消息的表示形式消息的表示形式 student.read(in books, out report)消息接收者消息接收者参数类型参数类型 输入参数输入参数操作操作消息消息v 封装性封装性 是面向对象的主要特征之一,它是一种信息隐蔽技术,它体是面向对象的主要特征之一,它是一种信息隐蔽技术,它体现于类的说明。现于类的说明。 封装使数据和加工该数据的方法(函数)封装为一个整体,封装使数据和加工该数据的方法(函数)封装为一个整体,使得用户只能见到对象的外部特性,而对象的内部特性对用使得用户只能见到对象的外部特性,而对象的内部特性对用户是隐蔽的。户是隐蔽的。 v 继承性继承性 是子类自动共享父类之间数据和方法的机制。是子类自动共享父类之间数据和方法的机制。 一个类直接继承其它类的全部描述,同时可修改和扩充。一个类直接继承其它类的全部描述,同时可修改和扩充。 继承能够直接获得已有的性质和特征,而不必重复定义它们。继承能够直接获得已有的性质和特征,而不必重复定义它们。 v 多态性多态性 是对象根据所接收的消息而做出动作。是对象根据所接收的消息而做出动作。 同一消息为不同的对象接受时可产生完全不同的行动,这种同一消息为不同的对象接受时可产生完全不同的行动,这种现象称为多态性。现象称为多态性。 三、为何使用三、为何使用UMLUMLvUML 统一建模语言统一建模语言(UML)是描述、构造和文档化系统制是描述、构造和文档化系统制品的可视化语言品的可视化语言1.UML1.UML的应用方式的应用方式v应用方式应用方式 UML作为草图作为草图 非正式的、不完整的图,借助可视化语言的功能,用非正式的、不完整的图,借助可视化语言的功能,用于探讨问题或解决方案空间的复杂部分。于探讨问题或解决方案空间的复杂部分。 UML作为蓝图作为蓝图 相对详细的设计图相对详细的设计图 逆向工程逆向工程 前向工程(代码生成)前向工程(代码生成)vUML只是一种工具只是一种工具 UML并不是面向对象分析和设计的全部,它只是一并不是面向对象分析和设计的全部,它只是一种手段,一种工具。我们需要通过自己对对象的理种手段,一种工具。我们需要通过自己对对象的理解和面向对象分析设计技术的掌握来进行系统的分解和面向对象分析设计技术的掌握来进行系统的分析和设计,然后通过析和设计,然后通过UML的形式来进行表述。的形式来进行表述。2.UML2.UML的三种透视图的三种透视图v概念透视图概念透视图 用图来描述现实世界或关注领域中的事物用图来描述现实世界或关注领域中的事物v设计透视图设计透视图 用图来描述软件的抽象物或具有规格说明和接口的用图来描述软件的抽象物或具有规格说明和接口的构件,但是并不约束特定实现构件,但是并不约束特定实现v实现透视图实现透视图 用图来描述特定技术中的软件实现用图来描述特定技术中的软件实现vUML的不同视图的不同视图四、软件开发过程模型四、软件开发过程模型vRUP过程模型过程模型vUP阶段(按照时间进行的内容阶段(按照时间进行的内容-横轴)横轴)UP将其工作和迭代组织为四个主要阶段将其工作和迭代组织为四个主要阶段 初始:初始: 大体上的构思、业务案例、范围和模糊评估大体上的构思、业务案例、范围和模糊评估 细化:细化: 已精化的构思、核心架构的迭代实现、高风险的解已精化的构思、核心架构的迭代实现、高风险的解决、确定大多数需求和范围以及进行更为实际的评决、确定大多数需求和范围以及进行更为实际的评估估 构造:构造: 对遗留下来的风险较低和比较简单的元素进行迭代对遗留下来的风险较低和比较简单的元素进行迭代实现,准备部署。实现,准备部署。 交付:交付: 进行测试和部署进行测试和部署1.UP1.UP的阶段和制品的阶段和制品v UP阶段(每个阶段的活动组成阶段(每个阶段的活动组成-纵轴)纵轴) 纵轴表示的是在每次迭代过程中都要经历的工作流程(有一定纵轴表示的是在每次迭代过程中都要经历的工作流程(有一定顺序的活动)。顺序的活动)。 业务建模业务建模 理解待开发系统所在的机构及其商业运作,确保所有人理解待开发系统所在的机构及其商业运作,确保所有人员对它有共同的认识,评估待开发系统对结构的影响;员对它有共同的认识,评估待开发系统对结构的影响; 需求需求 定义系统功能及用户界面,为项目预算及计划提供基础;定义系统功能及用户界面,为项目预算及计划提供基础; 分析与设计分析与设计 把需求分析结果转换为分析与设计模型;把需求分析结果转换为分析与设计模型; 实现实现 把设计模型转换为实现结果,并做单元测试,集成为可把设计模型转换为实现结果,并做单元测试,集成为可执行系统;执行系统; 测试测试 验证所有需求是否已经被正确实现,对软件质量提出改进意验证所有需求是否已经被正确实现,对软件质量提出改进意见;见; 部署部署 打包、分发、安装软件,培训用户及销售人员;打包、分发、安装软件,培训用户及销售人员; 配置与变更管理配置与变更管理 跟踪并维护系统开发过程中产生的所有制品的完整性和一致跟踪并维护系统开发过程中产生的所有制品的完整性和一致性;性; 项目管理项目管理 为软件开发项目提供计划、人员分配、执行、监控等方面指为软件开发项目提供计划、人员分配、执行、监控等方面指导,为风险管理提供框架;导,为风险管理提供框架; 环境环境 为软件开发机构提供软件开发环境。为软件开发机构提供软件开发环境。2.2.判断你是否理解迭代开发或判断你是否理解迭代开发或UPUPv下面列出一些迹象表明你并没有理解迭代开发和下面列出一些迹象表明你并没有理解迭代开发和UP的真正含义的真正含义 在开始设计或实现之前试图定义大多数需求在开始设计或实现之前试图定义大多数需求 在编程之前花费数日或数周进行在编程之前花费数日或数周进行UML建模。建模。 认为初始阶段认为初始阶段=需求阶段,细化阶段需求阶段,细化阶段=设计阶段,构设计阶段,构造阶段造阶段=实现阶段实现阶段 认为细化的目的是完整仔细地定义模型,以能够在认为细化的目的是完整仔细地定义模型,以能够在构造阶段将其转换成代码构造阶段将其转换成代码 试图对项目从开始到结束制定详细计划;试图对项目从开始到结束制定详细计划; 试图预测所有迭代,以及每个迭代中可能发生的事试图预测所有迭代,以及每个迭代中可能发生的事情情v 目前计算机系有一个系内小型图书馆(资料室)。它主要用来存目前计算机系有一个系内小型图书馆(资料室)。它主要用来存放系里老师自行购买并由学校报销过的图书资料。这部分图书资放系里老师自行购买并由学校报销过的图书资料。这部分图书资料存放在一个资料室中,图书的借阅手续和图书馆的图书借阅手料存放在一个资料室中,图书的借阅手续和图书馆的图书借阅手续相同。续相同。v 但是,目前存在一些问题:但是,目前存在一些问题: 查阅过程中,老师们并不清楚资料室中有什么资料。查阅过程中,老师们并不清楚资料室中有什么资料。 由于资料室中的图书借阅期限较长(一般为三个月),很多老由于资料室中的图书借阅期限较长(一般为三个月),很多老师往往忘记归还手中的资料。师往往忘记归还手中的资料。 老师自己购买的私人图书(藏书),可能会根据研究领域的变老师自己购买的私人图书(藏书),可能会根据研究领域的变化而会出现资源闲置的情况。而此时,其他的老师有可能正在化而会出现资源闲置的情况。而此时,其他的老师有可能正在寻找这方面的资料。寻找这方面的资料。 老师们在私下里经常相互借阅图书,但经常出现时间长了自己老师们在私下里经常相互借阅图书,但经常出现时间长了自己想用书时,又不知到借给谁了,或者是想还书时,忘记从谁那想用书时,又不知到借给谁了,或者是想还书时,忘记从谁那里借的了。里借的了。 老师之间相互进行图书的借阅只限制在小范围内,其他教研室老师之间相互进行图书的借阅只限制在小范围内,其他教研室的资源则很大程度上需要老师之间的相互打听。的资源则很大程度上需要老师之间的相互打听。v 是否能够解决这些问题,使这些图书资源尽可能地被充分利用呢,是否能够解决这些问题,使这些图书资源尽可能地被充分利用呢,使资源的流动处在一个有序透明的状态之下呢?使资源的流动处在一个有序透明的状态之下呢?五、启动项目五、启动项目1.1.过程模型过程模型v 初始阶段的任务初始阶段的任务 建立一个项目前景,说明哪些是目标,哪些不是建立一个项目前景,说明哪些是目标,哪些不是 讨论所组成的系统的用例,写出项目用例的初稿,确定用例讨论所组成的系统的用例,写出项目用例的初稿,确定用例的优先级的优先级 对系统体系结构重要的用例和对系统体系结构重要的用例和/或用例路径或用例路径 对项目的四个阶段(开始、细化、构造、交付)的高层阶段对项目的四个阶段(开始、细化、构造、交付)的高层阶段进行规划,并对前述步骤中识别出来的体系结构重要的需求,进行规划,并对前述步骤中识别出来的体系结构重要的需求,制定详细的迭代计划。制定详细的迭代计划。 确定风险,并估计在风险发生时应该如何解决它们确定风险,并估计在风险发生时应该如何解决它们 建立一个开发环境(选择、安装并配置开发工具)建立一个开发环境(选择、安装并配置开发工具)2.2.编写开发案例编写开发案例v定义定义 一个开发案例是对你如何为自己的项目定制这一开一个开发案例是对你如何为自己的项目定制这一开发过程的描述,它将描述如何根据需要采用发过程的描述,它将描述如何根据需要采用RUP。 v 样例项目中使用案例样例项目中使用案例初始阶段 细化阶段 构造阶段 移交阶段业务建模领域模型CVSS,MSword&MSvisio系统分析师用例模型CM正规的VSS,MSword&MSvisio系统分析师补充性规格说明CM正规的VSS,MSword&MSvisio系统分析师词汇表CMVSS&MS word系统分析师用户界面原型CDreamWeaver用户界面设计师前景CM正规的VSS&MS word系统分析师设计模型CM正规的VSS,MSword&MSvisio软件架构师软件架构文档CM正规的VSS&MS word技术文档作者数据模型CM正规的VSS&PowerDesign数据设计师实现项目管理工作流程需求分析和设计负责人制品如何使用审阅的详细情况使用的工具v角色映射角色映射角色石冬凌张应博邹启杰贾跃系统分析师系统分析师X用户界面设计师用户界面设计师X数据设计师数据设计师X软件架构师软件架构师X集成工程师集成工程师X实现人员实现人员XXXX测试设计师测试设计师XX测试人员测试人员XXXX部署经理部署经理X技术文档作者技术文档作者X配置经理配置经理X项目经理项目经理X过程工程师过程工程师X工具专家工具专家XXXXv开发案例中的制品开发案例中的制品 项目前景项目前景 风险列表风险列表 用例模型用例模型 设计模型设计模型 构件构件 测试计划测试计划 测试用例测试用例 测试结果测试结果 产品(交付给用户的完整产品(交付给用户的完整系统)系统) 发布说明发布说明 终端用户支持终端用户支持材料材料 迭代计划迭代计划 迭代评估迭代评估 项目计划项目计划 开发案例开发案例 编程指南编程指南 工具工具v初始阶段的计划初始阶段的计划v定义定义 系统需要补充更多的实质性的内容。明确项目前景系统需要补充更多的实质性的内容。明确项目前景的描述有助于帮助项目团队理解自己要构建的内容。的描述有助于帮助项目团队理解自己要构建的内容。一个清晰的前景是开发一个满足涉众真正需求的产一个清晰的前景是开发一个满足涉众真正需求的产品的关键品的关键 。v对前景的陈述应该能回答以下问题:对前景的陈述应该能回答以下问题: 我们尝试解决的问题是什么?(问题陈述)我们尝试解决的问题是什么?(问题陈述) 我们需要构建什么而不是构建什么?我们需要构建什么而不是构建什么? 涉众是谁?用户是谁?他们各自的需求是什么?涉众是谁?用户是谁?他们各自的需求是什么? 关键术语是什么?(词汇表)关键术语是什么?(词汇表) 产品的特性是什么?产品的特性是什么? 功能性需求是什么?(用例)功能性需求是什么?(用例) 非功能性需求是什么?非功能性需求是什么? 设计约束是什么?设计约束是什么?3.3.确定项目前景确定项目前景v 业务词汇业务词汇本章知识点总结本章知识点总结v面向对象基础面向对象基础 软件工程主要方法论软件工程主要方法论 面向对象知识回顾面向对象知识回顾 为何使用为何使用UML 软件开发过程模型软件开发过程模型 项目启动项目启动
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!