面向对象技术引论课件 第四章(华大)
合集下载
华中科技大学C++课件第四章派生类、基类和继承性教材
2 2021/6/21
华中科技大学控制系C++程序设计 1—8 王卓
如图4.1所示,由父类、子类和孙子类构成了一个三层的类层次
结构,那末父类是子类的直接基类,子类是父类的直接派生类但又是 孙子类的直接基类,孙子类是子类的直接派生类,而父类对孙子类, 以及父类对曾孙子类都称为间接基类,反过来孙子类对父类及曾孙子 类对父类都称为间接派生类。以后将直接基类和直接派生类分别简称 为基类和派生类。
(1)冒号把派生类与基类名分开,并用它来建立派生类和基类之间的层次
结构。 (2)派生类在类体内也可以定义数据成员和成员函数,由于派生类继承了
其基类的所有成员,即基类的成员将自动地成为派生类的成员(共性,可 不再重复编写),因此在派生类体中只列出新增的数据成员和成员函数。 (个性,只编写新增加的) 例如可以用类Base来表示二维坐标中的点:
华中科技大学控制系C++程序设计 1—8 王卓
12.1继承的概念:什么是继承?继承是客观世界中实体间的一种 关系。具有如下关键成份:
•实体间共有的特征(共有的属性和状态) •实体间的区别(个性) •层次结构
现实世界是分类分层的客观实在,物质可分为有机和无机,有 机体又分为生命体和非生命体,生命体进而可分为动物、植物和微 生物等。用继承来描述事物的层次关系,帮助人们更准确地理解事 物的本质,一旦搞清了事物的层次结构,也就找到了解决问题的办 法。在我们周围处处有继承。例如家庭成员。每个人从自己父母身 上继承了相同的基本特征。体魄、外形和举止习惯,而兄弟姐妹间 又有不同之处。一个家庭成员的关系是一种层次结构。
<< "\t y = " << y << endl; } }; class Derived : public Base {
面向对象编程技术第四章.ppt
实参 7. 通过定义类的实例-对象,只分配数据成员空间,共享类的
代码空间
2. 析构函数
请关注后 面的内容!
▪ 析构函数名:~类名 ▪ 完成对象被删除前的一些清理工作。
▪ 在对象的生存期结束的时刻系统自动调用它,然后再释放此 对象所属的空间。
▪ 如果程序中未声明析构函数,编译器将自动产生一个缺省的 析构函数。
第四章 类与对象
一. 类和对象 二. 构造函数与析构函数 三. 面向对象的基本特点 四. 类的组合 五. 前向引用说明 六. 类模板//以后介绍 七. 面向对象标记 八. 要点回顾
认识事物的 规律:由简 单到复杂!顺
序体现第三版 本改进了
一、 类与对象
1. 类概述
1. 类是具有相同属性和行为的一组对象的抽象集合, 为该类的全部对象提供了统一的抽象描述,包括 属性和行为两个主要部分。
Hour=NewH; Minute=NewM; Second=NewS; } void Clock :: ShowTime( ) { cout<<Hour<<":"<<Minute<<":"<<Second; }
说明:
1. 关键字public后面声明公有类型成员 它们是类与外部的接口,任何外部函数都可以访问公有类 型数据和函数
2. 利用类可以实现数据的封装、隐藏、继承与派生。 3. 利用类易于编写大型复杂程序,其模块化程度比
C中采用函数更高。
慢慢体会…
2. 类的定义:
类是一种用户自定义类型,声明形式:
class 类名 {
public: 公有成员(外部接口)
private: 私有成员
代码空间
2. 析构函数
请关注后 面的内容!
▪ 析构函数名:~类名 ▪ 完成对象被删除前的一些清理工作。
▪ 在对象的生存期结束的时刻系统自动调用它,然后再释放此 对象所属的空间。
▪ 如果程序中未声明析构函数,编译器将自动产生一个缺省的 析构函数。
第四章 类与对象
一. 类和对象 二. 构造函数与析构函数 三. 面向对象的基本特点 四. 类的组合 五. 前向引用说明 六. 类模板//以后介绍 七. 面向对象标记 八. 要点回顾
认识事物的 规律:由简 单到复杂!顺
序体现第三版 本改进了
一、 类与对象
1. 类概述
1. 类是具有相同属性和行为的一组对象的抽象集合, 为该类的全部对象提供了统一的抽象描述,包括 属性和行为两个主要部分。
Hour=NewH; Minute=NewM; Second=NewS; } void Clock :: ShowTime( ) { cout<<Hour<<":"<<Minute<<":"<<Second; }
说明:
1. 关键字public后面声明公有类型成员 它们是类与外部的接口,任何外部函数都可以访问公有类 型数据和函数
2. 利用类可以实现数据的封装、隐藏、继承与派生。 3. 利用类易于编写大型复杂程序,其模块化程度比
C中采用函数更高。
慢慢体会…
2. 类的定义:
类是一种用户自定义类型,声明形式:
class 类名 {
public: 公有成员(外部接口)
private: 私有成员
《面向对象技术4》
2、思维组织模式 系统分析的本质是一种思维过程,就是考虑问题的次 序、条理、层次等方面的模式。在传统的分析模式中, 从问题空间到分析结果的映射是间接的,因为分析方法 所决定的思维模式与人们所采用的思维模式有一定的距 离,为了减少这些距离,只好进行转换,以利于分析结 果的传递。
从根本上统一思维模式的方法是在系统开发的各个环 节中,统一采用人类原有的思维组织模式。人类典型的 思维过程是由三部分来进行组织的: (1)从现实世界中区分出特定的客体及其属性; (2)对客体的整体和组成部分加以区分; (3)对不同种类的客体给出表示,在此基础上并加以区 分。 面向对象的分析方法就是建立在这3个来自人类自己思 维组织模式之上,依照客观世界本来的规律来开发应用 系统的。
3)对候选对象考察什么? 对候选对象,能否认定它是一个对象,要考虑: (1)需要记忆:即系统是否有必要记忆对象的某些或全 部成分; (2)需要服务:即系统是否有必要对该对象的行为提供 服务; (3)多于一个属性:若只有一个属性的对象,通常应看 成其它对象的属性; (4)共有属性:即对于一种对象所有的实例,能否认定 一组为这些实例所共有的属性;
一、主要数据结构(多层次多组元的模型) 面向对象的分析和面向对象的设计之间并没有象传统开发方法那 样有明显的界限,但的确存在差别,即在抽象程度上、先后顺序及 侧重点的差别。这种特点与采用了一致的思维方式有关,也与面向 对象模式本身就状态交换和进化的认识有关。 在Coad方法的面向对象的分析中,有5种活动: (1)标识对象; (2)识别类的结构; (3)确定主题; (4)定义属性; (5)定义服务。
(3)图:能收集到一切图,如结构图、接口图、系统构 件图、高层次的数据流图和控制流图等,根据这些图再 用图表和联线画出内容丰富的图来,以形成问题空间的 初始框架。
面向对象方法学引论面.ppt
工程
实例:某个描述的具体对象;
3、消息: . ((s));
4、方法(操作): 能做的操作,亦称为, 在 中须定义相应的代 码;
5、属性 : 的固有数据;
7、继承:子类自动共享父类的 和 ,而不必重复定义。
例:
Class 中国人 中国人 Attributes 中国人 Methods
张三 (instance) Class 中国人 张三的 Attributes
软件 软工件程 工程
Class 成都人 (子类) Class 中国人
成都人 Attributes 成都人 Methods
李四 (instance) Class 成都人 中国人李四的 Attributes 成都人李四的 Attributes
软件
③ 一个子类只 有 一 个父类称为单 继 承, 一个子类可有 软工件程
例:
成都
我想把邮局搬到 我家门口,多加几个 邮递员,24小时都开门 唉,那就先送…束…花吧 ——
(, )
Post-office
: ; ;
……
: ;
软件 软工件程 工Hale Waihona Puke 北京对不起, 本邮局不提供
的四要素:
软件 软工件程 工程
= ①对象():世界由对象组成。
② 类 () :具有相同属性和操作的对象可划分为类;单个对象可 视为某一类的实例 ()。
方法(简称)
最大特点是强调使用用例(),每一个用例就是一个使用 系统的方式,用例的执行将引发执行一系列与行为相关的事
统一建模语言 软件 软工件程 由、、提出的统一建模语言( ) ,简称。 工程
产生于90年代中期。它不仅统一了、和方法中的 概念和表示法,而且对其作了进一步扩展,最终 成为在面向对象技术领域占主导地位的、并被大 众所接受的标准建模语言。不是一个开发过程, 也不是一个方法,但允许任何一种开发过程和面 向对象方法使用它。
《面向对象概述》课件
面向对象概述
本PPT课件将详细介绍面向对象的基本概念、特点、原则、应用场景以及编 程语言和工具。欢迎大家一起探索这个有趣的话题。
什么是面向对象?
面向对象是一种程序设计思想,将现实世界中的事物抽象成一个个对象,通过封装、继承和多态等特性 进行抽象、设计和编写软件,使其更具可维护性、可扩展性、易于理解并且更加符合人们的思考方式。
现实世界的事物
面向对象是一种对现实世界进行建模的方式,它 将事物抽象成对象。
更好的编码
面向对象编程的好处:更可维护、更可扩展、更 易于理解。
面向对象的三大特征
1 封装
封装是指将对象的属性 和行为包装在一个单元 中,对外部隐藏实现细 节。
2 继承
继承是指通过基类和派 生类之间的关系,实现 代码复用和功能扩展。
Java
Java是一种通用的高级编程语言,具有跨平台和 强大的面向对象特性,被广泛应用于各种开发场 景。
案例分析
面向对象的思想在各种场景下都有广泛应用,例如:图形化用户界面开发、游戏设计、机器学习算法编 写、网站开发等。下面就以一个简单的游戏为例,展示如何使用面向对象的思想进行软件开发。
游戏编程
使用面向对象的思想进行游戏编程,可以提高代 码的可维护性和复用性。
维护和扩展
面向对象的代码更加易于维护和扩展,能够 适应新的需求和更改。
面向对象的编程语言和工具
面向对象编程可以用各种编程语言实现,例如Java、Python、C#等。同时,各种集成开发环境(IDE) 也为开发者提供了很多便捷的工具和插件。
Python
Python是一种高级编程语言,以面向对象的设计 和语法为其特色,被广泛应用于Web开发、数据 分析、人工智能等领域。
3 多态
本PPT课件将详细介绍面向对象的基本概念、特点、原则、应用场景以及编 程语言和工具。欢迎大家一起探索这个有趣的话题。
什么是面向对象?
面向对象是一种程序设计思想,将现实世界中的事物抽象成一个个对象,通过封装、继承和多态等特性 进行抽象、设计和编写软件,使其更具可维护性、可扩展性、易于理解并且更加符合人们的思考方式。
现实世界的事物
面向对象是一种对现实世界进行建模的方式,它 将事物抽象成对象。
更好的编码
面向对象编程的好处:更可维护、更可扩展、更 易于理解。
面向对象的三大特征
1 封装
封装是指将对象的属性 和行为包装在一个单元 中,对外部隐藏实现细 节。
2 继承
继承是指通过基类和派 生类之间的关系,实现 代码复用和功能扩展。
Java
Java是一种通用的高级编程语言,具有跨平台和 强大的面向对象特性,被广泛应用于各种开发场 景。
案例分析
面向对象的思想在各种场景下都有广泛应用,例如:图形化用户界面开发、游戏设计、机器学习算法编 写、网站开发等。下面就以一个简单的游戏为例,展示如何使用面向对象的思想进行软件开发。
游戏编程
使用面向对象的思想进行游戏编程,可以提高代 码的可维护性和复用性。
维护和扩展
面向对象的代码更加易于维护和扩展,能够 适应新的需求和更改。
面向对象的编程语言和工具
面向对象编程可以用各种编程语言实现,例如Java、Python、C#等。同时,各种集成开发环境(IDE) 也为开发者提供了很多便捷的工具和插件。
Python
Python是一种高级编程语言,以面向对象的设计 和语法为其特色,被广泛应用于Web开发、数据 分析、人工智能等领域。
3 多态
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
对系统的语境建模,包括围绕整个系统画一条线, 并声明有哪些参与者位于系统之外并与系统进行交互。
Credit Card validation System
Perform Card
Customer
Process Customer bill
Reconcile
transaction Manage Customer account
在该语境中,还有代表机构的参与者(出现在模型 的右边),如零售机构(顾客通过该机构刷卡,购买 商品或获得服务)、主办金融机构(负责信用卡帐户 的结帐服务)。在现实世界中,这两个参与者不是人, 而可能是一个软件密集型系统。
(2)对系统语境建模所要遵循的策略(步骤)
通过以下几组事物来识别系统周围的参与者:
主事件流:在系统提示顾客输入PIN编号时用况开始。 顾客通过按键输入PIN编号;顾客按“输入”按钮确认 登录;系统校验该PIN号是否有效。如果有效,系统 承认这次登录,该用况结束。
异常事件流1:顾客可以在任何时间通过按“取消”按钮 取消一个事务,这样该用况重新开始。顾客的帐户未 发生改变。 异常事件流2:顾客可以在确认之前的任何时刻消除 PIN号,并重新输入一个新的PIN号。 异常事件流3:如果顾客输入一个无效的PIN号,用况 重新开始;如果连续3次输入无效的PIN号,系统将取 消整个事务,并在60秒内阻止该顾客与ATM交易。
Place Order
<<include>>
Track Order
Validate User
<<include>>
3) 用况之间的延伸关系
用况之间的延伸关系表示基础用况在由延伸用况 间接地说明的一个位置上隐式地合并了另一个用况的 行为。
基础用况可以单独存在,但在一定条件下,它 的行为可以被另一个用况的行为延伸。
该基础用况只是在一个被称为它的延伸点的确 定位置上被延伸。
可以将延伸关系理解为延伸用况把行为放入基 础用况中。 可以将延伸关系表示成一个构造型为extend的 依赖关系。
例:Place Order(发出订单)用况和Place rush Order(发出急需单号)用况之间存在延伸关系。
延伸点
Place Order <<extend>> Extension point (set priority) Set priority
Retail institution
Individual Customer
Corporate Customer
Sponsoring financial institution
上图(右图)显示了一个信 用卡验证系统的语境,它强 调围绕在系统周围的参与者, 这些参与者分为两类:人和 其他事物。 出现在模型左边的的参与者是顾客,分为个人顾客 和团体顾客(存在泛化关系)。这些参与者是人与系 统交互时所扮演的角色。
1)公共特性
用况图只是图的一种特殊类型,它具有与所有 UML图一样的公共特征,即一个名称以及投影到模型 上的图形化的内容。
2)内容
用况图通常包括: • 用况 • 参与者 • 依赖(包含、延伸)、泛化及关联关系 • 注解和约束。
3)一般应用
用况图用于对系统的静态用况视图建模。该视图 主要支持对系统行为的描述 ,即描述该系统在它的周 边环境的语境中所提供的外部可见服务。 具体而言,对系统的静态用况视图建模时,一般 会以对系统的语境建模和对系统需求建模两种方式来 使用用况图。 (1)对系统的语境建模 系统的语境:给定一个系统,会有一些事物存在于 系统的内部,一些事物存在于系统的外部,所有存在 于系统外部并与系统进行交互的事物(参与者)构成 了系统的语境。语境定义了系统存在的环境。
需要从系统中得到帮助以完成其任务的组; 执行系统的功能时所必须的组;
与外部硬件或其他软件系统进行交互的组; 为了管理和维护而执行某些辅助功能的组。
(2)对系统语境建模所要遵循的策略(续)
利用泛化关系将相类似的(具有相同性质的)参与 者组织成一般/特殊的结构层次。 在需要加深理解的地方,为每个参与者提供一个构 造型。
下图是对信用卡验证系统语境模型(用况图)的扩充,它 加入了一些用况,这些用况对于一般顾客虽然不可见,但仍是 系统的基本行为。
Credit Card validation System
Customer
Perform Card transaction
Report on account status
第四章 用况和用况图
一个用况代表一个系统或系统的一部分的行为, 它的主要用处是:捕获与描述系统需求,同时也驱动 整个开发过程。
用况图也称为用况模型,用于对系统的用况视图 建模(用况视图是系统体系结构的五大视图之一), 也可以认为是对系统的外部行为建模。 多数情况下,包括对系统、子系统或类的语境建 模,或对这些元素的行为需求建模。它对可视化、详 述和文档化一个元素的行为是非常重要的。
从非功能性需求中发现用况的附加成分。 用况除了描述功能需求之外,还可以说明某些非 功能性需求,例如对某个用况特定的性能、可用性、 准确度和安全性等的需求。这些都有必要作为用况的 附加成分,附加到相应的用况中。
例如:对于“取款”这一用况而言,应该附 加下面的性能要求:
银行储户从指定取款数量到得到相应的货币的响 应时间在所有用况实例的95%中应该小于30秒。
单独的名称称为简单名,在用况名前加上它所属 的包的名称,称为路径名。
Place order
简单名
路径名
Validate user
Sensors:: Calibrate location
(4)用况与参与者
一个参与者表示用况的使用者在与这些用况进行 交互时所扮演的角色的一个紧密的集合。 参与者所代表的角色有:人、硬件设备,或甚至 是另一个系统。 例如:如果你在银行工作,你可能是一个贷款员, 如果你在该银行有存款,那么你同时也扮演一名顾 客的角色。所以,一个参与者的一个实例代表以一 种特定的方式与系统进行单独的交互。 注意:尽管在模型中使用参与者,但参与者实际上 并不是系统的一部分。
将这些参与者放入用况图中,并说明从每个参与者 到系统的用况之间的通信路径。
(3)对系统的需求建模 需求是一个系统的设计特性、特征或行为。当陈述 一个系统的需求时,就相当于陈述建立在系统外部的 事物和系统之间的一份契约,契约上声明了期望系统 做什么。 对一个系统的需求建模,主要是说明这个系统应该 做什么(从系统外部的一个视点出发),而不考虑系 统应该怎样做。 用况图说明了系统所能提供的行为。因此用况图使 我们能够将系统看作一个黑盒子,仅仅只能观察系统 外部有什么,系统怎样与那些外部事物相互作用,但 却看不到系统内部是如何工作的。
取款
存款 银行储户
在不同帐户 间转帐
1.用况模型(续)
用况模型是所有可能使用系统(用况)的方式的完 整的规格说明,它可以用作与客户签定合同的一部分。
用况模型用来与用户和客户在“系统应该做什么” 方面达成共识。也即用况模型表示功能性需求。
用况模型用用况图来表示。
2. 用况图
术语:用况图(use case diagram)是显示一组用况、 参与者以及它们之间关系的图。
4.1 用况
1. 用况(use case) (1)用况的定义
用况是对一组动作序列(业务过程)的描述,系 统执行这些动作将产生一个对特定的参与者有价值而 且可观察的结果。
(2)用况的图形符号
在图形上,一个用况用一个椭圆表示。
取款
(3)用况的名称
每一个用况都必须有一个区别于其他用况的名称。 用况名称(name)是一个字符串。在实际应用中,用 况的名称是简短的主动语态的动词词组,用来描述被 建模的系统的某些行为。
Place rush Order
延伸关系用于对可能被用户看作是可选系统行 为的用况的一部分建模(Place rush Order是可选 的)。
通过这种方式,可以把可选行为从必须行为中 分离出来。
实例应用:一个零售系统将与订货的顾客进行交互, 然后,系统将装运订货、并通告顾客付帐。可以通过将 这些元素的行为声明为用况来对系统的行为建模。 所声明的用况包括:Place order、Track order、 Ship order和Bill customer。 用况模型如下图所示:
2. 用况之间的关系
用况之间存在泛化关系、包含关系和延伸关系, 我们可以利用这些关系来组织用况。
1) 用况之间的泛化关系
用况之间的泛化关系就像类之间的泛化关系,子 (特殊)用况继承父(一般)用况的行为和含义;子 用况还可以增加或覆盖父用况的行为;子用况可以出 现在父用况出现的任何位置。 例:ATM系统中的Validate User用况,根据校验设备 的不同可以特例化为以下二个特殊用况: Check Password用况和Retinal Scan用况。
参与者 出纳员 顾客 发起或参加的活动 登录、用现金结算 购买商品、退还商品
基于事件的方法 a. 识别出系统必须响应的外部事件。
b. 把事件与参与者及用况联系起来。
4.2 用况模型和用况图
1.用况模型
系统的所有参与者和用况以及用况之间的关系 (依赖、延伸、泛化等)构成用况模型。
参与者“银行储户” 使用ATM从帐户中 取款,或存款到帐 户中,或在不同的 帐户之间转帐。上 述行为可以由三个 用况与“银行储户” 这个参与者之间的 交互来表示。
参与者的图形符号是人形图符
Customer
可以定义参与者的一般种类(比如Customer) 并通过泛化关系将其特殊化(比如Commercial Customer)。
Customer Commercial Customer
(5)用况与事件流
可以通过足够清晰的、外部人员容易理解的文字 描述一个或一些事件流来说明一个用况的行为,也即 通过事件流来详述用况。 事件流中应该包含用况何时开始、何时结束,用 况何时和参与者交互,什么对象被交换,以及该行为 的基本流(主事件流)和可选择流(异常事件流)。 例:在ATM系统中,可以采用下面的主事件流和异常 事件流来描述用况Validate User的行为: