第07章 面向对象的分析和设计

合集下载

第七章 包图-UML面向对象分析、建模与设计-吕云翔-清华大学出版社

第七章 包图-UML面向对象分析、建模与设计-吕云翔-清华大学出版社
包图
包图的基本概念
包图是用来描述模型中的包和所包含元素的组织方式的图,是维护 和控制系统总体结构的重要内容。包图能够组织许多UML中的元素, 不过其最常用的用途是用来组织用例图和类图。
在UML 1.X规范中,虽然没有明确规定包图属于一种图类型,却可以 使用包及包的关系来表示系统的结构,包图作为实际上存在并经常被 使用的一种图出现在UML中。最新的UML 2规范中已经明确定义了包 图。
元素的分包原则
元素不能“狡兔三窟”:树形结构的一个节点不能同时拥有两个父 节点,一个元素也不允许在两个包中重复出现。
相同包内元素不能重名:包所具有的命名空间的作用要求用一个包 中的同种类元素名称必须是唯一的。
包内元素要紧密联系:分在同一个包中的元素应该具有某些相同的 性质,即包的高内聚性。
包与包尽可能保持独立:包和包之间需要尽可能减少耦合度,要求 包内元素与外部元素有尽可能少的依赖关系。
DataType
+ Intege 元素的分包原则
包的概念
pkg Logical View
包是用于把模型本身组织成层次结构的通用机制, PackageName 它不能执行。
PackageName
+ ContentA + ContentB
包名:与类图相似,包有简单名与路径名两种命 pkg Logical View
PackageB
包的依赖关系
容易出现的问题:循环依赖
pkg Logical View PackageA
循环依赖的出现是令人困惑、也是非常容易
产生错误的。尤其是当依赖关系表示包的引 pkg Logical View PackageA
入时,循环依赖会导致将模型转化成代码后

面向对象分析与设计

面向对象分析与设计

面向对象分析与设计在软件开发过程中,面向对象分析与设计(Object-Oriented Analysis and Design,简称OOAD)是一种重要的方法论。

通过OOAD,开发者可以将现实世界中的概念和问题转化为软件系统的结构和行为。

一、什么是面向对象分析与设计?面向对象分析与设计是一种以对象为核心的开发方法。

它强调将问题领域的实体、关系和行为抽象为对象、类和方法。

面向对象的分析阶段主要关注问题领域的需求和约束,而设计阶段则更关注如何将需求转化为可执行的软件系统。

二、面向对象分析与设计的优势1. 模块化:面向对象的方法将复杂的系统拆分为多个独立的对象,每个对象都有清晰的职责和接口。

这种模块化可以提高代码的可维护性和可复用性。

2. 继承与多态:继承是面向对象编程中的重要特性,它允许新的类继承已有类的属性和方法。

多态则允许对象在不同上下文中表现出不同的行为。

这些特性使得代码更加灵活和易于扩展。

3. 封装与信息隐藏:面向对象的方法将数据和操作封装在对象内部,外界只能通过对象的接口进行交互。

这种封装和信息隐藏可以保护数据的完整性和安全性。

4. 规范化的开发流程:面向对象的分析与设计有一套规范的开发流程,包括需求分析、概念设计、详细设计和实现等阶段。

这种流程可以提高开发效率,并减少错误和重复工作。

三、面向对象分析与设计的过程1. 需求收集与分析:在这个阶段,开发者与用户密切合作,收集和分析系统的业务需求。

通过访谈、文档分析等方法,确定系统的功能、性能和约束等方面的要求。

2. 概念设计:在概念设计阶段,开发者将业务需求转化为概念模型。

通过绘制用例图、类图、状态图等工具,描述系统的结构和行为。

3. 详细设计:在详细设计阶段,开发者将概念模型进一步细化,确定具体的类和接口。

同时,还需要考虑系统的性能、安全和可维护性等方面的问题。

4. 编码与测试:在编码阶段,开发者根据详细设计的要求,使用具体的编程语言实现系统。

07章 面向对象的分析和设计(钱乐秋版)

07章 面向对象的分析和设计(钱乐秋版)

