绪设计模式基础

上传人:san****019 文档编号:71782086 上传时间:2019-01-21 格式:PPT 页数:95 大小:3.74MB
返回 下载 相关 举报
绪设计模式基础_第1页
第1页 / 共95页
绪设计模式基础_第2页
第2页 / 共95页
绪设计模式基础_第3页
第3页 / 共95页
绪设计模式基础_第4页
第4页 / 共95页
绪设计模式基础_第5页
第5页 / 共95页
点击查看更多>>
资源描述

《绪设计模式基础》由会员分享,可在线阅读,更多相关《绪设计模式基础(95页珍藏版)》请在金锄头文库上搜索。

1、软件设计模式,设计模式基础,面向对象基本概念 接口与抽象类 类图中的关系 面向对象中的一些原则,机器语言 助记符语言 汇编语言 面向机器 直接控制机器的运行,面向对象技术及其发展历史,从“软件工程” 的发展史看面向对象技术出现的必然性,面向机器,FORTRAN BASIC 面向过程 描述解题过程,C PASCAL 结构化 程序设计 以控制结构表示程序的物理层次结构,C+ Java 面向对象 程序设计 程序设计过程与人类的认知过程统一,面向过程,结构化 程序设计,面向对象 程序设计,传统方法分析与设计之间的鸿沟,传统方法与面向对象方法的区别,1 将问题划分为不同对象。 2 通过类比发现对象间存在

2、的相似性,从而得到类、子类、父类等。 3 对属于同一个类的对象定义一组数据用以刻画该类对象的整体特征;定义一组“方法”(函数)用以描述能够对该类对象进行的操作(行为)。 4 建立对象间的联系以反映不同对象之间的相互作用。,符合人类认知规律的软件开发过程,对象特征,现实世界的对象: 有自己的状态,如一台空调有自己编号、摆放位置、颜色、尺寸、重量、工作状态 有自己的行为(功能),如空调的开机、关机、制冷、制热、摆风 机器世界的的对象: 对象的状态用属性来维护(变量) 对象的行为用方法来实现(代码),对象与类,对象与类,计算机世界,徐军,徐军(对象),学生(类),创,建,现实世界,概念世界,学生,抽

3、,象,定义类,对应,案例定单系统,公司需求: 成立新的公司时尚服装; 每月发布商品编目,并寄给定户; 客户可以发e-mail 或FAX定货(寄定单); 对于客户的定货要检查存货清单,如缺货,得暂时搁置定单,直到供货商送到货; 公司检查支票和信用卡; 公司将定单下发给仓库,给客户发货; 注意: 同种商品每月价格不一。如果订户使用的是六个月之前的编目,价格采用当前编目价格; 公司接受所有主要的信用卡;,分析对象,系统是由相互作用的对象组成。任何系统需要它的对象做它的工作。 案例对象:定单,服装,客户 在一个问题域中识别对象不是科学而是艺术。对象取决于人的观点(模块化,应用) 从“名词”开始确定系统

4、中的对象。对象可以是: 简单的和复杂的:衬衣,银行 实际的和概念的:银行出纳员,银行帐号,对象的属性和方法,确定对象的属性和方法 对象属性: 客户客户号,客户名,地址 定单定单号,定货条目,顾客 . 对象方法: 让对象做的事情(可以对自己,也可以对其他对象),经常影响对象属性。 客户提交定单 定单打印定单,改变条目,多态(polymorphisn),14,Person类,老师,学员,SayHi(),SayHi(),继承,List,SayHi(),遍历List,循环SayHi(),内容不同,将所有人都存入集合,调用两种类型的SayHi方法,15,扩展的麻烦,for (int i = 0; i p

5、erson.Count; i+) if (personi is Student) (Student)personi).StuSayHi(); else if (personi is Teacher) (Teacher)personi).TeachSayHi(); ,进行判断对象类型,调用相应类的SayHi(),添加多个不同的子类,SayHi都不同增加代码复杂度如何解决?,添加对象后遍历泛型集合,16,巧妙的做法,abstract class Person public abstract void SayHi(); ,for(int i = 0; i person.Count; i+) pers

6、oni.SayHi(); ,这种方式实现了面向对象的多态,修改Person类,添加一个未实现的方法,用关键字修饰,去除子类类型判断,17,生活中的多态,Cut.!,听到这个声音他们会做什么?,剪断头发,切开皮肤,停止表演,不同对象对于同一个方法(Cut)调用的不同行为。,理发师,外科医生,演员,18,什么是多态,指不同对象收到相同消息时,会产生不同行为,Student和Teacher类SayHi的内容不同,同一个类在不同的场合下表现出不同的行为特征,Person,Student,Teacher,Person类,在这两种场合的行为不同,19,抽象类和抽象方法,abstract class Per

