设计模式概述ppt课件.ppt

上传人:资****亨 文档编号:124715700 上传时间:2020-03-13 格式:PPT 页数:47 大小:3.89MB
返回 下载 相关 举报
设计模式概述ppt课件.ppt_第1页
第1页 / 共47页
设计模式概述ppt课件.ppt_第2页
第2页 / 共47页
设计模式概述ppt课件.ppt_第3页
第3页 / 共47页
设计模式概述ppt课件.ppt_第4页
第4页 / 共47页
设计模式概述ppt课件.ppt_第5页
第5页 / 共47页
点击查看更多>>
资源描述

《设计模式概述ppt课件.ppt》由会员分享,可在线阅读,更多相关《设计模式概述ppt课件.ppt(47页珍藏版)》请在金锄头文库上搜索。

1、第1章 设计模式概述 1 学习设计模式前的相关知识回顾 继承 封装 多态 2 继承的概述 多个类中存在相同属性和行为时 将这些内容抽取 到单独一个类中 那么多个类无需再定义这些属性 和行为 只要继承那个类即可 多个类可以称为子类 单独这个类称为父类或者超 类 子类可以直接访问父类中的非私有的属性和行为 通过 extends 关键字让类与类之间产生继承关系 class SubDemo extends Demo 继承的出现提高了代码的复用性 继承的出现让类与类之间产生了关系 提供了多态 的前提 3 继承的特点 Java只支持单继承 不支持多继承 一个类只能有一个父类 不可以有多个父类 class

2、SubDemo extends Demo ok class SubDemo extends Demo1 Demo2 error Java支持多层继承 继承体系 class A class B extends A class C extends B 定义继承需要注意 不要仅为了获取其他类中某个功能而去继承 类与类之间要有所属 is a 关系 xx1是xx2的一种 4 super关键字 super和this的用法相像 this代表本类对象的引用 super代表父类的内存空间的标识 当子父类出现同名成员时 可以用super进 行区分 子类要调用父类构造函数时 可以使用 super语句 5 函数覆盖

3、Override 子类中出现与父类一模一样的方法时 会出现覆盖操作 也称为 重写或者复写 父类中的私有方法不可以被覆盖 在子类覆盖方法中 继续使用被覆盖的方法可以通过super 函数 名获取 覆盖注意事项 覆盖时 子类方法权限一定要大于等于父类方法权限 静态只能覆盖静态 覆盖的应用 当子类需要父类的功能 而功能主体子类有自己特有 内容时 可以复写父类中的方法 这样 既沿袭了父 类的功能 又定义了子类特有的内容 6 子类的实例化过程 子类中所有的构造函数默认都会访问父类中空 参数的构造函数 因为每一个构造函数的第一行都有一条默认的 语句super 子类会具备父类中的数据 所以要先明确父类 是如何

4、对这些数据初始化的 当父类中没有空参数的构造函数时 子类的构 造函数必须通过this或者super语句指定要访问 的构造函数 7 final关键字 final可以修饰类 方法 变量 final修饰的类不可以被继承 final修饰的方法不可以被覆盖 final修饰的变量是一个常量 只能被 赋值一次 8 抽象类 1 抽象类概述 2 抽象类的特点 3 抽象类举例代码讲解 4 抽象类相关问题 9 抽象类概述 抽象定义 抽象就是从多个事物中将共性的 本质的内容抽取出来 例如 狼和狗共性都是犬科 犬科就是抽象出来的概念 抽象类 Java中可以定义没有方法体的方法 该方法的具体实现由 子类完成 该方法称为抽

5、象方法 包含抽象方法的类就 是抽象类 抽象方法的由来 多个对象都具备相同的功能 但是功能具体内容有所不 同 那么在抽取过程中 只抽取了功能定义 并未抽取 功能主体 那么只有功能声明 没有功能主体的方法称 为抽象方法 例如 狼和狗都有吼叫的方法 可是吼叫内容是不一样 的 所以抽象出来的犬科虽然有吼叫功能 但是并不明 确吼叫的细节 10 抽象类的特点 抽象类和抽象方法必须用abstract关键字来修饰 抽象方法只有方法声明 没有方法体 定义在抽象类中 格式 修饰符 abstract 返回值类型 函数名 参数 列表 抽象类不可以被实例化 也就是不可以用new创建对象 原因如 下 抽象类是具体事物抽取