面向对象分析
• 用基本的需求为指南,来选择类和对象(包括属性和操作)。
• 定义类的结构和层次。 • 建造对象—关系模型。 • 建造对象—行为模型。 • 利用用况/场景来复审分析模型。
8
面向对象分析模型的组成结构
操作、
类/对象 对象-关 模型 使用实例 系模型
(Use Case)
对象-行为模型
9
分析过程
16
2) 标识问题本身的并发性,并为子系统分配处理 器 通过对对象--行为模型的分析,可发现系统 的并发性。如果对象(或子系统)不是同时活动的, 则它们不需并发处理,此时这些对象(或子系统) 可以在同一个处理器上实现。反之,如果对象(或 子系统)必须对一些事件同时异步地动作,则它们 被视为并发的,此时,可以将并发的子系统分别分 配到不同的处理器,或者分配在同一个处理器,而 由操作系统提供并发支持。
4
面向对象的基本概念
1. 对象(object)
2. 类(class)
3. 继承(inheritance) 4. 消息(message) 5. 多态性(polymorphism) 6. 动态绑定(dynamic binding)
5
内容摘要
面向对象的基本概念 面向对象的分析和设计过程 UML概述
用况建模
21
3. 消息设计
• 使用对象间的协作和对象--关系模型, 设计消息模型 4. 复审
• 复审设计模型并在需要时迭代。
22
典型的面向对象方法
Coad & Yourdon 方法
OMT方法(James Rumbaugh 创立的 Object Model Technology)
Booch方法 OOSE方法 (Jacobson创立的 )

软件工程面向对象的分析与设计

软件工程面向对象的分析与设计
软件的质量和开发效率
-
THANKS!
XX生活即将结束,在此,我要感谢所有教导我的老师和陪 伴我一齐成长的同学,他们在我的大学生涯给予了很大的帮助。本论 文能够顺利完成,要特别感谢我的导师XXX老师,XXX老师对该论文从选题,构
思到最后定稿的各个环节给予细心指引与教导,使我得以最终完成毕业论文设计! 最后,我要向百忙之中抽时间对本文进行审阅,评议和参与本人论文答辩的各位
识别类和继承
通过类和继承,我们可以组织具有相似属性和行为的对象。类 定义了一组对象的通用属性和行为,而继承则允许我们从一个 类派生出另一个类,从而共享和扩展其属性和行为
定义接口
接口定义了类或对象之间的交互方式。它描述了对象需要提供 的方法和需要遵守的协议
面向对象的分析
通过面向对象的分析, 我们可以更准确地理 解和描述软件系统的 需求,为后续的设计 和实现打下坚实的基 础
2
面向对象的 设计
面向对象的设计
面向对象的设计(Object-Oriented Design,OOD)是软件工程过程中的一个关键阶段 ,其目标是基于面向对象的分析结果,设计出满足系统需求的软件结构
识别类和对象:根据面向对象的分析结果,识别出系统中的主要类和对象。这些类和 对象应该能够准确地反映问题域的特征和需求
和操作方式
设计数据库:根据系统的数 据需求,设计出合适的数据 库结构。数据库应该能够有 效地存储和管理系统的数据
设计系统架构:根据系统的 功能需求和性能要求,设计 出合适的系统架构。系统架 构应该能够支持系统的可扩 展性、可维护性和可重用性
面向对象的设计
通过面向对象的设计,我们可 以设计出结构清晰、易于理解 和实现的软件系统,从而提高
面向对象的分析

面向对象分析与设计

面向对象分析与设计

1.1软件开发过程1.2 面向对象技术面向对象(Object-oriented)技术是一种新型程序设计方法,或者说它是一种新的程序设计范型,其基本思想是使用对象、类、封装、继承、聚合、关联、消息、多态等基本概念来构造系统的软件开发方法。

它充分体现了分解、抽象、模块化、信息隐蔽等思想,可以有效地提高软件生产率、缩短软件开发时间、提高软件质量,是控制软件复杂性的有效途径。

(1)传统结构化方法与面向对象方法比较?传统的结构化方法着眼于一个信息系统需要什么样的方法和处理过程。

以过程抽象来对待系统的需求,其主要思想就是对问题进行功能分解,如果分解后得到的功能过大,那么再对这些功能进行分解,直到最后分解得到的功能能比较方便地处理和理解为止。

它从算法的角度进行建模,所有的软件都用过程或者函数作为其主要构造块,所以,具有模型脆弱、难以适应需求的变动、维护较困难等特点。

与传统的结构化方法相比,面向对象方法在描述和理解问题域时采用截然不同的方法。

其基本思想是,对问题域进行自然分割,以更接近人类思维方式建立问题域模型,从而使设计出的软件尽可能直观地描述现实世界,具有更好的可维护性,能适应用户需求的变化。

面向对象技术优点:首先,用面向对象技术开发的系统比较稳定,较小的需求变化不会导致大的系统结构的改变。

其次,用面向对象技术开发的系统易于理解。

结构化方法和面向对象方法对现实世界采用了不同的映射方法。

