类和类之间的关系 类的设计原则.ppt_第1页
类和类之间的关系 类的设计原则.ppt_第2页
类和类之间的关系 类的设计原则.ppt_第3页
类和类之间的关系 类的设计原则.ppt_第4页
类和类之间的关系 类的设计原则.ppt_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、类和类之间的关系,实现,实现指的是一个class类实现interface接口(可以是多个)的功能,实现是类与接口之间最常见的关系。在Java中此类关系通过关键字implements明确标识,,是说子类获得父类的功能的同时,还可以扩展自己的功能。 Java 代码表现为: extends 和 implements,Parent(父类),Child(子类),继承 (Inherit),继承,依赖Dependency 两个相对独立的A和B,当A负责构造B时,A与B形成依赖关系,即A使用B。,Java 代码中的表现为局部变量,方法的参数,以及对静态方法的调用。,Computer,Source,依赖,关联(

2、Association) 两个相对独立的A和B,当A对象持有B对象的时候,形成关联关系。,关联分为两种形式,聚合 (Aggregation) 和组合 (Composition),聚合和组合只有概念上的区别,在Java 中代码实现没有区别。,关联体现的是两个类之间语义级别的一种强依赖关系,比如我和我的朋友,这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的,而且双方的关系一般是平等的。关联可以是单向、双向的。表现在代码层面,为被关联类B以类的属性形式出现在关联类A中,也可能是关联类A引用了一个类型为被关联类B的全局变量。在UML类图设计中,关联关系用由关联类A指向被关

3、联类B的带箭头实线表示,在关联的两端可以标注关联双方的角色和多重性标记。,聚合:指的是整体与部分的关系,如图 1-1 。,SoftwareCompany,IBM,聚合 (Aggregation),Microsoft,Oracle,图 1-1,图 1-2,组合 (Composition) 组合:表示类之间整体和部分的关系,但是组合关系中部分和整体具有统一的生存期,即整体对象不存在,部分对象也将不存在,如图 1-2 。,Computer 电脑,keyboard键盘,Mouse鼠标,显示器,组合也是关联关系的一种特例,它体现的是一种contains-a的关系,这种关系比聚合更强,也称为强聚合。它同样

4、体现整体与部分间的关系,但此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束,,第 7 章,面向对象设计的基本原则,开放关闭原则(OCP) 在软件计划模式中,这种不能修改,但可以扩展的头脑也是最重要的一种计划原则。即软件实体(类、模板、函数等等)应该可以扩展,可是不行修改。 【普通】:计划的时辰,时候思量,只管让这个类是足够好,写好了就不要去修改了,假如新需求来,我们增进一些类就完事了,原本的代码能不动则不动。,二、里氏代换原则(LSP) 1.一个软件实体假如行使的是一个父类的话,那么必然合用于该子类,并且他发觉不出父类工具和子类工具的区别。也就是说,在软件内里,把父类都

5、替代成它的子类,措施的举动没有变革。 【一句话】:子范例必需可以或许替代掉他们的父范例。,三、依靠倒置原则(DIP) 1.高层模块不该该依靠于底层模块。两个都应该依靠抽象。2.抽象不该该依靠于细节,细节依靠于抽象( 【白话】:针对接口编程,不要针对实现编程。,四、接口断绝原则(ISP) 1.行使多个专门的接口比行使单一的总接口总要好。换而言之,从一个客户类的角度来讲:一个类对其它一个类的依靠性该当是成立在最小接口上的。 2过于痴肥的接口是对接口的污染。不该该强制客户依靠于它们不消的要领。,五、合成/聚合复用原则(CARP) 只管行使合成/聚合,只管不要行使类担任。 【聚合】:暗示一种弱的拥有相

6、关,浮现的是A工具可以包括B工具,但B工具不是A工具的一部门。 【合成】:一种强的拥有相关,提现了严格的部门和整体的相关,部门和整体的保留周期同等。,六、迪米特法例(LoD) 起码常识原则 夸大类之间的松耦合。即:假如两个类不必互相直接通讯,那么着两个类就不应当发送直接的彼此浸染。假如个中一个类必要挪用另一个类的某一个要领的话,可以通过圈外人转发这个挪用。,1.1 开-闭原则的定义和优点,定义: 一个软件实体应当对扩展开放,对修改关闭。即在设计一个模块的时候,应当使这个模块可以在不被修改的前提下被扩展。,优点:,a) 通过扩展的已有的软件系统,可以提供新的行为,以满足对软件新的需求,使变化中的

7、的软件有一定的适用性和灵活性。,b) 已有的软件模块,特别是最重要的抽象层模块不能被修改,这就使变化中的软件系统有一定的稳定性和延续性。,c) 这样的系统同时满足了可复用性和可维护性。,1.2 如何实现“开-闭”原则,1、抽象化是面向对象设计的第一个核心本质。,2、在面向对象编程中,通过抽象类及接口,规定了具体类的特征作为抽象层,相对稳定,不需修改, 从而满足“对修改关闭”;而从抽象类导出的具体类可以改变系统的行为,从而满足“对扩展开放”。,3、对实体进行扩展时,不必改变软件源代码或者二进制代码。关键在于抽象。,2. 1 里氏替换原则,定义: 如果对每一个类型为T1的对象O1,都有类型为T2

8、的对象O2,使得以T1定义的所有程序P在所有的对象O1都代换为O2时,程序P的行为没有变化,那么类型T2是类型T1的子类型。,/. SE ai=new SE(); SE joe=new SE(); PM gates=new PM(); List empl=new List(); empl.Add(ai); empl.Add(joe); empl.Add(gates); /.,子类可以替换父类,2. 1 里氏替换原则,定义: 如果对每一个类型为T1的对象O1,都有类型为T2 的对象O2,使得以T1定义的所有程序P在所有的对象O1都代换为O2时,程序P的行为没有变化,那么类型T2是类型T1的子类型。,/. SE ai=ne

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论