版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目录,1 OO概述,OOA做什么?从问题域中获取所需的类和对象,以及它们之间的关系。如何进行面向对象设计?面向对象编程做到这一点,1 OO概述,老张开车到中国东北。请用面向对象的思想来分析和设计,反映面向对象的三个主要特征。包类(名词):1 OO概述,老张开车去东北。请使用面向对象来分析和设计。包装类(名词):1 OO概述,老张开车去东北。封装创建成员方法。概述OO,老张开车去东北。获取属性并改进成员方法。概述OO,老张开车去东北。包的功能是什么?隐藏信息并减少类之间的耦合。概述OO,老张开车去东北。初始设计,1 OO概述,公共类驱动程序私有字符串驱动程序名称;公共字符串getName()返回
2、驱动名称;公共空驶车。go(新地址(东北);1 OO概述,公共级汽车公共无效去(地址目的地)系统。out.println(一路唱歌,抽烟,去dest . GetName();1 OO概述,公共类地址私有字符串地址名称;公共字符串getName()返回地址名称;公共空集合名称(字符串名称)地址名称=名称;概述OO,老张开车去东北。设计优化:继承和多态性在一定的粒度视图级别上统一处理相同的事情,1 OO概述,公共类驱动程序私有字符串驱动程序名称;公共字符串getName()返回驱动名称;公共无效集合名称(字符串名称)驱动名称=名称;/Vihecle vihecle=新车();公共空车道。go(新地
3、址);1 OO概述,公共抽象类vihecle公共抽象void go(地址dest);公共级汽车延伸至公共空位(地址目的地)系统。唱歌和抽烟一直到目的地。公共类平面扩展虚拟公共空间(地址目的地)系统。out.println(一路开车到目的地. GetName();1 OO概述,公共类地址私有字符串地址名称;公共地址(字符串名称)地址名称=名称;公共字符串getName()返回地址名称;公共空集合名称(字符串名称)地址名称=名称;1 OO概述,公共类客户端公共静态void main(字符串参数)驱动程序d=新驱动程序();片名(老张);/d.drive(新平面();驾驶(新车();有什么缺陷?1
4、OO概述,持续优化:添加无需修改,具有强大的系统可扩展性!重载,2面向接口编程,面试问题: 1。抽象类可以有构造函数,但是接口不能。2.抽象类可以有普通的成员变量,但是普通的方法和接口不能。3.抽象类中抽象方法的访问类型不能是私有访问类型,但是接口的抽象方法只能是公共的。4.抽象类可以包含静态方法。但是接口不能。5.抽象类中静态成员变量的访问类型可以是任意的,但是接口只能是公共(静态)最终类型。6.一个类可以实现多个接口,但只能继承一个抽象类。1抽象类和接口有什么区别?面向接口编程,设计级:抽象类是一个抽象的东西(是一个)。接口是一组行为规范(如)。该接口体现了“如果你是,你必须能够”概念的语
5、法层次:抽象类反映单一继承关系;接口可以实现多重继承。2面向接口编程,2面向接口编程,面试问题(扩展问题): 2.1接口能继承接口吗?2.2接口可以继承抽象类吗?2.3抽象类能实现接口吗?2.4抽象类能继承具体类吗?2.5抽象类中会有静态的主方法吗?抽象类和普通类的唯一区别是不能创建实例对象,并且允许使用抽象方法!2面向接口的编程:在系统分析和体系结构中,下层不直接向其上层提供服务,也就是说,它不直接在上层实例化,而只是通过定义一组接口向上层公开其接口函数,上层只依赖于下层的接口,而不依赖于特定的类。从不同类之间的通信到模块之间的交互,系统级之间的协作关系是系统设计的关键。本质:面向抽象的编程
6、,定义和实现的分离。2.1.1设计模式“四人帮”,g of(“四人帮”,又称“四人帮”,即埃里希伽马、理查德赫尔姆、拉尔夫约翰逊抽象的虚空封闭();3.2接口隔离原则,新要求:要求门具有报警功能。解决方案1:向抽象类(或接口)门添加报警方法。抽象门抽象空开();抽象无效关闭();抽象无效警报();3.2接口隔离原则,问题?与接口隔离原则相反,对于依赖门的模块,报警方法是多余的。修改方案:abstact Door保持打开()和关闭(),报警由子类扩展。分为接口门和接口报警接口。分为非接触门和界面报警。3.2接口隔离原则(ISP),抽象门抽象空开();抽象无效关闭();接口可报警无效报警();类警
7、报门扩展门意味着警报,3.3 LSP和Liskov替换原则定义了所有引用基类的地方必须能够透明地使用它的子类的对象。通俗地说,无论父类出现在哪里,子类肯定会出现。在程序中,基类类型用于尽可能多地定义对象,而子类类型在运行时确定,子类对象用于替换父类对象。概要:子类可以扩展父类的功能,但是不能改变父类的原始功能。3.4倾角和相关性反演原理的定义:1 .高级模块不应该依赖于低级模块,但是两者都应该依赖于抽象(抽象类或接口)。2.抽象(抽象类或接口)不应该依赖于细节(具体实现类)。3.细节(具体的实现类)应该依赖于抽象。通俗地说,它依赖于抽象,而不是实现。概要:面向接口编程,3.5开放封闭原则(OC
8、P),开放封闭原则(开放封闭原则)定义了一个软件实体,比如类,模块和函数,应该对扩展开放,对修改封闭。通俗地说,一个好的系统可以在不修改现有源代码的情况下扩展其功能。摘要是实现开放封闭原则的关键。3.5开-闭原则(OCP),在开-闭原则中,抽象类或接口不允许修改,但具体实现类允许扩展,抽象类和接口在开-闭原则中起着极其重要的作用。模板法模式和观察者模式是开-闭原理的极好例子。3.6复合重用原则(CRP),复合重用原则(CARP):优先使用对象组合(聚合)。用外行的话来说,试着用组合/聚合来代替继承。继承重用:从基类继承的实现是静态的,不能在运行时更改,灵活性不足;销毁封装并将父类的实现细节直接
9、暴露给子类(白盒重用);当父类改变时,子类也应该改变,并且类之间有很高的耦合度。3.6综合复用原则,组合/聚合复用:耦合度相对较低,可以在运行时动态执行。黑盒重用!如果两个类之间的关系是“Has-A”,您应该使用组合或聚合,如果是“Is-A”,您可以使用继承。桥接模式遵循这一原则!3.6复合重用原则(CRP),3.6复合重用原则(CRP),3.7德米特里原则(LOD)和德米特里定律(Demetter Law):这意味着一个对象应该对其他对象了解最少。问题的根源:阶级之间的关系越密切,耦合度越大,当一个阶级发生变化时,对另一个阶级的影响就越大。流行的说法是:不要和陌生人说话。班级应该尽可能少地了
10、解他们需要耦合或调用的班级。2.1.2设计模式概述。设计模式是重复使用的代码设计经验的总结,被大多数人所知,被分类和编目。你为什么提倡设计模式?根本原因是增加代码重用的可维护性。设计模式有助于理解框架结构,成熟的框架通常使用多种设计模式。通过实现面向对象的六个原则,设计模式达到了代码重用和增加可维护性的目的。2.2.1设计模式的基本要素,模式名称问题解决的效果,2.2.2设计模式的分类,设计模式分为三种类型,共23类。创建模式:单一模式、抽象工厂、构建器模式、工厂模式和原型模式。结构模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、共享模式和代理模式。行为模式:模板方法模式、命令模式、
11、迭代器模式、观察者模式、中介模式、记忆模式、解释模式、状态模式、策略模式、责任链模式和访问者模式。2.3.1单例模式的设计模式,单例设计模式的特点:1 .单一案例设计模式只保证一个类的一个实例;2.提供全局访问点来访问类对象实例。单例模式最重要的是确保一个类只有一个实例,并且这个类易于访问。一个全局类使得一个对象是可访问的,但是这样做并不妨碍你实例化多个对象。2.3.1设计模式的单件模式,实现单件设计模式:1 .为了避免其他程序过多地创建这个类的对象,其他程序被禁止首先创建这些对象的实例(构造函数的私有化)。2.为了方便其他程序访问这个类的对象,我们必须在这个类中定制一个对象。从1可以知道,对
12、象是静态的,并提供外部访问方法。2 . 3 . 1 singleton模式和设计模式的singleton模式有两种具体实现:惰性类Singleton私有静态Singleton实例=空;私有Singleton()公共静态Singleton getInstance()如果(实例=空)实例=新Singleton();返回实例;2.3.1 singleton模式的设计模式,饥饿的中国类Singleton私有静态Singleton实例=新Singleton();私有Singleton()公共静态Singleton getInstance()返回实例;2.3.1设计模式的单例模式,预加载中文(摘要)对象,
13、线程安全,在创建类的同时生成对象,调用获取对象实例的方法反应速度快,代码简洁。懒惰型(概要)对象效率很高,因为它们只有在被使用时才被实例化。如果设计不当,线程将是不安全的,并且代码比饥饿型的更复杂,所以当第一次加载类对象时,它们不会很快做出反应。2.3.1多音模式的设计模式,类多音私有静态多音多音1=新多音();私有静态Multiton multi2=新MultiTon();如果(1=值)返回multi1,则私有Singleton()公共静态Singleton getInstance(int值);否则返回multi2/多案例模型:单例模式的推广。2.3.1多音模式的设计模式,类多音私有静态列表列表=新数组列表()
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 乡镇办工作制度
- 世行办工作制度
- 制样间工作制度
- 厨子工作制度
- 二手房工作制度
- 内外勤工作制度
- 企划工作制度
- 介入室工作制度
- 一口清工作制度
- 劳动法工作制度
- 2025年四川省成都市初中学业水平考试中考(会考)地理试卷(真题+答案)
- 2025年焊工(技师)考试练习题库(附答案)
- 冷库节能措施方案(3篇)
- GB/T 2820.5-2025往复式内燃机驱动的交流发电机组第5部分:发电机组
- 学术自由与责任共担:导师制度与研究生培养制的深度探讨
- 高中数学三年教学规划
- 保卫科部门绩效考核标准
- 2025年上海市各区高三二模语文试题汇编《现代文一》含答案
- 公司履约保函管理制度
- 数字化转型战略规划纲要
- 数字化全过程成本管理
评论
0/150
提交评论