7、son public abstract void SayHi(); ,抽象方法,一个没有实现的方法,有抽象方法的类必然是抽象类,抽象类用来列举一个类所需要的行为 抽象类不明确提供具体实现方法 抽象类必须由其子类实现它的抽象方法(除非子类也具有抽象性),abstract 修饰符,抽象类可以具有指向子类对象的对象引用,21,常见错误,抽象类不能被实例化,抽象类不能是密封或静态的,Person person = new Person();,编译错误,抽象类不能用 sealed和static修饰,22,实现抽象方法,使用override实现抽象方法,public override void SayHi

8、() /具体实现内容 ,重写,实现抽象方法,23,Dog : Animal,Cat : Animal,抽象类的应用场合,abstract Animal,抽象类和抽象方法实现多态性 父类提供一系列规定, 约束子类的行为 父类可以提供一些共性的行为,猫咪喵喵叫,狗狗汪汪叫,abstract 叫(),是动物就要会叫,24,练习,利用多态性编写这三种职业听到“cut”时的行为,25,练习,定义一个抽象类,计算各种形状周长、面积以及体积的方法。 定义三个类分别实现三角形、圆形与正方形的相关周长、面积及体积的计算方法。,生活中的接口,电脑主板上的PCI插槽的规范就类似于Java接口,声卡,电视卡,网卡,每

9、种卡的内部结构都不相同,可以把声卡、网卡、显卡都插在PCI插槽上,而不用担心哪个插槽是专门插哪个卡的,主板,接口,如果一个抽象类中的所有方法都是抽象的,就可以将这个类用另外一种方式来定义,也就是接口定义。 接口是抽象方法和常量值的定义的集合。 从本质上讲,接口是一种特殊的抽象类。这种抽象类中包含常量和方法的定义,而没有变量和方法的实现。例如 public interface Runner int ID = 1; void run(); 注意:在接口中,所有的成员都是public访问类型的,而不论是否用public关键字修饰;接口里的变量都是用public static final标识的,所以,

10、接口中定义的变量就是全局静态常量。接口中的方法默认都是public abstract 类型的。,JAVA接口,一个JAVA接口是一些方法特征的集合,但是没有方法的实现。 JAVA中定义的方法在不同的地方被实现,可以具有完全不同的实现。,public interface PCI public void start(); public void stop(); ,这是Java接口,相当于主板上的PCI插槽的规范,class SoundCard implements PCI public void start() System.out.println(“Du du.“); public void s

11、top() System.out.println(“Sound stop!“); ,class NetworkCard implements PCI public void start() System.out.println(“Send.“); public void stop() System.out.println(“Network stop!“); ,声卡、网卡都实现了PCI插槽的规范,但行为完全不同,接口特点,写一个接口,验证以下特点: 1.接口中的成员变量默认都是 public static final 类型的。 2.接口中的方法默认都是 public abstract 类型的。

12、3.接口没有构造方法,不允许创建接口的实例。 4.接口必须通过其他类来实现它的抽象方法。 5.一个类可以实现多个接口。,接口的使用,一个类只能用implements关键字去实现一个接口中的所有方法 class Fish implements Animal public void run() System.out.println(“fish can swim!”); public void breathe() System.out.println(“fish can breathe!”); 我们可以定义一个新的接口,用extends关键字去继承一个已有的接口。注意:只能接口继承接口,类不能继承接

13、口。,Wepull系统,要求: 打印机有多种类型,比如:黑白打印机、彩色打印机等 区域可能配备其中任意一款打印机,负责信息 系统要具备良好的可扩展性与可维护性,print方法 (打印),彩色打印机,黑白打印机,黑白内容,区域/讲师 详细信息,彩色内容,采用面向接口编程的方式实现,以下是三个步骤中的第一步:,抽象出Java接口 1、分析: 黑白、彩色打印机都存在一个共同的方法特征:print 黑白、彩色打印机对print方法有各自不同的实现 2、结论: 抽象出Java接口Printer,在其中定义方法print 3、具体实现:,public interface Printer public vo

14、id print(String content); ,采用面向接口编程的方式实现,以下是三个步骤中的第二步:,public class ColorPrinter implements PrinterFace public void print(String content) System.out.println(“彩色打印:“); System.out.println(content); ,实现Java接口 1、分析: 已经抽象出Java接口PrinterFace,并在其中定义了print方法 黑白、彩色打印机对print方法有各自不同的实现 2、结论: 黑白、彩色打印机都实现PrinterF

15、ace接口,各自实现print方法 3、具体实现:,public class BlackPrinter implements PrinterFace public void print(String content) System.out.println(“黑白打印:“); System.out.println(content); ,采用面向接口编程的方式实现,以下是三个步骤中的第三步:,使用Java接口 1、分析: 主体构架使用接口, 让接口构成系统的骨架 2、结论: 更换实现接口的类就可以更换系统的实现 3、具体实现:,public class WepullArea3 implements Introduceable private PrinterFace printer; /打印机 public void setPrinter(PrinterFace p) this.printer = p; public String detail() return “这里是Wepull区域“; public void print(Introduceable intro) printer.print(intro.detail(); ,public class WepullTest public static void main(String args)

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


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

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