在结构化方法中,现实世界被映射为功能的集合;在面向对象方法中,现实世界中的实体及其相互关系被映射为对象及对象间的关系,实体之间的相互作用被映射为对象间的消息发送,以及其他类似的各种映射关系。

第三,采用面向对象技术开发的系统具有更好的适应性,能更好地适应用户需求的变化,有助于改造大型软件系统。

第四,用面向对象技术开发的系统具有更高的可靠性,有助于软件的维护与复用。

第五,面向对象技术有助于提高软件的质量和生产率。

(2)面向对象的基本原则抽象、封装、委托、分类、继承1.3 面向对象基本概念对象:对象(object)是系统中用来描述客观事物的一个实体,它是构造系统的一个基本单位。

ch07面向对象分析设计.ppt

ch07面向对象分析设计.ppt
❖ 最终产生一个符合用户需求,并能够直接反应问 题域和系统责任的问题域模型及其详细说明。
第7章 面向对象分析与设计
▪ 按业务相关性可拆分为:管理用户信息用例(添 加用户、修改用户信息)、管理用户用例(删除 用户、查找用户)、管理用户权利用例(修改 用户口令、变更用户级别)三个用例。
第7章 面向对象分析与设计
信息系统分析与设计
二、用例的优化与组织
3.用例的组织 ❖ 较大的系统往往包含许多用例,为了更好的理解
和管理它们,我们可以通过两种方式进行组织: ❖ 用“包(Package)”来组织: ❖ 用用例的级别层次关系来组织。 ❖ 在大型的软件开发过程中,用例图可以分层建立。 ❖ 在建模的开始阶段,注意保持用例图是对系统功
第7章 面向对象分析与设计
信息系统分析与设计
参与者→职责→用例
从发货者(Shipper)识别
❖ 发货者要求系统提供什么功能? ▪ 仓库存储物品的管理; ▪ 发货处理。
❖ 发货者需要做什么? ▪ 从所有的定单中按顺序挑选出优先级较高的定单来发货; ▪ 在发货单上签上发货的品名、数量。
❖ 发货者需要阅读、创建、销毁、更新或存储系统的某些信息 吗?
第7章 面向对象分析与设计
信息系统分析与设计
用例图的关系识别
❖ 包含关系:系统分析员应该检查模型中的每个用例,提炼 出公共的部分,创建单独的用例,并用包含关系与基本用 例连接。这样会降低原来的用例复杂性,增加用例的复用 性。
❖ 扩展关系:系统分析员检查每个用例,如果发现一个用例 比较大,并且其中既包含了一般处理又包含了特殊处理, 那么就应该将特殊处理的部分提取出来,创建单独的用例, 并且用扩展关系连接这个用例与相关的用例。这样会降低 原来的用例复杂性,处理更简单。

软件工程第7章 面向对象分析与设计

软件工程第7章 面向对象分析与设计

第7章
7.4 建立功能模型
用数据流图建立功能模型的主要步骤如下: (1)确定输入和输出值; (2)用数据流图表示功能的依赖性; (3)具体描述每个功能;
(4)确定对象的约束;
(5)确定功能优化的准则。 功能模型中的数据流图往往形成一个层次结构。在这个层次结构中,一个数据流图中的
过程(即处理)可以由下一层的数据流图作进一步说明。
以建立这些相似类的新父类,并在类的不同层次中正确定义各个服务。
第7章
7.3 建立动态模型
动态模型描述系统的动态行为,表现对象在系统运行期间不同时刻的动态交互。 下列三个因素有关: (1)状态。状态是对象在其生存周期中的某个特定阶段所具有的行为模式,它是对影 响对象行为的属性值的一种抽象。状态规定了对象对输入事件的响应方式。对象对输入事件 的响应,既可以执行一个或一系列动作,也可以是仅仅改变对象本身的状态。状态有持续性, 占用一段时间间隔。 (2)事件。事件是一个触发行为,是引起对象状态转换的控制信息,是引起对象从一 种状态转换到另一种状态的事情的抽象。事件没有持续的时间,是瞬间完成的。 (3)行为。行为也称服务,是指对象在某种状态下所做的一系列处理操作,行为是需 要消耗时间的
形成文件并规范地加以表述; (2)识别解决问题的对象集合及对象间的关系; (3)定义类(包括定义其属性和操作)并建立类间的层次关系; (4)通过建立模型来表示对象之间的关系及行为特性。
第7章
7.1 面向对象分析
7.1.2 面向对象分析的过程
第7章
7.1 面向对象分析
7.1.2 面向对象分析的过程
第7章
面向对象的分析与设计
理解面向对象分析的主要任务和一般过程;
本章 要点
初步掌握对象模型的建立方法; 了解动态模型和功能模型的建立方法; 理解面向对象设计的基本模型及主要内容。

第07章 面向对象的分析设计方法

第07章 面向对象的分析设计方法

第7章 面向对象的分析和设计方法
7.3 面向对象的设计 设计则是把分析阶段得到的需求转变成符合成本和 质量要求的、抽象的系统实现方案的过程。 质量要求的、抽象的系统实现方案的过程。 一、面向对象设计的基本概念 1.面向对象设计的框架 图7.13多层次、多组成部分模型 13多层次 多层次、 2.对象描述 2.对象描述
第7章 面向对象的分析和设计方法
二、确定对象、类 确定对象、 1.确定对象 (1)问题域和系统责任 (2)正确地运用抽象原则 (2)正确地运用抽象原则 (3)策略与启发 (3)策略与启发 2.对象分类、建立类图的对象层 对象分类、 (1)异常情况的检查和调整 (1)异常情况的检查和调整 (2)类的命名 (2)类的命名 (3)建立类图的对象层 (3)建立类图的对象层
第7章 面向对象的分析和设计方法
二、面向对象设计的方法 1.面向对象设计的准则 1.面向对象设计的准则 (1)模块化 (2)抽象 (3)信息隐藏 (4)弱耦合 (5)强内聚
第7章 面向对象的分析和设计方法
(6)可扩充性 (7)可集成性 (8)支持复用 (9)类的设计准则 2.面向对象的基本设计方法 2.面向对象的基本设计方法 (1)面向对象设计范式与过程设计范式 (1)面向对象设计范式与过程设计范式 (2)两种范式的比较 (2)两种范式的比较
第7章 面向对象的分析和设计方法
3.OOA过程 3.OOA过程 ①发现对象、定义它们的类。 发现对象、定义它们的类。 ②识别对象的内部特征: 识别对象的内部特征: ③识别对象的外部关系: 识别对象的外部关系: ④划分主题,建立主题图。 划分主题,建立主题图。 ⑤定义用例(use case),建立交互图: 定义用例( case) 建立交互图: ⑥建立详细说明:这是对模型的详细定义与解释,可以作为一 建立详细说明:这是对模型的详细定义与解释, 个独立的活动,更自然的做法是分散在其他活动之中。 个独立的活动,更自然的做法是分散在其他活动之中。 ⑦原型开发:这项可在OOA过程中反复进行。 原型开发:这项可在OOA过程中反复进行 过程中反复进行。

面向对象分析与设计

面向对象分析与设计

面向对象分析与设计面向对象分析与设计(Object-oriented analysis and design)是软件工程领域中的一种方法论,用于解决软件系统开发过程中的问题和需求。

本文将对面向对象分析与设计的基本概念、流程和常用方法进行介绍,并附带答案和解析。

第一部分:面向对象分析(Object-oriented analysis)面向对象分析是软件开发过程中的第一步,旨在理解问题域并建立领域模型。

面向对象分析有以下几个重要概念:1. 对象(Object):对象是系统中的一个实体,包含数据和方法。

对象可以是具体的实物、虚拟的概念或一组相关的数据和行为。

2. 类(Class):类是一种抽象的定义,描述了一组具有相同特征和行为的对象。

3. 属性(Attribute):属性是对象的特征,用于描述对象的状态。

4. 方法(Method):方法是对象的行为,用于描述对象可以执行的操作。

面向对象分析的主要流程包括以下步骤:1. 需求收集:收集系统的需求,与利益相关者沟通,了解系统的功能和性能要求。

2. 领域建模:对现实世界的问题域进行抽象和建模,识别出系统中的对象和它们之间的关系。

3. 需求分析与规约:通过使用用例、活动图和状态图等工具对需求进行分析和规约,明确功能和交互细节。

4. 领域模型验证:与利益相关者验证领域模型的准确性和实用性,确保模型能够满足系统需求。

第二部分:面向对象设计(Object-oriented design)面向对象设计是在面向对象分析的基础上,进一步细化领域模型,为系统的实现提供指导。

面向对象设计有以下几个常用方法:1. 类图(Class diagram):类图用于展示类、属性和方法之间的关系。

类图包括类的名称、属性和方法,并通过关联、继承和聚合等关系展示类之间的联系。

2. 对象图(Object diagram):对象图用于展示类的实例和对象之间的关系。

对象图是类图的实例化表示,展示了系统在某一时刻的对象及其特定的属性值。