6、出来的 本身是不具体的 没 有对应的实例 例如 犬科是一个抽象的概念 真正 存在的是狼和狗 而且抽象类即使创建了对象 调用抽象方法也没有意 义 抽象类通过其子类实例化 而子类需要覆盖掉抽象类中所有的抽 象方法后才可以创建对象 否则该子类也是抽象类 11 抽象类举例代码讲解 雇员示例 需求 公司中程序员有姓名 工号 薪水 工 作内容 项目经理除了有姓名 工号 薪水 还有奖金 工作内容 对给出需求进行数据建模 12 抽象类相关问题 抽象类中是否有构造函数 抽象关键字abstract不可以和哪些关 键字共存 抽象类中可不可以没有抽象方法 抽象类和一般类的区别 抽象类一定是一个父类么 13 接口 格式

7、 interface 接口名 接口中的成员修饰符是固定的 成员常量 public static final 成员函数 public abstract 接口中的成员都是public的 接口的出现将 多继承 通过另一种形式体现出 来 即 多实现 14 接口的特点 接口是对外暴露的规则 接口是程序的功能扩展 接口的出现降低耦合性 接口可以用来多实现 类与接口之间是实现关系 而且类可以 继承一个类的同时实现多个接口 接口与接口之间可以有继承关系 15 接口与抽象类 共 性 都是不断抽取出来的抽象的概念 区别 1 抽象类体现继承关系 一个类只能单继承 接口体现实现关系 一个类可以多实现 区别 2 抽象类

8、是继承 是 is a 关系 接口是实现 是 like a 关系 区别 3 抽象类中可以定义非抽象方法 供子类直接使用 接口的方法都是抽象 接口中的成员都有固定修饰 符 16 多态 定义 某一类事物的多种存在形态 例 动物中猫 狗 猫这个对象对应的类型是猫类型 猫 x new 猫 同时猫也是动物中的一种 也可以把猫称为动 物 动物 y new 猫 动物是猫和狗具体事物中抽取出来的父类型 父类型引用指向了子类对象 17 多态 程序中体现 父类或者接口的引用指向或者接收自己的子类 对象 好处和作用 多态的存在提高了程序的扩展性和后期可维护 性 前提 需要存在继承或者实现关系 要有覆盖操作 18 多态

9、的特点 成员函数 编译时 要查看引用变量所属的类中是否有所 调用的成员 在运行时 要查看对象所属的类中是否有所调 用的成员 成员变量 只看引用变量所属的类 19 本章教学内容 设计模式的诞生与发展 设计模式的定义与分类 GoF设计模式简介 设计模式的优点 设计模式的相关资源 20 设计模式的诞生与发展 模式的诞生与定义 模式起源于建筑业而非软件业 模式 Pattern 之父 美国加利佛尼亚大学环境结构中心研究所所 长Christopher Alexander博士 A Pattern Language Towns Buildings Construction 253个建筑 和城市规划模式 模式

10、Context 模式可适用的前提条件 Theme或Problem 在特定条件下要解决的目标问题 Solution 对目标问题求解过程中各种物理关系的记述 21 设计模式的诞生与发展 Christopher Alexander 22 设计模式的诞生与发展 w 模式的诞生与定义 Alexander给出了关于模式的经典定义 每个模式都描 述了一个在我们的环境中不断出现的问题 然后描述了 该问题的解决方案的核心 通过这种方式 我们可以无 数次地重用那些已有的解决方案 无需再重复相同的工 作 模式是在特定环境中解决问题的一种方案 23 设计模式的诞生与发展 w 软件模式 1990年 软件工程界开始关注C

