Microsoft PowerPoint - L17_Inheritance_v4.pptx



Similar documents
Strings

Microsoft Word - chap10.doc

Strings

第七讲 继承与多态

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入

Microsoft Word - 物件導向編程精要.doc

<4D F736F F F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074>

Microsoft Word - ch04三校.doc

extend

untitled

新・解きながら学ぶJava

untitled

untitled

相 应 功 能 (5) 再 将 Boy 类 作 为 Girl 类 的 友 元 类, 在 Boy 类 的 某 成 员 函 数 VisitGirl(Girl & ) 中 访 问 Girl 类 的 私 有 成 员, 观 察 编 译 器 给 出 的 信 息 ( 6 ) 删 除 两 个 类 中 的 函 数 V

前言 C# C# C# C C# C# C# C# C# microservices C# More Effective C# More Effective C# C# C# C# Effective C# 50 C# C# 7 Effective vii

Microsoft Word - 第3章.doc

标题

9, : Java 19., [4 ]. 3 Apla2Java Apla PAR,Apla2Java Apla Java.,Apla,,, 1. 1 Apla Apla A[J ] Get elem (set A) A J A B Intersection(set A,set B) A B A B

c_cpp

软件工程文档编制

MDP2016_hk_class2_preview

C/C++程序设计 - 字符串与格式化输入/输出

1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET NET Framework.NET Framework 2.0 ( 3 ).NET Framework 2.0.NET F

CHAPTER VC#

Microsoft PowerPoint - plan08.ppt

CC213

Microsoft Word - 2AF63內文.doc

11页词库答案

新版 明解C++入門編

FY.DOC

C/C++ - 文件IO

CHAPTER 1

!!! #! #!!!!

北京农学院2014年就业质量年度报告

欧 洲 研 究 年 第 期! # % # %! #

年 第 期!! %! # # &! #! ( % & 余 牧 人 # 抗 战 八 年 来 的 中 国 教 会 # 基 督 教 丛 刊 第 期 年 月 第 页 参 见 刘 吉 西 等 编 # 四 川 基 督 教 巴 蜀 书 社 年 版 秦 和 平 # 基 督 宗 教 在 西 南 民 族 地 区 的 传

!!! #! #!

数 据 库!!

会 文 化 的 封 闭 隔 绝 政 治 的 对 立 与 社 会 制 度 的 差 异 迫 使 这 些 大 陆 迁 台 的 外 省 人 # 变 成 了 有 家 归 不 得 的 流 亡 者 与 故 乡 的 一 切 从 此 天 各 一 方 摆 荡 在 新 旧 环 境 的 焦 躁 中 这 些 跋 涉 过 动

# # # # # # #!# # 铏 描 写 的 这 个 故 事 当 然 是 出 于 想 象 # 和 傅 会 # 而 作 为 便 于 讨 论 相 关 问 题 我 们 有 必 要 先! %!! #!!!!!!!!!!!! #!! #! # # 鷟 的 游 仙 窟! 记 叙 其 与 崔 十 娘 五 嫂

Microsoft PowerPoint - 5-人事室-印手冊用

,,,,,,,,,,,, :?,,? ( )??,,??,,?,,? ( )?,?,,? ( ),? 阿 英 夜 半 的 尖 叫 已 经 持 续 了 一 个 月, 她 说 不 知 道 为 什 么 会 这 样, 也 控 制 不 了 听 到 人 家 的 谈 论, 我 很 不 开 心 我 根 本 不 知

Microsoft Word - ¼¯±ô¤p«Ä.doc

壹 前 言 一. 研 究 動 機 學 者 指 出 轉 換 時 期 是 孩 子 飲 食 習 慣 建 立 的 關 鍵 時 期, 若 孩 子 累 積 不 好 得 經 驗, 到 兩 歲 時 可 能 會 出 現 偏 食 情 況 ( 張 雪 惠, ) 嬰 兒 的 副 食 品 是 邁 入 寶 寶

一 朝 鲜 人 移 居 中 国 东 北 的 过 程 及 主 要 政 治 因 素 关 于 朝 鲜 人 移 居 中 国 东 北 的 过 程 加 利 福 尼 亚 州 立 大 学 教 授 将 移 民 过 程 分 为 个 阶 段 即 第 一 阶 段 是 年 以 前 这 时 期 移 入 中 国 东 北 的 朝

近 代 史 研 究 % 年 第 期! # % # & % % % % % % % %

