`
mmdev
  • 浏览: 12845953 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

面向对象: 类之间关系

 
阅读更多

面向对象编程的基本特征,众所周知:


1. 封装性


2. 继承性


3. 多态性


当然,还会有人提出第四个特性:


4. 抽象性


呵呵,第四个特性包含两个意思,即行为抽象、数据抽象。


行为抽象:体现在类的方法上(包括抽象类以及接口)。


数据抽象:体现在类的属性上(包括抽象类以及接口)。


但是个人认为抽象性应该包含在封装性里面了,但是很多技术大牛说抽象性是一个单独的特性。每个人思考问题的方式不一样,那么认知也会不一样。


好了,不计较这些琐碎的事情了,我们还是言归正传吧。


类之间的关系大致可以分为下面几种,刚才说过分类的方式有很多种,不要过分在意如何分类,把重点放到分的是什么,毕竟这不是考试。


1. 继承Inherit


2. 依赖Dependency


3. 关联Association


4. 聚合Aggregation


5. 组合Composition


6. 实现 Implemention


下面分别针对这几种关系赘述,观点不一致的请明示,互相学习,谢谢!


继承Inherit


有些书籍也叫做泛化(Generalization),不是泛型,要区别,呵呵。


继承很好理解,通俗地讲就是 A 是 B 的一种,表示为 is-a 关系。代码示例:




依赖Dependency


表现形式为 A 依赖与 B,B 很可能就是一个方法的参数、局部变量或者是一个方法等。


二者是一种 use-a 的关系。示例:



类 A (Person)使用类 B (Department),二者构成依赖关系,很明显Department 的 plan() 有所变化,Person 的 makePlan() 也会改变。


关联Association


关联的类之间是一种 has-a 的关系。类与类之间的联接,它使一个类知道另一个类的属性和方法。

关联又可以分为单向关联、双向关联。


单向关联,指的是类 A 知道类 B 的存在,或者类 B 知道类 A 的存在。举个例子吧!


双向关联,指的是类 A 、类 B 均知道对方的存在。



可以看出单向关联易于维护。


聚合Aggregation


聚合与组合其实都是关联关系的一种。但是由于他们很特殊,单独说说呗!


聚合表现一种整体与个体的关系,比如公司与员工之间、篮球队与队员之间的关系。关联强调类之间的平等,而聚会往往是不平等的。


可见篮球队是有篮球和队员等组成的,这是一种聚合关系。


组合Composition


组合也叫做合成,是一种比较强(强于聚合关系)的关联关系,他强调一种整体与部分的关系。比如说人与身体器官的关系。


从这里我们也可以看出类之间除了继承还可以聚合或者组合,因为继承加强了类与类之间的耦合度,所以在做设计的时候可以考虑聚合或者组合。


实现 Implemention


这种关系指的是实现接口,一个类实现某个接口必须实现其提供的抽象方法。


在文章的最后跟大家分享一个话题:这是什么关系?


看实例代码:


在 Person 类中 save 方法用于保存联系人的,其中形参就是 Person 对象,这体现一种什么关系?


有人说是一种反射,你觉得是吗?求解中!







分享到:
评论

相关推荐

    面向对象的思想

    带你理解面向对象的思想(有例子),面向对象的程序设计语言必须有描述对象及其相互之间关系的语言成分。这些程序设计语言可以归纳为以下几类:系统中一切事物皆为对象;对象是属性及其操作的封装体;对象可按其性质...

    面向对象分析与设计习题及部分答案

    什么是面向对象方法?面向对象的基本原则主要有哪些? 面向对象方法是一种运用对象、类、继承、封装、聚合、关联、消息、多态 性等概念来构造系统的软件开发方法

    设计模式:可复用面向对象软件的基础--详细书签版

    实际上,当我评估一个面向对象系统的质量时,所使用的方法之一就是要判断系统的设计者是否强调了对象之间的公共协同关系。在系统开发阶段强调这种机制的优势在于,它能使所生成的系统体系结构更加精巧、简洁和易于...

    Java面向对象基础知识点复习

     继承:继承实际上是存在与面向对象程序中的两个类之间的一种关系。当一个类拥有另一个类的所有数据和操作时,就称这两个类之间具有继承关系,private属性除外。 被继承的类称为父类或者超类,继承了父类的所有数据...

    java学习 面向对象

    面向对象的思想用对象和对象之间的关系表现系统。模块封装和局 部化的特点使面向对象的方法更有利于改善软件质量、理解和维护软件系统。面 向对象的方法和一些过程方法结合,组成完整的开发方法。

    JAVA面向对象详细资料

    4、为了交互对象之间的松耦合设计而努力 54 5、类应该对扩展开放,对修改关闭 54 6、依赖倒置,要依赖抽象,不要依赖具体类 54 36 练习:超市收银 54 37 练习:接口表示一种能力,也可以是一种规范 56 38 策略模式 ...

    面向对象与C++试题.doc

    1、类和对象的关系可表述为:类是对象的 ,而对象则是类的 。 2、在C++中,三种继承方式的说明符号为 、 和 ,如果不加说明,则默认的继承方式为 。 3、如果只想保留公共基类的一个复制,就必须使用关键字 把这个...

    面向对象程序设计(c++)课程设计实验报告

    一.实验目的及要求………………...2. 对各个功能模块分析设计抽象并实现对象类,重点是各类的属性和行为,类之间的关系; 3.在类的设计上,尽量自己设计,并采用继承、多态、重载等概念; 4. 所有数据用文件存储;

    JavaScript 面向对象编程详细讲解文档

    我们将会解释如何模拟继承及其超类与子类之间关系的形式。原型是理解继承概念的关键, 我们将会教你如何建立原型, 如何检测一个对象是否是另外一个对象的原型, 及其 JavaScript 的模型与Java 面向对象编程之间的区别...

    java核心技术:面向对象编程电子版第三卷

    java核心技术:面向对象编程电子版第三卷

    PHP_面向对象教程(强力推荐)

    2.什么是类,什么是对象,类和对象之间的关系 3.什么是面向对象编程呢? 4.如何抽象出一个类? 5.如何实例化对象? 6.如何去使用对象中的成员? 7.特殊的引用“$this”的使用 8.构造方法与析构方法 9.封装性 ...

    《C--面向对象程序设计》习题与上机解答-提交稿-陈维兴

    类和对象之间的关系是抽象和具体的关系。类是多个对象进行综合抽象的结果,一个对象是类的一个实例。 【1.6】 什么是消息? 【解】面向对象程序设计技术必须提供一种机制允许一个对象与另一个对象的交互。这种机制叫...

    论文研究-面向对象技术实现活动网络图及关键路径算法.pdf

    采用面向对象的类表示活动,基于动态数组表示活动网络图及活动之间的逻辑关系,并据此开发了基于面向对象技术实现关键路径算法的代码,进一步从理论上分析了采用面向对象技术的优势。研究表明,相对于传统的处理方式...

    Java面向对象程序设计杨晓燕面向对象基本原则和模式.pptx

    关联关系:空心的菱形+实线箭头 第7页/共30页 Java面向对象程序设计杨晓燕面向对象基本原则和模式全文共30页,当前为第7页。 组合关系:实心的菱形+实线箭头 第8页/共30页 Java面向对象程序设计杨晓燕面向对象基本...

    类与类之间的关系

    类与类之间的关系对于理解面向对象很重要的。包含:聚合,组合,依赖,关联等。

    写给大家看的面向对象编程书(第3版).[美]Matt Weisfeld(带详细书签).pdf

    本书是一部独具特色的面向对象技术著作。书中结合代码示例生动透彻地讲述了面向对象思想的精髓,让读者真正学会以对象方式进行思考。此外,本书还讨论了各种与面向对象概念密切相关的应用主题,包括XML、UML建模语言...

    php面向对象技术

    2.什么是类,什么是对象,类和对象之间的关系 3.什么是面向对象编程呢? 4.如何抽象出一个类? 5.如何实例化对象? 6.如何去使用对象中的成员? 7.特殊的引用“$this”的使用 8.构造方法与析构方法 9.封装性 10.__...

    类与对象-java实验报告

    对平面几何中的各种基本图形使用面向对象的设计方法建模,需要设计的类包括:点、直线、三角形、矩形、正方形、圆形、椭圆;设计这些类的数据域和方法;设计类与类之间的关系;使用这些设计的类进行基本的运算。

    面向对象与UML资料

    面向对象与UML 第一部分 软件开发活动 7 第一章 结构化的分析与设计 8 第一节 模型图 8 业务流程图 8 数据流图 11 功能结构图 12 功能树 13 网络结构图 14 程序流程图 15 第二节 需求分析 15 需求分析的任务 15 需求...

Global site tag (gtag.js) - Google Analytics