面向对象的分析与设计课程设计

面向对象的分析与设计课程设计

面向对象的分析与设计课程设计1. 课程概述面向对象的分析与设计是计算机科学和软件工程领域中非常重要的课程之一。

这门课程主要介绍了面向对象的编程思想以及面向对象的分析与设计方法。

学生将学习面向对象的基本概念、面向对象的分析及设计方法和工具、使用面向对象的设计模式等。

本课程旨在让学生掌握如下内容:1.熟悉面向对象的编程思想,并能使用Java语言进行面向对象的编程;2.掌握面向对象的分析方法和对象设计原则;3.熟悉UML建模语言,并能使用UML进行面向对象的分析和设计;4.学会如何使用设计模式来解决软件开发中的常见问题。

2. 课程目标本课程的主要目标是让学生掌握面向对象的基本概念、分析方法和设计原则。

具体来说,课程目标包括以下几个方面:1.理解面向对象的程序设计基本思想,包括封装、继承、多态等;2.掌握面向对象分析的基本方法,包括对象建模、用例建模、动态建模等;3.掌握面向对象设计的基本原则,包括单一职责原则、开放封闭原则、里氏替换原则、依赖倒置原则等;4.熟悉UML建模语言,包括类图、用例图、时序图、活动图等;5.学会如何使用设计模式,加速软件开发过程,提高软件的质量和可维护性。

3. 课程内容本课程分为四个部分:3.1 Java编程基础本部分主要阐述Java编程语言的基础知识,如数据类型,类与对象,继承与多态,异常处理和I/O等常用的基础概念和技术。

3.2 面向对象分析本部分以面向对象的分析方法为主线,介绍了用例建模、场景建模、类建模及设计原则等基本内容。

3.3 面向对象设计本部分以面向对象的设计原则为主线,介绍了设计原则的基本概念和实用的场景,例如单一职责原则、开放封闭原则、里氏替换原则、依赖倒置原则等。

3.4 设计模式本部分介绍了常用的23种设计模式,并着重介绍了创建型,结构型和行为型设计模式的使用方法及场景。

4. 课程设计课程设计主要以一个案例为基础,让学生在参考慕课网站上的知识点,从需求分析到构建整个项目,逐步实践并体验课程的主要知识点。

面向对象分析与设计

面向对象分析与设计

面向对象分析与设计面向对象分析与设计(Object-Oriented Analysis and Design,OOAD)是一种在软件工程中常用的方法论,它以面向对象的思维方式来进行软件系统的分析和设计。

本文将对面向对象分析与设计的概念、主要步骤和设计原则进行详细介绍。

一、概念面向对象分析与设计是一种将实际问题抽象为对象和类的方法。

它将问题空间中的实体、行为和关系转化为软件系统中的对象、方法和类,并且通过封装、继承和多态等机制来实现软件系统的模块化和可维护性。

二、主要步骤1. 需求分析:通过与用户沟通,获取系统需求,并将需求转化为用例模型或用户故事。

在需求分析阶段,可以使用用例图、活动图等工具来描述系统的功能和用户的交互过程。

2. 领域建模:通过分析问题领域中的实体、行为和关系,构建领域模型。

领域模型可使用类图、状态图等工具来表示,它可以帮助开发团队更好地理解和把握系统的核心概念。

3. 概念架构设计:根据需求和领域模型,设计概念架构,也称为系统架构。

概念架构是一个逻辑上的模型,它描述了系统的整体结构和各个模块之间的关系。

常见的概念架构模式有层次结构、客户-服务器和发布-订阅等。

4. 详细设计:在概念架构的基础上,对系统进行详细设计。

详细设计包括定义类的具体属性和方法、设计模块之间的接口和通信方式等。

可以使用类图、时序图等工具来进行详细设计。

5. 编码和测试:根据详细设计文档进行编码,并编写对应的单元测试和集成测试。

编码应遵循面向对象的编程原则,例如封装、继承和多态等。

测试阶段需要验证代码的正确性和功能完整性。

三、设计原则1. 单一职责原则(Single Responsibility Principle,SRP):一个类应该只有一个引起它变化的原因。

这样可以降低类的复杂度,提高代码的可维护性。

2. 开闭原则(Open-Closed Principle,OCP):软件实体应该对扩展开放,对修改封闭。

通过使用抽象和接口,可以实现系统的可扩展性,而不需要修改已有的代码。

面向对象分析与设计

面向对象分析与设计

面向对象分析与设计一、引言面向对象分析与设计(Object-Oriented Analysis and Design,简称OOAD)是软件工程中的一种方法论,用于解决复杂系统的设计与开发问题。

本文将介绍面向对象分析与设计的概念、原则和过程,并结合实际案例说明其重要性和应用。

二、概念解析1. 面向对象分析(Object-Oriented Analysis,简称OOA):通过识别和描述系统所涉及的对象及其相互关系,以及对象的属性和行为,从而确定系统需求和问题领域的分析方法。

2. 面向对象设计(Object-Oriented Design,简称OOD):基于面向对象分析的结果,通过定义类、抽象数据类型、方法、接口等概念,设计出系统的结构和组织,以及类之间的关系和交互方式。

三、面向对象分析与设计的原则1. 单一职责原则(Single Responsibility Principle,简称SRP):一个类只负责一项职责,保证类的内聚性和高内聚性。

2. 开放封闭原则(Open-Closed Principle,简称OCP):系统中的类、模块等应该对拓展开放,对修改封闭,通过继承、接口等方式实现。

3. 里氏替换原则(Liskov Substitution Principle,简称LSP):所有引用基类的地方必须能透明地使用其子类的对象,即子类必须能够替换基类。

4. 依赖倒置原则(Dependency Inversion Principle,简称DIP):高层模块不应该依赖于底层模块,二者都应该依赖于抽象;抽象不应该依赖于具体,具体应该依赖于抽象。

5. 接口隔离原则(Interface Segregation Principle,简称ISP):客户端不应该依赖于它不需要的接口,接口应该进行细化拆分以适应不同的场景和客户端需求。

6. 迪米特法则(Law of Demeter,简称LoD):一个对象应该对其他对象有尽可能少的了解,减少耦合性,降低系统的复杂度。

面向对象分析与设计方法

面向对象分析与设计方法

面向对象分析与设计方法在软件开发中,面向对象分析与设计(OOAD)是一种常用的方法和技术,旨在通过对问题领域中的对象进行建模和分析,然后基于这些模型进行软件设计和实现。

本文将介绍面向对象分析与设计方法,并讨论其在软件开发中的应用。

一、概述面向对象分析与设计方法是一种基于对象的思维方式和开发过程。

它将问题领域中的实体、关系和行为看作对象,通过识别、分类和定义这些对象,建立起领域模型。

面向对象分析和设计方法主要包括以下几个步骤:1.需求分析:分析用户需求,识别系统的功能和性能要求。

2.领域建模:通过抽象和分类,识别问题领域中的实体、关系和行为。

3.对象设计:定义对象的属性、方法和关系,确定对象之间的协作方式。

4.系统设计:将对象组织成类和模块,确定系统的结构和架构。

5.实现和测试:基于设计结果进行编码实现,并进行测试验证。

二、面向对象分析与设计方法的特点面向对象分析与设计方法具有以下几个特点:1.模块化:将系统划分为独立的、可重用的模块,从而简化系统的设计和实现。

2.封装性:将数据和处理逻辑封装在对象中,实现了数据和行为的统一管理。

3.继承性:通过继承机制,实现了代码的重用和扩展,提高了系统的灵活性。

4.多态性:通过多态机制,实现了对象的动态行为绑定,提高了系统的可扩展性。

5.抽象性:通过抽象机制,将对象的共性特征抽象成类的属性和方法,实现了模型的简化和易维护性。

三、面向对象分析与设计方法的应用面向对象分析与设计方法广泛应用于软件开发中,尤其适用于中大型软件系统的开发和维护。

它可以提高软件系统的可维护性、可重用性和可扩展性,并降低软件开发的风险和成本。

面向对象分析与设计方法在以下方面有着重要的应用:1.需求分析:通过面向对象的方法,将用户需求转化为面向对象模型,明确系统的功能和性能需求。

2.架构设计:通过面向对象的架构设计,组织系统的各个模块和类之间的关系,确保系统的稳定性和可扩展性。

