软件工程第六章面向对象方法概述讲解学习
合集下载
第六章 面向对象分析
中国石油大学胜利学院
currentSchedule 0..1 <<entity>> Schedule 0..* 0..*
primaryCourses 0..4
<<entity>> CourseOffering
6.2.3建立对象—关系模型
Logo 分析类的合并:选课和关闭课程用例中相同分析类的合 并。
模
中国石油大学胜利学院
面向对象分析模型P139
OOA的模型(组成结构)
需求模型(以用例模型为主体,第五章) 类/对象模型(全部的类和对象) 对象-关系模型(对象之间的静态关系) 对象-行为模型(系统的动态行为)
属性、操作、协作者
Logo
类/对象 模型
以用例模 型 为主体的 需求模型
中国石油大学胜利学院
三种分析类
边界类
Logo
实体类 系统边界 系统信息
控制类
协调用例行为
中国石油大学胜利学院
查找分析类——边界类
Logo
怎么划分:为每对参与者/用例确定一个边界类 作用:将系统和外界隔离开,外界的变化不影响 内部元素。(对系统依赖于环境的那部分进行建 模)
学生 课程注册 课程目录系统
Logo
协作图
:Client
:Supplier
currentSchedule 0..1 <<entity>> Schedule 0..* 0..*
primaryCourses 0..4
<<entity>> CourseOffering
6.2.3建立对象—关系模型
Logo 分析类的合并:选课和关闭课程用例中相同分析类的合 并。
模
中国石油大学胜利学院
面向对象分析模型P139
OOA的模型(组成结构)
需求模型(以用例模型为主体,第五章) 类/对象模型(全部的类和对象) 对象-关系模型(对象之间的静态关系) 对象-行为模型(系统的动态行为)
属性、操作、协作者
Logo
类/对象 模型
以用例模 型 为主体的 需求模型
中国石油大学胜利学院
三种分析类
边界类
Logo
实体类 系统边界 系统信息
控制类
协调用例行为
中国石油大学胜利学院
查找分析类——边界类
Logo
怎么划分:为每对参与者/用例确定一个边界类 作用:将系统和外界隔离开,外界的变化不影响 内部元素。(对系统依赖于环境的那部分进行建 模)
学生 课程注册 课程目录系统
Logo
协作图
:Client
:Supplier
第六章 面向对象分析
传统方法和面向对象方法的比较
传统方法
系统是过程的集合 过程与数据实体交互 过程接受输入并产生输出
面向对象方法
系统是交互对象的集合 对象与人或其它对象交互 对象发送与响应消息
输入 输出
过程1 过程1 过程2 过程2 过程3 过程3 传统方法数据与过程是分离 消息 消息 数据实体
对象
属于该对象 的数据
方法(简称OOSE) 1.Booch方法 2.Jacobson 方法(简称 方法 ) 3.OMT(Object Modeling Technology)方法 ( 方法 4.Coad-Yourdon方法 方法 6.由Rumbaugh 、 Booch 、 Jacobson 提出的 由 Unify Modeing Language简称 简称UML 简称
6.2
UML概述 概述
UML主要以 Booch方法、 OMT方法、 OOSE方法为 主要以 方法、 方法、 方法 方法 方法为 基础,同时也吸收了其他面向对象建模方法的优点, 基础,同时也吸收了其他面向对象建模方法的优点,形成了 一种概念清晰、表达能力丰富、 一种概念清晰、表达能力丰富、使用范围广泛的面向对象的 标准建模语言,是一种基于面向对象的可视化建模语言 是一种基于面向对象的可视化建模语言。 标准建模语言 是一种基于面向对象的可视化建模语言。它 提供了丰富的用图形符号表示的模型语言, 提供了丰富的用图形符号表示的模型语言,这些标准的图形 符号隐含了UML的语法,而由这些图形符号组成的各种模 的语法, 符号隐含了 的语法 则给出了UML的语义。它的简单、一致、通用的定义, 的语义。 型,则给出了 的语义 它的简单、一致、通用的定义, 使得开发者能在语义上取得一致,消除了因人而异的表达方 使得开发者能在语义上取得一致, 法所造成的影响。 法所造成的影响。 其广泛性表现为: 其广泛性表现为: (1)在不同系统中的应用 )在不同系统中的应用; (2)在软件开发不同阶段的应用 )在软件开发不同阶段的应用.
软件工程 面向对象分析与设计PPT课件
1.8
© 2009 by Duym
Software Engineering
对象特点
以数据为中心 对象是主动的 实现了数据封装 本质上具有并行性 易维护性
1.9
© 2009 by Duym
Software Engineering
2.2消息
消息,向对象发出的服务请求 请求对象执行某一牏或回答某些信息要求 实质是对象所包含操作的调用 消息内容:接收者名字、请求的方法、参数
1.13
© 2009 by Duym
Software Engineering
2.4继承
新款的汽车,某一型号的汽车为基础,增加新的功能,提 高生产效率
A类,B类=A+属性1,行为1 不用从头开始设计一个新类,让B继承A类,修改
不同或新增内容,从而节省工作量 A,基类/父类/超类,B派生类/子类 单重继承、多重继承 软件重用:
1.10
© 2009 by Duym
Software Engineering
消息的性质
同一个对象可以接收不同形式的多个消息, 做出不同的响应
相同形式的消息可以传递给不同的对象,所 做出的响应也是不同的
消息的发送可以不考虑具体的接收者,对象 可以响应消息也可以不响应
1.11
© 2009 by Duym
象可以共享操作,每个操作都有一个目标对象作为其隐含参 数。
软件工程导论第六章 面向对象的分析和设计方法
6. 2 面向对象的分析 6.2.2 确定对象与类
2. 对象分类、建立类图的对象层 (3)建立类图的对象层 ② 建立步骤 : • 用类符号表示每个类(对于主动对象,在类 名之前增加主动标记“@”),把它们画出 来 • 在类描述模板中填写关于每个类的详细说明。 • 在发现对象的活动中能够认识的属性和服务 均可随时加入类符号,能够认识的结构和连 接,均可随时在类符号之间画出
第六章 面向对象设计
•6.1 面向对象方法 •6. 2 面向对象的分析 •6. 3 面向对象设计
6.1 面向对象方法 6.1.1面向对象方法概述 6.1.2面向对象的软件工程(OOSE) 6.1.3面向对象的基本概念和特征
6.1 面向对象方法 6.1.1面向对象方法概述
• 面向对象不仅是一些具体的软件开 发技术与策略,而且是一整套关于 如何看待软件系统与现实世界的关 系,以什么观点来研究问题并进行 求解,以及如何进行系统构造的软 件方法学。 • 面向对象方法的基本思想是从现实 世界中客观存在的事物出发来构造 软件系统,并在系统构造中尽可能 运用人类的自然思维方式。
2. 对象分类、建立类图的对象层 (1)异常情况的检查和调整 ① 类的属性或服务不适合该类的全部对象 ② 属性和服务相似的类 ③ 对同一事物的重复描述
6. 2 面向对象的分析 6.2.2 确定对象与类
2. 对象分类、建立类图的对象层 (2)类的命名 ① 类的名字应恰好符合这个类(和它的特殊类) 所包含的每一个对象。 ② 类的名字,应该反映每个对象个体,而不是 整个群体。 ③ 采用名词,或带有定语的名词;使用规范的 词汇;使用专家及用户惯常使用的词汇。 ④ 使用适当的语言文字。
《软件工程实用教程》第6_章_面向对象的软件设计
第6 章 面向對象的軟體設計
舉例:
第6 章 面向對象的軟體設計
6.2.3 基於構件的建模 1.構件的特性 獨立部署單元 可作為第三方的組裝單元 沒有(外部的)可見狀態
第6 章 面向對象的軟體設計
2.設計基於類的構件 (1)基本設計原則 1)開閉原則:指的是一個模組在擴展性 方面應該是開放的,而在更改性方面 應該是封閉的。即在設計模組的時候, 應該儘量使得模組可以擴展,並且在 擴展時不需要對模組的源代碼進行修 改。
第6 章 面向對象的軟體設計
6.2.2 物理體系結構建模 用構件圖和部署圖來描述系統的物理體系結構 1.構件圖 構件圖就是描述構件類及其它們之間的關係。 (1 )構件間的依賴關係:主要是依賴關係,用 來表示一個構件需要另一些構件才能有完整 的定義。 (2 )介面:是一個構件提供給其他構件的一組 操作
第6 章 面向對象的軟體設計
6.1.2 面向對象設計的過程 1.系統設計 ( 1 )首先進行系統架構設計,使系統具有良好的穩定 性、開放性和可擴充性 (2)如果系統複雜,應將系統劃分為若干個子系統 (3)給系統分配處理機和任務 ( 4 )根據數據結構、檔和數據庫選擇實現數據存儲的 基本策略 (5)標識全局資源和確定控制訪問這些資源的機制 (6)選擇實現軟體控制方法 (7)考慮邊界條件 (8)建立折衷的優先權
第6 章 面向對象的軟體設計
面向对象分析第六章第七章共92页文档
4运行环境规定
4.1设备 4.2支持软件 4.3接口 4.4控制
§7-3 对象模型
对象模型是三个模型中最关键的一个 模型,它的作用是描述系统的静态结 构,包括构成系统的类和对象,它们 的属性和操作,及它们之间的关系。
2020/3/29
共27页 第24页
(1)对象模型的表示:
2020/3/29
共27页 第25页
2020/3/29
– 这五个层次是分析过程中的层次,每个
层次的工作都为系统的规格说明增加了
一个组成部分。
共27页 第20页
OOA的层次结构
2020/3/29
共27页 第21页
7.2 需求陈述(软件需求说明书 (SRS))
(Software Requirement Specification)
需求分析阶段要完成的文档。
存户 账号 姓名 余额 存款 取款
一般类 (父类、基类、超类)
继承
支票存户
储蓄存户
利息率
特殊类 (子类)
一个特殊类中的所有对象可继承一般类中
20的20/3/属29 性、服务、关系.
共27页 第33页
建立对象模型
2020/3/29
共27页 第34页
整体/部分结构(分类结构):
➢ 整体/部分结构是一种特定的连接. ➢ 整体类中的一个对象(或称聚合)是由各部
面向对象方法概述
6.1.2 面向对象的概念
2、 类(Class) Class) 又称对象类 对象类( Class) 类 又称 对象类 (Object Class), 是 一组具有相同属性和 相同操作的对象的集合。在一个类中,每个对象都是类的实例 相同操作的对象的集合。在一个类中,每个对象都是类的实例 它们都可以使用类中提供的函数。 (instance) ,它们都可以使用类中提供的函数。 类具有属性,用数据结构来描述类的属性,类具有操作, 类具有属性,用数据结构来描述类的属性,类具有操作, 它是对象的行为的抽象,操作实现的过程称为方法 (method) ,方法有方法名,方法体和参数。 方法有方法名,方法体和参数。 由于对象是类的实例,在进行分析和设计时, 由于对象是类的实例,在进行分析和设计时,通常把注 意力集中在类上,而不是具体的对象上。 意力集中在类上,而不是具体的对象上。
第 六 章
面向对象方法学
6.1.1 什么是面向对象的开发方法
6.1.1 什么是面向对象的开发方法
OOSD (Object-Oriented Software Development)法是 ObjectDevelopment)
把面向对象的思想应用于软件开发过程, 一种 把面向对象的思想应用于软件开发过程,指导开发活动的 系统方法。 系统方法。 面向对象的方法是一种运用对象、 继承、封装、 面向对象的方法是一种运用对象、类、继承、封装、聚 消息传送、多态性等概念来构造系统的软件开发方法。 合、消息传送、多态性等概念来构造系统的软件开发方法。 什么是面向对象 根据Coad 的定义,按照以下4 根据Coad 和 Yourdon 的定义,按照以下4个概念设计和 实现的系统,称为是面向对象的。 实现的系统,称为是面向对象的。 面向对象= 面向对象=对象 (object) ) +类 (classification) ) 继承( +继承(inheritance) ) +通信 (communication with messages) )
06第六章:面向对象学导论
图6.2 简单图形程序的类等级
6.1.3 定义属性和服务
1.定义属性 所谓定义属性就是确定每个属性的数据类型和数据结 构,同时还要确定每个属性的访问权限。 参见图6.2,在“位置”类中应该定义属性“坐标”; 圆的属性“半径”同样用像素为单位,因此也是整型 的简单变量;弧的属性“起始角度”和“结束角度” 都用度为单位。
6.1.1 用对象分解取代功能分解
面向对象程序设计方法模仿人类习惯的解题方法,用 对象分解取代功能分解,也就是把程序分解成一系列 对象,每个对象都既有自己的数据(描述该对象所代 表的实体的属性),又有处理这些数据的函数(通常 称为服务或方法,它们实现该对象应有的行为)。 从需求陈述中看出,圆的基本属性是圆心坐标和半径 ,弧的基本属性是圆心坐标、半径、起始角度和结束 角度。 分析需求陈述得知,圆和弧都应该提供在荧光屏上“ 画自己”的服务。
6.1.3 定义属性和服务
2.定义服务 每个对象应该知道怎样完成自己负责提供的服务功能 ,使用者只需向对象发送消息提出要求即可。 本例每个类中定义的属性都是简单变量,因此,实现 常规服务(即读/写属性值)的算法非常简单,仅用一 条读/写语句即可实现。
6.1.4 使用C++代码实现
#inclnde<graphics.h> #inclnde<conio.h> enum Boolean{false, true}; //定义枚举类型Boolean class Location //定义基类Location { protected : int X; //定义圆心坐标x int Y; public : Location(int InitX, int InitY) //在类内定义构造函数 { X = InitX; //通过构造函数的形参初始化圆心坐标x的值 Y = InitY; } int GetX( ){ return x; } //获得圆心坐标x的值 int GetY( ){ return y; } };
软件工程—第6章 面向对象设计_lyh
怎样设计任务管理部分
确定事件驱动型任务 确定时钟驱动型任务 确定优先任务 确定关键任务 确定协调任务 尽量减少任务数 确定资源需求
传感器控制系统任务管理部分设计举例
任务
名字 描述 优先级 服务 协调 通信 初始化 开始 准备好 结束
任务协调器
协调
0,m
1
传感器任务描述举例
任务1 名字: 传感器读出。 描述: 该任务在需要脉冲调幅时负责读 出传感器。 包含: 传感器.样本。 优先级:中等。 协调: 时钟驱动,100ms的时间间隔。 通信: 从输入线(传感器)得到值, 给雷达邮箱发送值。
问题域—直接负责实现客户需求的子系统 人机交互—实现用户界面的子系统(包括可复用的GUI
子系统) 任务管理—负责控制和协调并发任务的子系统,任务可
能被包装在一个子系统中或不同的子系统间; 数据管理—负责对象的存储和检索的子系统
系统分解: 划分分析模型
子系统
子系统既不是一个对象也不是一个功能,而是类、关 联、操作、事件和约束的内聚集合。
分析并发性
通过面向对象分析建立起来的动态模型,是分析并发 性的主要依据。如果两个对象彼此间不存在交互,或 者它们同时接受事件,则这两个对象在本质上是并发 的。通过检查各个对象的状态图及它们之间交换的事 件,能够把若干个非并发的对象归并到一条控制线中。 所谓控制线,是一条遍及状态图集合的路径,在这条 路经商每次只有一个对象是活动的。在计算机系统中 用任务(task)实现控制线,一般认为是进程 (process)的别名。通常把多个任务的并发执行称 为多个任务。
软件工程课件第6章面向对象的概念与模型结构化实现Dai
图6.10 共享聚Biblioteka Baidu示例
14
• (2) 组合聚集 • 如果部分类完全 隶属于整体类, 部分与整体共存, 整体不存在了部 分也会随之消失 (或失去存在价 值了),则该聚 集称为组合聚集 (简称为组成)。 一般用实心菱形 表示组合聚集
图6.11
15
组合聚集示例
• 3.泛化 • UML中的泛化关系就 是通常所说的继承关 系,它是通用元素和 具体元素之间的一种 分类关系。 • 在UML中,用一端为 空心三角形的连线表 示泛化关系,三角形 的顶角紧挨着通用元 素。注意,泛化针对 类型而不针对实例, 一个类可以继承另一 个类,但一个对象不 能继承另一个对象。 实际上,泛化关系指 出在类与类之间存在 “一般—特殊”关系。
圆 圆心坐标 半径 可见性 读/写圆心坐标 读/写半径 读/写可见性 显示 隐藏
• 2.
– UML – 可见性 属性名:类型名=初值{性质串}
• 3.
– 服务也就是操作,UML描述操作的语法格式 如下: – 可见性 操作名(参数表):返回值类型{性 质串}
11
6.6.2 表示关系的符号
• 1. • 关联表示两个类的对象之间存在某种语义上的联系。 • ( 1)
– 普通关联是最常见的关联关系,只要在类与类之间存在连接关系就可 以用普通关联表示。普通关联的图示符号是连接两个类之间的直线, 如图6.7所示。 – 通常关联是双向的,可给每个方向起一个名字,并在名字后加一个黑 三角来标明方向。在关联的直线两端可以写上重数,表示该类有多少 个对象与对方的一个对象连接。重数的表示方法有: – 0..1 表0到1个 0..* 或* 表0到多个 – 1+或1..* 表1到多个 1..15 表1到15个 3 表3个
第六章面向对象的软件工程
2
面向对象的分析,简称: 面向对象的分析,简称:OOA 面向对象的设计,简称: 面向对象的设计,简称:OOD 面向对象程序设计,简称: 面向对象程序设计,简称:OOP 面向对象的测试,简称: 面向对象的测试,简称:OOT 面向对象数据库系统,简称: 面向对象数据库系统,简称:OODBMS 面向对象计算机软件辅助工程, 面向对象计算机软件辅助工程, 简称: 简称:OOCASE
面向对象分析的目标:开发一系列模型, 面向对象分析的目标:开发一系列模型,用来描述客户需求的计算机软 定义所有与待求解问题相关的类。 件。定义所有与待求解问题相关的类。
18
OOA必须完成的任务: 必须完成的任务: 必须完成的任务
在客户和软件工程师间沟通, 在客户和软件工程师间沟通,了解基本的用户需 求。 标识类( 定义属性和方法)。 标识类(即:定义属性和方法)。 划分类层次。 划分类层次。 表示对象间的关系。 表示对象间的关系。 建立对象的行为模型。 建立对象的行为模型。 在任务1~5之间重复,直至完成建模。 之间重复, 在任务 之间重复 直至完成建模。
5
对象 对象——是对客观世界中事物的一种抽象。是由 是对客观世界中事物的一种抽象。 对象 是对客观世界中事物的一种抽象 数据(属性)及其之上的操作(行为) 数据(属性)及其之上的操作(行为)组成的封 装体。 装体。 或: 类和对象封装了对描述某些现实世界实体的内容 和行为所需的数据和过程的抽象。 和行为所需的数据和过程的抽象。 对象可以量化,可以区分,可以是具体的, 对象可以量化,可以区分,可以是具体的,也可 以是概念化的。 以是概念化的。 对象是对象类的一个成员,有时也叫“实例” 对象是对象类的一个成员,有时也叫“实例”。
面向对象方法
1.2 面向பைடு நூலகம்象软件工程
• 面向对象软件工程 (OOSE,Object-Oriented Software Engineering) 方法是面 向对象方法在软件工程领域的全面应用,它包括:
– 1) 面向对象分析。OOA强调直接针对问题论域中客观存在的各项事物建立OOA模型中的 对象,用对象的属性和服务分别描述事物的静态特征和行为。问题论域有哪些值得考虑的 事物,OOA模型中就有那些对象,而且对象及其服务的命名都强调与客观事物一致。另外, OOA模型也保留了问题论域中事物之间的关系。把具有相同属性和相同服务的对象归结为 一类,且一般/特殊结沟 (又称分类结构) 描述一般类与特殊类之间的关系 (即继承关系) 。
面向对象方法
• 因此,面向对象方法的分析、设计和实现的结果能直接映射到客观世界中系统 的实体上。也就是说,解空间的结构与问题空间的结构趋于一致。由于面向对 象的分析和设计采用同样的图形表示形式,分析、设计和实现都以对象为基础, 因此,面向对象开发的各阶段之间具有很好的无缝连接。
面向对象方法
• 当用户的需求有所改变时,由于客观世界中的实体不变,实体之间的联系也基 本不变,面向对象的总体结构就相对比较稳定,所引起的变化大多集中在对象 的属性与操作及对象之间的消息通信上。所以说,面向对象方法符合人们对客 观世界的认识规律,所开发的系统相对比较稳定。
体在不同的应用系统中存在着许多相同的属性和操作,也存在一些不同应用系 统所特有的属性和操作。在开发一个新的软件系统时,可复用已有系统中的某 些类,通过继承和补充形成新系统的类。在同一个应用系统中,某些类之间既 存在一些公共的属性和操作,也含有它们各自私有的属性和操作,这也可以通 过继承来复用公共的属性和操作。
面向软件工程对象方法学
面向对象方法学的未来发展
随着软件工程技术的不断发展,面向对象方法学将继续发挥重要作用,不 断完善和发展。
未来,面向对象方法学将更加注重软件开发生命周期的各个阶段,包括需 求分析、设计、编程、测试和维护等,以提高软件的质量和可靠性。
此外,随着云计算、大数据和人工智能等技术的不断发展,面向对象方法 学将与这些技术相结合,以更好地满足软件开发的实际需求。
03
跨平台开发
面向对象的方法学可以帮助开发者编写可重用的代码,提高跨平台开发
的效率和代码复用性。
企业级应用开发
模块化开发
面向对象方法学可以帮助企业级应用开发者实现模块化的开发方式,将应 用程序划分为不同的对象和组件,提高代码的可维护性和可扩展性。
业务逻辑封装
通过将业务逻辑封装为对象,可以提高代码的可读性和可 维护性,同时便于测试和调试。
继承
总结词
继承是从已有的类派生出新的类,新类继承 了父类的属性和行为,并可以添加或覆盖父 类的特性。
详细描述
继承是面向对象方法学中的一种机制,允许 从已有的类派生出新的类。新类继承了父类 的属性和行为,可以在父类的基础上添加新 的特性或覆盖父类的已有特性。这有助于构 建层次化的类结构,提高代码的可重用性和 可维护性。
开发人员之间的沟通
面向对象方法学使用类、对象、继承、多态 等概念,使得开发人员之间的沟通更加方便 ,提高了开发效率。
《软件工程》第6章 面向对象的软件开发技术2
UML发展历程
UML 2.0
(2005)
(March, ‘03)
UML 1.5
UML Partners’ Expertise
UML 1.1
(Sept. ‘97) (Jan. ‘97)
工 业 化
UML 1.0 UML 0.9
(June ‘96)
标 准 化
and
UML 0.91
(Oct. ‘96)
Unified Method 0.8
– 实现表示对该契约的具体实现细节(如何做)
• 例:接口/子系统、用例/用例实现、操作/方法…
北京大学远程教育课程
Software Engineering_Chapter6-21
通用划分(续)
• 类型和角色的分离(新增)
– 任何作为其它实体结构的一部分实体(如属性)都具有两个方面的特 性:
• 从固有类型派生出来的含义 • 在语境中的角色派生出来的含义
• 图交换标准(Diagram Interchange)
– 解决不同的工具之间图形表示和交换问题 – XMI(XML Meta-Data Interchange)
北京大学远程教育课程 Software Engineering_Chapter6-12
UML2上层结构
UML上层结构
Superstructure
(OOPSLA ’95)
面向对象方法学导论
聚合的图形记法
21
ຫໍສະໝຸດ Baidu
6.2 面向对象的概念
• 关联的含义 – 对象实例之间的物理或概念联结被称为链 – 关联是对一组语义与结构相似的链的抽象 – 链是关联的实例
人员 雇用 公司
二元关联的例
•
(人员) 雇用
关联 v张s. 涛链:类 vs.
对(象通公大司)
链的例子
(a) 二元关联
项目 ◆ 语言
人
三元关联的例
2
6.1 面向对象方法学概述
•面向对象方法学的要点
现实世界
领域知识 抽象
问题空间 问题域
生成知识 设计知识
模拟
解空间 (计算机系统)
实现域
3
6.1 面向对象方法学概述
• 对象?(面向对象语言)
在问题空间中,对象是…… • 现实世界中存在的实体 • 应用所关心的抽象概念、规则、事件、或者具有明
确边界和意义的具体事物 在解空间 (计算机系统) 中,对象是…… • 问题空间中的对象在计算机系统中的表示 • 封装 (encapsulation) 了数据和行为的通信单位
17
6.2 面向对象的概念
继承的分类
单继承 多继承
多继承使类层次复杂化 多继承容易产生配置控制方面的潜在问题
继承的图形记法
一般化
具体化
18
21
ຫໍສະໝຸດ Baidu
6.2 面向对象的概念
• 关联的含义 – 对象实例之间的物理或概念联结被称为链 – 关联是对一组语义与结构相似的链的抽象 – 链是关联的实例
人员 雇用 公司
二元关联的例
•
(人员) 雇用
关联 v张s. 涛链:类 vs.
对(象通公大司)
链的例子
(a) 二元关联
项目 ◆ 语言
人
三元关联的例
2
6.1 面向对象方法学概述
•面向对象方法学的要点
现实世界
领域知识 抽象
问题空间 问题域
生成知识 设计知识
模拟
解空间 (计算机系统)
实现域
3
6.1 面向对象方法学概述
• 对象?(面向对象语言)
在问题空间中,对象是…… • 现实世界中存在的实体 • 应用所关心的抽象概念、规则、事件、或者具有明
确边界和意义的具体事物 在解空间 (计算机系统) 中,对象是…… • 问题空间中的对象在计算机系统中的表示 • 封装 (encapsulation) 了数据和行为的通信单位
17
6.2 面向对象的概念
继承的分类
单继承 多继承
多继承使类层次复杂化 多继承容易产生配置控制方面的潜在问题
继承的图形记法
一般化
具体化
18
软件工程 第六章 面向对象概念和Rose建模技术
元素。共有七种。
①类(Class)②接口(Interface)③协作(Collaboration) ④用例(Use Case)⑤活动类(Active Class)⑥组件(Component)⑦节点(Node)
第6章
6.2 统一建模语言(UML)
18
6.2.2 UML的结构
(2)行为事物 ①交互(Interaction)——是由一组对象之间在特定上下文中,为达到特定的目的而进行的一 系列消息交换而组成的动作。 ②状态机(State Machine)——由一系列对象的状态组成。 (3)分组事物 分组事物是包(Package)——可以把一个分组事物看作是一个“盒子”,即包。结构事物、 行为事物甚至其他分组事物都可以放进包内。包不像组件,组件只在运行时存在,包纯粹是概 念上的,只在开发阶段存在。 (4)注释事物 注释事物是UML模型的解释部分。
第6章
6.1 面向对象方法概述
10
6.1.2 面向对象方法的基本概念
7.重载(Overloading) 有两种重载,函数重载和运算符重载。
函数重载是指在同一作用范围内的若干个参数特征不同的函数可以使用相同的函数名字。
运算符重载是指同一个运算符可以施加于不同类型的操作数上面。当然,当参数特征不同或被 操作数的类型不同时,实现函数的算法或运算符的语义是不相同的。
发软件往往不能成功。为此,人们提出了面向对象的开发方法。
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学生 1..n
1 班级
1
班主任 1
关联关系(续)
▪ 链属性。关联链可以通过关联类来实现
班级
课程
课程表
对象模型实例
作业
▪ 利用面向对象的方法对项目的题目进行初 步业务对象分析和描述。
➢ Public,private,protected ➢ 避免访问内部数据 ➢ 尽量通过方法访问
▪ 优点
➢ 数据独立 (每个对象都对应于一个独立的地址空间) ➢ 具有隐藏性和安全性 ➢ 易于维护(由于数据独立,易于发现问题)
▪ 缺点
➢ 需要较多的输入输出函数
超市销售系统
仓库
商品
属 抽象 性
价格表,物品列 表, 帐单
的封装体 ➢ 对象是一台自动机。 ➢ 对象∷=<ID,MS,DS,MI>
其中,ID MS DS MI是对象受理的消息名集合(即对外接口)
➢ 对象(Object)是类(Class)的一个实例(Instance)。
面向对象的基本概念(续)
▪ 消息,就是要求某个对象执行在定义它的那个类 中所定义的某个操作的规格说明。通常,一个消 息由下述三部分组成:
继承性(续)
▪ 车辆的继 承关系
▪ 动物科目
划分的一 灵长目
种继承关
系
人科
车辆
非机动车 机动车
哺乳动物
翼手目
食肉目
猴科
犬科
自行车 人力车 客车 卡车 拖拉机
鲸目
猫科
人
猩猩
狗 狼 狐猫 虎 豹
继承性(续)
▪ 不要滥用继承
➢ 如果类A和类B毫不相关,不可以为了使B的功 能更多些而让B继承A的功能。 人想拥有狗鼻 子的灵敏问题。
▪ 归纳关系体现为一种继承关 系
归纳关系(续)
组合关系
▪ 组合关系就是“整 体—部分”关系,它 反映了对象之间的构 成关系。组合关系也 称为聚集关系。
▪ 组合关系具有的最重 要的性质是传递性。 也就是说,如果A是B 的一部分,B是C的一 部分,则A也是C的一 部分
wk.baidu.com
组合关系(续)
关联关系
▪ 关联关系反映对象之 间相互依赖、相互作 用的关系。通常把两 类对象之间的二元关 系再细分为一对一 (1∶1)、一对多(1∶M) 和多对多(M∶N)等三 种基本类型,类型的 划分依据参与关联的 对象的数目
软件工程
第17讲:面向对象方法
主讲人:阳王东 Email:yangwangdong@126.com
主要内容
▪ 编程的沉思 ▪ 什么是面向对象 ▪ 面向对象的特征 ▪ 对象之间的关系
编程的沉思
▪ 编程存在重复劳动吗
➢ 机器替代了人手工的重复劳动 ➢ 程序则替代了人脑的重复性劳动 ➢ 编程无重复
▪ 程序中的世界
服
提供物品,
务
帐单,入库 、出库
属 商标,型号,
性 计量单位、价
抽象
格、数量
入库、销售 服 、折扣、查 务 询数量等
继承性
▪ 继承是事物之间存在的共性 ▪ 子类自动地共享基类中定义的数据和方法的机制。
➢ 基类与派生类 ➢ 单继承与多重继承
▪ 继承的优点
➢ 减少原代码,即代码可重用。 ➢ 代码的相互独立性。 ➢ 易于维护。 ➢ 体现自然界之间的关系。
➢ 经典的公式:数据结构+算法 ➢ 面向对象认为软件功能是通过一个个对象的行为来完
成的。
▪ 庖丁解牛的三重境界
眼中全牛,心中无牛 心中解牛 心中全牛
面向对象的基本概念
▪ 对象的定义
➢ 对象是具有相同状态的一组操作的集合。 ➢ 对象是对业务系统中某个东西的抽象,这种抽象反映了系统
保存有关这个东西的信息或与它交互的能力。 ➢ 对象是封装了数据结构及可以施加在这些数据结构上的操作
▪ 抽象类和接口
➢ 实现与继承
类与对象的描述
▪ (a)是表示类—&—对象的图形符号,(b)是表 示类的图形符号。
对象之间的关系
▪ 归纳关系 ▪ 组合关系 ▪ 关联关系。
归纳关系
▪ 归纳关系就是“一般—特珠” 关系,它反映了一个类与若 干个互不相容的子类之间的 分类关系。高层类(即基类) 说明一般性的属性,低层类 (即派生类)说明特殊属性。 低层类对象是某种特殊的高 层类对象,它继承了在高层 类中定义的属性和服务。
➢
➢ 消息选择符(也称为方法名) ➢ 零个或多个参数值。
▪ 对象A向对象B发送消息f就是对象A调用对象B的 方法f
面向对象的特征
▪ 以数据为中心,抑或以行为为中心
➢ 分别用上述两种方式来描述人
▪ 封装性 ▪ 继承性 ▪ 多态性
封装性
▪ 封装性是把对象的属性和方法结合成一个独立的 单元,并尽可能荫蔽对象的内部细节。
➢ 若在逻辑上A是B的“一部分”(a part of), 则不允许B继承A的功能,而是要用A和其它东 西组合出B。 头与眼睛、鼻子、耳朵、嘴巴的 关系。
▪ 尽量避免使用多重继承。 ▪ 继承的层次不宜太多
多态性
▪ 对不同的消息表现出不同的行为 ▪ 覆盖与重载
➢ 虚方法 ➢ 参数重载
参数数目不同 参数类型不同 参数类型顺序不同