合 情 合 理 即 是 好 法 # # # # 鸣 珂 劳 远 望 展 纸 托 情 深 世 乱 关 河 隔 旅 怀 岁 月 侵 家 珍 次 第 数 好 句 短 长 吟 清 越 东 山 志 流 风 自 可 钦! 理 要 层 层 觅 情 须 一 往 深 常 存 春 夏 意 不 让 雪 霜 侵 越 石 霄

,,,,, ( ), ;,, ( ), ( ),, ( ), ( ),,,,,,,,,, ( ), (, );,,, (, ),,,,, (, : ) :,,,,, ( ),,,,,,,,,,,,,, ( ),,,,,,,,,,

侵 略 性 是 我 们 称 之 为 自 恋 的 认 同 模 式 的 相 关 倾 向 而 这 种 认 同 模 式 决 定 了 人 的 自 我 以 及 人 的 世 界 特 有 的 实 体 域 的 形 式 结 构


李 自 然 % 试 论 乾 隆 对 回 民 的 政 策 兼 评 李 普 曼 论 大 清 律 例 当 中 的 伊 斯 兰 教 和 穆 斯 林! # # # # #! # # & # # ( # # ) # # # # # & 清 高 宗 实 录 卷 清 高 宗 实 录 卷 ( 清 高 宗 实 录 卷

第十二課:出埃及記第三十二章

袁 华 第 四 军 医 大 学 西 京 医 院 琚 芬 第 四 军 医 大 学 西 京 医 院 段 强 第 四 军 医 大 学 西 京 医 院 张 盘 德 佛 山 市 第 一 人 民 医 院 潘 燕 霞 福 建 医 科 大 学 刘

( 六 ) 誰 該 做 佛 事? 50 ( 七 ) 誦 經 做 什 么? 53 ( 八 ) 拜 懺 做 什 么? 56 ( 九 ) 放 焰 口 做 什 么? 58 ( 十 ) 人 鬼 之 間 的 佛 事 60 兩 類 超 度 亡 與 存 ( 一 ) 前 言 64 ( 二 ) 超 度 亡 靈 64 (

目 录 一 重 要 提 示... 3 二 公 司 主 要 财 务 数 据 和 股 东 变 化... 3 三 重 要 事 项... 7 四 附 录 / 25

!!!!!!!

欧 洲 研 究 年 第 期!! # % & # ( ) ( ) % &

!

# % % 狥 名 已 矣 心 斋 王 &

%!!

沦 陷 时 期 北 平 日 伪 的 金 融 体 系 及 掠 夺 手 段!!

( 附 件 一 ) 中 華 民 國 兒 童 教 保 聯 合 總 會 幼 兒 教 育 及 照 顧 法 第 十 八 條 修 正 草 案 建 議 對 照 教 育 部 版 條 文 教 保 服 務 人 員 條 例 第 19 條 草 案 本 法 施 行 前 已 於 私 立 托 兒 所 任 職, 於 本 法 施

中 国 社 会 科 学 年 第 期! % &! % & ( ( ( ( ) ) ( ( ( ( ) + ) (

!!

社 会 学 研 究., ( 二 ) 社 会 的 生 产 作 为 独 特 的 转 型 问 题,, :,,,, :,, :,?,?,,, ( ),, (. ) (- ) ( ), (. ) ( )(, ), : +,? 1 ( 三 ) 转 型 社 会 与 转 型 社 会 学 的 使 命,,,,,,, 1

对 法 理 学 知 识 谱 系 的 一 种 考 察 一 追 求 作 为 客 观 实 体 的 法 律 # # # % & # # ( ) % & % & ( % & % & ) # % & % &

书 评 :,,,, :,,,,, ( ),, :?,,,, ( ),,, ( ), :,,, :,,?,?,,,,,,,,

,,,,,,,,, (, ),,,,,,,,,,,,,,,,,, (,,,,,, ),,,,,,,, ( ),,, (, ),,,, % %,,,,,, (, )(, ), ( ), ( ) ( ), ( ), ( ) ( ),,,,, ( ),,,

九十一學年度第二學期高屏區東方、大仁、美和、永達、高苑、和春、樹人、慈惠技專校院五年制專科部聯合招收一、二、三、四年級轉學生 簡章

untitled

(procedure-oriented)?? 2

EJB-Programming-3.PDF

Chapter 9: Objects and Classes

sktl00007_read.pdf

1.5招募说明书(草案)

141221_C~s^Ui2013_1

Microsoft Word - template.doc

<ADB6ADB1C25EA8FAA6DB2D4D56432E706466>

untitled

D C 93 2

3.1 num = 3 ch = 'C' 2

(Microsoft PowerPoint - 3-1\260\323\255^-\246p\246\363\274\266\274g\274i\276\372.ppt)

Microsoft PowerPoint - 10_Polymophism_1.ppt

团 学 要 闻 我 校 召 开 共 青 团 五 届 九 次 全 委 ( 扩 大 ) 会 议 3 月 17 日, 我 校 共 青 团 五 届 九 次 全 委 ( 扩 大 ) 会 议 在 行 政 办 公 楼 五 楼 会 议 室 举 行, 校 团 委 委 员 各 院 ( 系 ) 团 委 书 记 校 学 生

C/C++ - 函数

Microsoft Word 記錄附件

致遠管理學院法規提案單

2 校 史 沿 革

<4D F736F F D D3620B3AFB24DA8712DB747AFE0AC46A9B2BB50A4BDB0C8ADDBB27AA4A7B1B4B0512E646F63>

Microsoft Word - MIS.doc

Hong Kong ICAC

临床路径管理模式下医疗服务流程的关键环节分析

C/C++语言 - C/C++数据

國立鳳山高級中學學生手冊 目錄

中 国 系 统 工 程 学 会 理 事 会 民 主 管 理 办 法 中 国 系 统 工 程 学 会 行 政 人 员 人 事 管 理 制 度 中 国 系 统 工 程 学 会 财 务 管 理 办 法 教 育 系 统 工 程 专 业 委 员 会 2015 年 工 作 总 结 过 程 系 统 工 程 专 业

Microsoft PowerPoint - CPP-Ch Print.ppt [兼容模式]

全国计算机技术与软件专业技术资格(水平)考试

Microsoft PowerPoint - ch6 [相容模式]

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

Microsoft Word cppFinalSolution.doc

Transcription:

C++ Programming Lecture 17 Wei Liu ( 刘 威 ) Dept. of Electronics and Information Eng. Huazhong University of Science and Technology May. 2015

Lecture 17 Chapter 20. Object-Oriented Programming: Inheritance 20.1 Introduction 20.2 Base Classes and Derived Classes 20.3 protected Members 20.4 Relationship between Base Classes and Derived Classes 20.5 Constructors and Destructors in Derived Classes 20.6 public, protected and private Inheritance 20.7 Software Engineering with Inheritance -2-

20.1 Introduction Inheritance is a form of software reuse in which you create a class that absorbs an existing class s data and behaviors and enhances them with new capabilities. You can designate that the new class should inherit the members of an existing class. 继 承 是 一 种 软 件 重 用 的 方 式 如 果 现 有 类 可 以 描 述 事 物 的 现 有 数 据 和 行 为, 通 过 继 承 来 获 得 和 增 强 类 的 能 力 This existing class is called the base class, and the new class is referred to as the derived class. 现 有 的 类 被 称 为 基 类, 从 基 类 继 承 出 来 的 类 被 称 为 派 生 类 -3-

Lecture 17 Chapter 20. Object-Oriented Programming: Inheritance 20.1 Introduction 20.2 Base Classes and Derived Classes 20.3 protected Members 20.4 Relationship between Base Classes and Derived Classes 20.5 Constructors and Destructors in Derived Classes 20.6 public, protected and private Inheritance 20.7 Software Engineering with Inheritance -4-

20.2 Base Classes and Derived Classes 现 实 世 界 的 继 承 从 先 辈 处 获 得 属 性 和 行 为 特 征 C++ 中 类 的 继 承 继 承 : 新 的 类 从 已 有 类 那 里 得 到 已 有 的 特 性 派 生 : 从 已 有 类 产 生 新 类 的 过 程 单 继 承 : 一 个 派 生 类 只 有 一 个 直 接 基 类 多 继 承 : 一 个 派 生 类 同 时 有 多 个 基 类 -5-

-6-

20.2 Base Classes and Derived Classes 派 生 类 生 成 的 过 程 吸 收 已 有 的 基 类 的 成 员 构 造 函 数 析 构 函 数 除 外 改 造 基 类 的 成 员 声 明 同 名 的 成 员 后, 隐 藏 了 原 基 类 的 成 员 添 加 新 的 成 员 -7-

20.2 Protected Members C++ 中 类 的 成 员 的 访 问 控 制 属 性 public: 公 有 的 在 该 类 中 直 接 访 问 在 该 类 以 外, 可 以 通 过 该 类 的 名 字 引 用 或 者 指 针 访 问 private: 私 有 的 在 该 类 中 直 接 访 问 在 该 类 以 外, 只 能 通 过 该 类 的 友 元 来 访 问 protected: 保 护 的 在 该 类 中 直 接 访 问 在 该 类 以 外, 可 以 通 过 该 类 的 派 生 类 该 类 的 友 元 访 问 -8-

Lecture 17 Chapter 20. Object-Oriented Programming: Inheritance 20.1 Introduction 20.2 Base Classes and Derived Classes 20.3 protected Members 20.4 Relationship between Base Classes and Derived Classes 20.5 Constructors and Destructors in Derived Classes 20.6 public, protected and private Inheritance 20.7 Software Engineering with Inheritance -9-

20.4.3 创 建 CommissionEmployee 和 BasePlusCommissionEmployee 继 承 结 构 CommissionEmployee - string firstname; - string lastname; - string socialsecuritynumber; - double grosssales; - double commissionrate; + CommissionEmployee(const string &, const string &, double, double) + void setfirstname(const string &); + string getfirstname() const; + double earnings() const; + void print() const; BasePlusCommissionEmployee - string firstname; - string lastname; - string socialsecuritynumber; - double grosssales; - double commissionrate; - double basesalary; + CommissionEmployee(const string &, const string &, double, double, double) + void setfirstname(const string &); + string getfirstname() const; + void setbasesalary (const double &); + double getbasesalary() const; + double earnings() const; + void print() const; 继 承 的 好 处 : 避 免 了 对 同 样 功 能 的 代 码 的 复 制 - 粘 贴, 有 利 于 代 码 的 维 护 -10-

派 生 类 修 改 了 基 类 的 计 算 部 分 派 生 类 新 增 了 对 派 生 数 据 成 员 的 操 作 -11-

20.4.4 使 用 protected 数 据 的 CommissionEmployee BasePlusCommissionEmployee 继 承 结 构 CommissionEmployee - string firstname; - string lastname; - string socialsecuritynumber; - double grosssales; - double commissionrate; + CommissionEmployee(const string &, const string &, double, double) + void setfirstname(const string &); + string getfirstname() const; CommissionEmployee # string firstname; # string lastname; # string socialsecuritynumber; # double grosssales; # double commissionrate; + CommissionEmployee(const string &, const string &, double, double) + void setfirstname(const string &); + string getfirstname() const; 为 了 在 派 生 类 中, 便 于 使 用 从 基 类 继 承 的 数 据 成 员, 可 以 在 基 类 中, 将 这 些 数 据 成 员 声 明 为 保 护 的 数 据 成 员 -12-

当 基 类 的 数 据 成 员 声 明 为 protected 时 : 派 生 类 的 对 象 基 类 的 对 象 私 有 数 据 当 基 类 的 数 据 成 员 声 明 为 private 时 : 派 生 类 的 对 象 基 类 的 公 共 接 口 成 员 函 数 基 类 的 对 象 私 有 数 据 绕 过 了 基 类 的 公 共 接 口 函 数, 有 可 能 破 坏 了 基 类 的 数 据 维 护 关 系, 使 得 基 类 对 象 的 数 据 处 于 不 一 致 的 状 态 因 此 更 好 的 选 择 是 将 基 类 的 数 据 成 员 声 明 为 private -13-

20.4.5 使 用 private 数 据 的 CommissionEmployee BasePlusCommissionEmployee 继 承 结 构 CommissionEmployee # string firstname; # string lastname; # string socialsecuritynumber; # double grosssales; # double commissionrate; + CommissionEmployee(const string &, const string &, double, double) + void setfirstname(const string &); + string getfirstname() const; CommissionEmployee - string firstname; - string lastname; - string socialsecuritynumber; - double grosssales; - double commissionrate; + CommissionEmployee(const string &, const string &, double, double) + void setfirstname(const string &); + string getfirstname() const; 更 好 的 选 择 是 将 基 类 的 数 据 成 员 声 明 为 private, 通 过 基 类 的 公 共 接 口 函 数 对 这 些 数 据 成 员 进 行 访 问 -14-

Lecture 17 Chapter 20. Object-Oriented Programming: Inheritance 20.1 Introduction 20.2 Base Classes and Derived Classes 20.3 protected Members 20.4 Relationship between Base Classes and Derived Classes 20.5 Constructors and Destructors in Derived Classes 20.6 public, protected and private Inheritance 20.7 Software Engineering with Inheritance -15-

20.5 Constructors and Destructors in Derived Classes 基 类 的 构 造 函 数 和 析 构 函 数 不 能 被 继 承 派 生 类 的 构 造 函 数 如 果 派 生 类 没 有 新 增 数 据 成 员 系 统 缺 省 会 调 用 基 类 的 构 造 函 数 和 析 构 函 数 来 处 理 如 果 派 生 类 有 新 增 的 数 据 成 员 新 增 成 员 的 初 始 化 需 要 由 派 生 类 的 构 造 函 数 完 成 原 基 类 成 员 的 初 始 化 通 过 调 用 基 类 的 构 造 函 数 完 成 注 意 : 对 派 生 类 中 新 增 成 员 对 象 的 初 始 化, 调 用 顺 序 按 照 他 们 在 类 中 声 明 的 顺 序 派 生 类 的 析 构 函 数 做 好 新 增 的 数 据 成 员 的 清 理 工 作, 系 统 会 自 动 调 用 原 基 类 的 析 构 函 数 清 理 原 基 类 成 员 -16-

20.6 public, protected and private Inheritance C++ 中 类 的 继 承 方 式 public: 公 有 继 承 基 类 的 公 有 成 员 和 保 护 成 员 的 访 问 属 性 不 变 基 类 的 私 有 成 员 不 可 直 接 访 问 protected: 保 护 继 承 基 类 的 公 有 成 员 和 保 护 成 员 都 以 保 护 成 员 身 份 在 派 生 类 基 类 的 私 有 成 员 不 可 直 接 访 问 private: 私 有 继 承 基 类 的 公 有 成 员 和 保 护 成 员 都 以 私 有 成 员 身 份 在 派 生 类 基 类 的 私 有 成 员 不 可 直 接 访 问 在 实 际 中 建 议 : 做 好 基 类 的 成 员 访 问 的 限 定, 通 过 公 有 继 承 来 派 生 新 的 类 -17-

继 承 的 案 例 : 学 生 研 究 生 基 类 是 本 科 生, 派 生 类 是 研 究 生 派 生 类 吸 收 已 有 的 基 类 的 成 员 构 造 函 数 析 构 函 数 除 外 派 生 类 改 造 基 类 的 成 员 声 明 同 名 的 成 员 后, 隐 藏 了 原 基 类 的 成 员 派 生 类 添 加 新 的 成 员 Student 学 生 Graduate 研 究 生 Student + int id; + string name; + float score; - char gender; + Student() + display() Graduate + int id; + string name; + float score; - char gender; - float pay; + Graduate() + display() 吸 收 已 有 的 基 类 成 员 添 加 新 的 成 员 改 造 基 类 的 成 员 -18-

Class of student : student.h 公 共 的 成 员, 可 以 被 类 以 外 直 接 访 问 保 护 的 成 员, 可 以 被 该 类 的 派 生 类 的 成 员 或 者 友 元 访 问 私 有 的 成 员, 只 能 通 过 友 元 或 者 公 共 接 口 来 访 问 -19-

Class of student : studend.cpp -20-

Class of graduate: graduate.h 表 示 继 承 Student 类 的 所 有 公 共 属 性 派 生 类 可 以 创 建 新 的 数 据 成 员 新 的 成 员 函 数 改 写 基 类 的 成 员 函 数 基 类 的 其 它 数 据 成 员 和 成 员 函 数 都 自 动 的 可 以 被 派 生 类 访 问 -21-

Class of graduate: graduate.cpp 派 生 类 访 问 基 类 的 成 员 函 数 需 要 用 域 说 明 符 :: -22-

Using inheritance 基 类 的 私 有 数 据 实 际 上 也 被 继 承 了, 但 是 不 允 许 派 生 类 直 接 访 问 -23-

Advanced programming (1) Default arguments in constructor Calling parent constructor in child class 派 生 类 不 必 使 用 基 类 的 全 部 数 据 成 员 -24-

Advanced programming (2) Visiting protected / private data members of parent class 派 生 类 不 能 访 问 基 类 的 私 有 数 据 成 员 派 生 类 可 以 通 过 访 问 基 类 的 公 共 成 员 函 数 来 间 接 获 取 私 有 数 据 成 员 的 值 -25-

Lecture 17 Chapter 20. Object-Oriented Programming: Inheritance 20.1 Introduction 20.2 Base Classes and Derived Classes 20.3 protected Members 20.4 Relationship between Base Classes and Derived Classes 20.5 Constructors and Destructors in Derived Classes 20.6 public, protected and private Inheritance 20.7 Software Engineering with Inheritance -26-

面 向 对 象 的 软 件 开 发 面 向 对 象 的 软 件 开 发 方 法 从 分 析 问 题 模 型 开 始, 识 别 出 对 象 对 对 象 的 特 征 进 行 抽 象, 获 得 类 最 后 用 程 序 语 言 去 描 述 他 们 的 过 程 程 序 更 加 关 心 对 象 与 对 象 之 间 的 关 系 面 向 过 程 的 开 发 面 向 对 象 的 开 发 如 何 编 码 实 现 过 程 如 何 分 析 对 象 关 系 以 功 能 实 现 为 中 心 以 数 据 操 作 为 中 心 -27-

对 象 与 对 象 的 关 系 对 象 之 间 有 两 种 关 系 : 复 合, 继 承 对 象 的 复 合 对 象 A 包 含 对 象 B, 拥 有,has-a 对 象 的 继 承 对 象 A 是 对 象 B 的 一 个 特 例, 是,is-a 类 的 设 计 如 果 新 的 类 中 有 成 员 是 已 有 的 类 的 对 象, 使 用 复 合 方 式 比 较 合 适 如 果 新 的 类 可 以 视 为 已 有 类 的 子 类 或 者 特 例, 使 用 继 承 比 较 合 适 -28-

面 向 对 象 的 分 析 案 例 点 线 段 多 边 形 线 段 包 括 两 个 顶 点 ; 线 段 的 运 算 是 计 算 线 段 的 长 度 多 边 形 包 括 多 个 线 段 ; 多 边 形 的 运 算 是 获 得 多 边 形 的 周 长 三 角 形 三 角 形 包 括 三 个 线 段, 是 多 边 形 的 特 例, 三 角 形 的 典 型 运 算 是 获 得 其 面 积 -29-

面 向 对 象 的 分 析 案 例 Point 点 - double x; - double y; + Point(double,double); + void setpoint(double, double); + double getx(); + double gety(); 1 1 -startpoint 1 - endpoint 1 Line 线 段 - Point startpoint; - Point endpoint; + Line(point, point); + void setline(point, point); + Point getstart (); + Point getend(); + double getlength(); 思 考 : 这 两 个 类 是 什 么 关 系? 在 Line 类 中 是 否 需 要 设 置 数 据 成 员 length? 在 Line 类 中 是 否 需 要 设 置 输 入 四 个 坐 标 值 的 setline 函 数? -30-

面 向 对 象 的 分 析 案 例 Line 线 段 - borders Polygon 多 边 形 - Point startpoint; - Point endpoint; 1 1.* - Line borders[]; - int number; + Line(point, point); + void setline(point, point); + Point getstart(); + Point getend(); + double getlength(); + Polygon(Point[], int); + void setpolygon(point[], int); + int getnumber(); + double getperimeter(); #define MAX_BORDER_NUM 6 思 考 : 这 两 个 类 是 什 么 关 系? 在 Polygon 类 中 需 要 设 置 Point 类 型 的 数 据 成 员? 在 Polygon 类 能 否 支 持 动 态 数 量 的 边 长 数 组? 在 Polygon 类 中 能 否 加 上 对 形 状 的 判 别? -31-

面 向 对 象 的 分 析 案 例 Polygon 多 边 形 - Line borders[]; - int number; + Polygon(Point[], int); + void setpolygon(point[], int); + int getnumber(); + double getperimeter(); Triangle 三 角 形 + double getarea(); 思 考 : 这 两 个 类 是 什 么 关 系? 在 Trianlge 类 中 还 需 要 其 他 的 数 据 成 员 吗? 在 Trianlge 类 中 能 否 加 上 对 形 状 的 判 别? -32-

Experiment 实 现 前 述 提 到 的 几 个 类, 分 别 实 现 其 头 文 件 h 文 件 和 源 文 件 cpp 文 件, 利 用 继 承 简 化 类 的 实 现, 测 试 你 的 类 是 否 有 效 -33-

谢 谢! 刘 威 副 教 授 互 联 网 技 术 与 工 程 研 究 中 心 华 中 科 技 大 学 电 子 与 信 息 工 程 系 Email: liuwei@hust.edu.cn 网 址 :http://itec.hust.edu.cn