3.模块设计:通过面向对象的模块设计,定义模块的接口和功能,实现系统的解耦和模块化。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5/276
面向对象的基本概念
1. 对象(object) 对象是指一组属性以及这组属性上的专用操 作的封装体。 属性(attribute)通常是一些数据,有时 它也可以是另一个对象。每个对象都有它自己 的属性值,表示该对象的状态。对象中的属性 只能通过该对象所提供的操作来存取或修改。 操作(operation)(也称方法或服务)规 定了对象的行为,表示对象所能提供的服务。
25/276
有的面向对象方法中,把互相协作以完 成一组紧密结合在一起的责任的类的集合定 义为主题(subject)或子系统(subsystem)。 主题和子系统都是一种抽象,从外界观察系 统时,主题或子系统可看作黑盒,它有自己 的一组责任和协作者,观察者不必关心其细 节。观察一个主题或子系统的内部时,观察 者可以把注意力集中在系统的某一个方面。 因此,主题或子系统实际上是系统更高抽象 层次上的一种描述。
19/276
内容摘要
• • • • • • • 面向对象的基本概念 面向对象的分析和设计过程 UML概述 用况建模 静态建模 动态建模 物理体系结构建模
20/276
面向对象分析 Object-Oriented Analysis
面向对象分析的一般步骤如下: 1. 获取客户对系统的需求:包括标识场景(scenario) 和用况(use case,也称用例),以及建造需求模 型
软件工程
第7章 面向对象的分析和设计
内容摘要
• • • • • • • 面向对象的基本概念 面向对象的分析和设计过程 UML概述 用况建模 静态建模 动态建模 物理体系结构建模
2/276
内容摘要
• • • • • • • 面向对象的基本概念 面向对象的分析和设计过程 UML概述 用况建模 静态建模 动态建模 物理体系结构建模
33/276
3) 任务管理设计 Coad和Yourdon提出如下管理并发任务对象的 设计策略: (1) 确定任务的类型; (2) 必要时,定义协调者任务和关联的对象; (3) 将协调者任务和其它任务集成。 通常可通过了解任务是如何被启动的来确 定任务的类型,如事件驱动任务,时钟驱动任 务。每个任务应该定义其优先级,并识别关键 任务。当有多个任务时还可以考虑增加一个协 调者任务,以控制这些任务协同工作。
面向对象设计 (Object_Oriented Design)
面向对象设计的一般步骤如下: 1. 系统设计 • 将子系统分配到处理器
• 选择实现数据管理、界面支持和任务 管理的设计策略 • 为系统设计合适的控制机制 • 复审并考虑权衡(折衷)
29/276
2. 对象设计 • 在过程级别(procedural lavel)设计 每个操作,即设计每个操作的实现细节 • 定义内部类 • 为类属性设计内部数据结构 3. 消息设计 使用对象间的协作和对象--关系模型,设计 消息模型 4. 复审 复审设计模型并在需要时迭代。
triangle
getArea Var p : polygon ; Var t : triangle := triangle.new ; Var r : rectangle := rectangle.new ;
rectangle length width getArea
hexagon
getArea
if 条件 then p := t ; else p := r ; area := p.getarea ;
12/276
交通工具
飞行器
汽车