11、hristopher Alexander等 在这一住宅 公共建筑与城市规划领域的重大突破 最早将 该模式的思想引入软件工程方法学的是1991 1992年以 四 人组 Gang of Four GoF 分别是Erich Gamma Richard Helm Ralph Johnson和John Vlissides 自称 的四位著名软件工程学者 他们在1994年归纳发表了23种 在软件开发中使用频率较高的设计模式 旨在用模式来统一 沟通面向对象方法在分析 设计和实现间的鸿沟 24 设计模式的诞生与发展 Gang ofGang of FourFour 25 设计模式的诞生与发展 Erich Gamm

12、a 苏黎世大学计算机科学博士 是Eclipse JUnit 等项目主要技术负责人之一 John Vlissides 斯坦福大学计算机科学博士 原IBM研究员 于2005年11月24日因脑瘤 去世 享年44岁 Ralph Johnson 墨尔本大学计算机科学博士 原IBM 研究 员 现在波士顿顾问集团供职 Richard Helm 康奈尔大学计算机科学博士 伊利诺伊大学教授 Gang of FourGang of Four 26 设计模式的诞生与发展 软件模式 软件模式是将模式的一般概念应用于软件开发领域 即软件开发 的总体指导思路或参照样板 软件模式并非仅限于设计模式 还 包括架构模式和代码模

13、式等 实际上 在软件生存期的每一个阶 段都存在着一些被认同的模式 软件模式可以认为是对软件开发这一特定 问题 的 解法 的某种统 一表示 它和Alexander所描述的模式定义完全相同 即软件模式 等于一定条件下的出现的问题以及解法 软件模式的基础结构由4 个部分构成 问题描述 前提条件 环境或约束条件 解法和 效果 27 设计模式的诞生与发展 软件模式 28 设计模式的诞生与发展 软件模式 软件模式与具体的应用领域无关 在模式发现 过程中需要遵循大三律 Rule of Three 即只有 经过三个以上不同类型 或不同领域 的系统 的校验 一个解决方案才能从候选模式升格为 模式 29 设计模式

14、的诞生与发展 设计模式的发展 1987年 Kent Beck和Ward Cunningham借鉴Alexander的模式思想在程序开 发中开始应用一些模式 在OOPSLA会议上发表了他们的成果 1990年 OOPSLA与ECOOP联合举办 Erich Gamma和Richard Helm等人开始 讨论有关模式的话题 Bruce Anderson主持 四人组 正式成立 并开始着 手进行设计模式的分类整理工作 1991 年 OOPSLA Bruce Anderson主持了首次针对设计模式的研讨会 1992 年 OOPSLA Anderson再度主持研讨会 模式已经逐渐成为人们讨 论的话题 注 OO

15、PSLA Object Oriented Programming Systems Languages Applications 面向对象编程 系统 语言和应用大会 编程语言及软件工程国际顶级 会议 2010年改为SPLASH Systems Programming Languages and Applications Software for Humanity 30 设计模式的诞生与发展 设计模式的发展 1993年 Kent Beck 和 Grady Booch 赞助了第一次关于设计模式的会议 这 个设计模式研究组织发展成为著名的Hillside Group研究组 1994 年 由Hillsi

16、de Group发起 在美国伊利诺伊州 Illinois 的Allerton Park召 开了第1届关于面向对象模式的世界性会议 名为PLoP Pattern Languages of Programs 编程语言模式会议 简称PLoP 94 1995年 PLoP 95 仍在伊利诺伊州的Allerton Park举行 四人组 出版了 设计模式 可复用面向对象软件的基础 Design Patterns Elements of Reusable Object Oriented Software 一书 本书成为1995年最抢手的面向对 象书籍 也成为设计模式的经典书籍 31 设计模式的诞生与发展 设计模式的发展 从1995年至今 设计模式在软件开发中得以广 泛应用 在Sun的Java SE Java EE平台和Microsoft 的 net平台设计中就应用了大量的设计模式 诞生了越来越多的与设计模式相关的书籍和网 站 设计模式也作为一门独立的课程或作为软 件体系结构等课程的重要组成部分出现在国内 外研究生和大学教育的课堂上 32 设计模式的定义与分类 设计模式的定义 设计模式 Design P

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号