轿车 一般-特殊关系
货车
13/276
如果一个子类只有唯一一个父类,这个继 承称为单一继承。如果一个子类有一个以上的 父类,这种继承称为多重继承。
水上交通工具
陆上交通工具
水陆两栖交通工具 多重继承
14/276
4. 消息(message) 消息传递是对象间通信的手段,一个对象 通过向另一个对象发送消息来请求其服务。 一个消息通常包括接收对象名、调用的操作 名和适当的参数(如果有必要的话)。消息 只告诉接收对象需要完成什么操作,但并不 指示接收者怎样完成操作。消息完全由接收 者解释,接收者独立决定采用什么方法完成 所需的操作。
6/276
封装(encapsulation)是一种信息隐 蔽技术,用户只能看见对象封装界面上 的信息,对象的内部实现对用户是隐蔽 的。封装的目的是使对象的使用者和生 产者分离,使对象的定义和实现分开。
一个对象通常可由对象名、属性和操 作三部分组成。
7/276
2. 类(class) 类是一组具有相同属性和相同操作的对象的 集合。一个类中的每个对象都是这个类的一个 实例(instance)。 类是创建对象的模板,从同一个类实例化的 每个对象都具有相同的结构和行为。
30/276
1. 系统设计 1) 将分析模型划分成子系统 在OO系统设计中,我们把分析模型中紧密 相关的类、关系等设计元素包装成子系统。 通常,子系统的所有元素共享某些公共的 性质,它们可能都涉及完成相同的功能;它 们可能驻留在相同的产品硬件中;或者它们 可能管理相同的类和资源。子系统由它们的 责任所刻画,即,一个子系统可以通过它提 供的服务来标识。在OOD中,这种服务是完 成特定功能的一组操作。
2. 用基本的需求为指南,来选择类和对象(包括属性 和操作)。 3. 定义类的结构和层次。 4. 建造对象—关系模型。 5. 建造对象—行为模型。 6. 利用用况/场景来复审分析模型。 21/276
分析过程
1. 获取客户对系统的需求
需求获取必须让客户与开发者充分地交流,这里 介绍一种采用用况来收集客户需求的技术。分析员 首先标识使用该系统的不同的执行者(actor), 这些执行者代表使用该系统的不同的角色。每个执 行者可以叙述他如何使用系统,或者说他需要系统 提供什么功能。执行者提出的每一个使用场景(或 功能)都是系统的一个用况的实例,一个用况描述 了系统的一种用法(或一个功能),所有执行者提 出的所有用况构成系统的完整的需求。
15/276
5. 多态性(polymorphism) 多态性是指同一个操作作用于不同的对象 上可以有不同的解释,并产生不同的执行结 果。例如“画”操作,作用在“矩形”对象 上,则在屏幕上画一个矩形,作用在“圆” 对象上,则在屏幕上画一个圆。也就是说, 相同操作的消息发送给不同的对象时,每个 对象将根据自己所属类中定义的这个操作去 执行,从而产生不同的结果。
16/276
6. 动态绑定(dynamic binding) 动态绑定是指在程序运行时才将消息所请 求的操作与实现该操作的方法连接起来。 传统的程序设计语言的过程调用与目标 代码的连接(即调用哪个过程)放在程序运 行前(即编译时)进行(称为静态绑定), 而动态绑定则是把这种连接推迟到运行时才 进行。 动态绑定是一种在运行时确定被执行代 码的技术。
10/276
多边形 顶点数 顶点坐标 计算面积 旋转
矩形 长 宽 对角线 计算面积 计算对角线
11/276
有时,我们定义一个类,它把一些类组织起 来,提供一些公共的行为,但并不需要使用这 个类的实例,而仅使用其子类的实例。我们把 这种没有实例的类称为抽象类(abstract class)。在抽象类中可以定义抽象操作,抽 象操作指:只定义这个类的操作接口,不定义 它的实现,其实现部分由其子类定义。抽象操 作操作名用斜体字表示,也可以在操作特征 (signature)后面加上特征字符串{abstract}。
8/276
轿

张经理的轿车
型号:字符串 颜色:字符串 牌照号:字符串 ....
型号=桑塔纳 颜色=红色 牌照号=沪AN2037 ....

实例对象
9/276
3. 继承(inheritance) 继承是类间的基本关系,它是基于层次关系 的不同类共享数据和操作的一种机制。父类中 定义了其所有子类的公共属性和操作,在子类 中除了定义自己特有的属性和操作外,可以继 承其父类(或祖先类)的属性和操作,还可以 对父类(或祖先类)中的操作重新定义其实现 方法。
26/276
4. 建造对象——关系模型 对象--关系模型描述了系统的静态结构, 它指出了类间的关系(relationship)。 类之间的关系有关联、依赖、泛化、实现 等。
27/276
5. 建立对象——行为模型 对象--行为模型描述了系统的动态行为,它 们指明系统如何响应外部的事件或激励 (stimulus)。 建模的步骤如下: • 评估所有的用况,以完全理解系统中交互的 序列。 • 标识驱动交互序列的事件,理解这些事件如 何和特定的对象相关联。 • 为每个用况创建事件轨迹(event trace)。 • 为系统建造状态机图。 • 复审对象--行为模型,以验证准确性和一致 28/276 性。
31/276
(1)
(2) (3) (4)
子系统的设计准则是: 子系统应具有定义良好的接口,通过接口 和系统的其它部分通信; 除了少数的“通信类” 外,子系统中的类 应只和该子系统中的其它类协作; 子系统的数量不宜太多; 可以在子系统内部再次划分,以降低复杂 性。
32/276
2) 标识问题本身的并发性,并为子系统分配 处理器 通过对对象--行为模型的分析,可发现系 统的并发性。如果对象(或子系统)不是同时 活动的,则它们不需并发处理,此时这些对象 (或子系统)可以在同一个处理器上实现。反 之,如果对象(或子系统)必须对一些事件同 时异步地动作,则它们被视为并发的,此时, 可以将并发的子系统分别分配到不同的处理器, 或者分配在同一个处理器,而由操作系统提供 并发支持。
4/276
面向对象方法的出现很快受到计算机软件 界的青睐,并成为20世纪90年代的主流开 发方法。我们可以从下列几个方面来分析其 原因:
1. 从认知学的角度来看,面向对象方法符合人 们对客观世界的认识规律。 2. 面向对象方法开发的软件系统易于维护,其 体系结构易于理解、扩充和修改。 3. 面向对象方法中的继承机制有力支持软件的 复用。
相关文档
最新文档