`

概念讲的很清楚 继承 依赖 聚合

    博客分类:
  • UML
阅读更多

 

转自:http://www.iteye.com/topic/632059

 

 

今天看到一篇好文,觉得还不错,褪去的记忆被唤醒:http://www.alisdn.com/wordpress/?p=1135

继承

指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系;在Java中此类关系通过关键字extends明确标识,在设计时一般没有争议性;


实现

指的是一个class类实现interface接口(可以是多个)的功能;实现是类与接口之间最常见的关系;在Java中此类关系通过关键字 implements明确标识,在设计时一般没有争议性;


依赖

可以简单的理解,就是一个类A使用到了另一个类B,而这种使用关系是具有偶然性的、、临时性的、非常弱的,但是B类的变化会影响到A;比如某人要过河,需要借用一条船,此时人与船之间的关系就是依赖;表现在代码层面,为类B作为参数被类A在某个method方法中使用;


关联

他体现的是两个类、或者类与接口之间语义级别的一种强依赖关系,比如我和我的朋友;这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的,而且双方的关系一般是平等的、关联可以是单向、双向的;表现在代码层面,为被关联类B以类属性的形式出现在关联类A中,也可能是关联类A引用了一个类型为被关联类B的全局变量;


聚合

聚合是关联关系的一种特例,他体现的是整体与部分、拥有的关系,即has-a的关系,此时整体与部分之间是可分离的,他们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享;比如计算机与CPU、公司与员工的关系等;表现在代码层面,和关联关系是一致的,只能从语义级别来区分;


组合

组合也是关联关系的一种特例,他体现的是一种contains-a的关系,这种关系比聚合更强,也称为强聚合;他同样体现整体与部分间的关系,但此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束;比如你和你的大脑;表现在代码层面,和关联关系是一致的,只能从语义级别来区分;


 

对于继承、实现这两种关系没多少疑问,他们体现的是一种类与类、或者类与接口间的纵向关系;其他的四者关系则体现的是类与类、或者类与接口间的引用、横向关系,是比较难区分的,有很多事物间的关系要想准备定位是很难的,前面也提到,这几种关系都是语义级别的,所以从代码层面并不能完全区分各种关系;但总的来说,后几种关系所表现的强弱程度依次为:组合>聚合>关联>依赖

分享到:
评论

相关推荐

    Maven实战最清楚版

    ### Maven实战最清楚版知识点概览 #### 1. Maven简介 - **1.1 何为Maven** - **1.1.1 何为构建**:构建是指将源代码转换成可执行文件或者可部署包的过程,通常包括编译、测试、打包等步骤。 - **1.1.2 Maven是...

    UML-看懂UML类图和时序图.pdf

    4. 组合关系(Composition):这是聚合关系的强化形式,表示强依赖的整体与部分关系,用带实心菱形箭头的实线表示。如公司由多个部门组成,若公司解散,部门也将随之消失。 5. 关联关系(Association):用直线表示...

    IntelliJ IDEA 构建maven多模块工程项目(详细多图)

    本文主要介绍了 IntelliJ IDEA 构建 Maven 多模块工程项目的详细步骤和概念,希望能够帮助一些不清楚的同学一起学习,一起进步。在实际开发中,使用 IntelliJ IDEA 构建 Maven 多模块工程项目可以提高开发效率,减少...

    uml期末考试题A卷及答案[001].pdf

    1. 关系分别为:(1)依赖关系,(2)关联关系,(3)聚合关系,(4)泛化关系。 2. 应填入:F类图,A状态图,C序列图,E协作图,C序列图,E协作图。 3. 应填入:B类图,D部署图,A组件图。 ### 四、简答题 1. 类A、B和C的...

    UML用户指南(第2版)第二部分

    - **组合**: 聚合的一种特例,表示更紧密的整体与部分关系,部分的存在依赖于整体的存在。 - **泛化**: 表示继承关系,即一个类(子类)继承另一个类(父类)的属性和行为。 - **依赖**: 表示一个类使用了另一个类的...

    uml考试资料000

    3. 类图关系:在类图中,聚合(Aggregation)表达了整体与部分的关系,表示一个对象包含其他对象,而泛化(Generalization)代表继承关系,实现(Implementation)则表示接口或类之间的合同关系,依赖(Dependency)...

    Java六大关键是什么你知道吗

    随着软件工程理论的发展,人们越来越意识到继承的局限性,并开始倾向于使用聚合来替代继承。接口成为了Java编程中的核心概念之一,它是实现软件扩展性和抽象描述的关键工具。在实际应用中,大部分开发工作都是基于...

    面向对象程序设计的61条经验(不看后悔)

    面向对象编程的核心概念包括类、对象、继承、封装、多态等。下面将根据提供的部分经验和知识点进行详细解析。 ### 面向对象程序设计的61条经验(不看后悔) #### (1)避免过早优化 在设计阶段,应该关注于清晰性...

    用好UML

    - **依赖关系**:清楚地表达出类之间的依赖关系,有助于减少耦合度。 **3.3 如何画好类图** - **遵循原则**:在绘制类图时,应遵循单一职责原则、开放封闭原则等设计原则。 - **关注核心**:突出显示系统的核心类...

    UML for Java Programmers中文版

    - **继承**:一种类可以从另一个类继承属性和行为的机制。 - **聚合**:表示整体与部分的关系,但部分可以在不同的整体中重复出现。 - **组合**:类似于聚合,但是部分与整体的生存周期绑定在一起,当整体不存在时,...

    java设计 原则61条

    第23页强调了类之间关系的重要性,尤其是在定义继承关系时,必须清楚地认识到子类与父类之间的关系,以避免出现不必要的耦合。 **原则12:统一异常处理策略** 在第30页提到,整个系统应当采用一致的异常处理机制,...

    设计模式精解-GoF23种设计模式解析

    **应用场景**:当一个对象结构包含很多类对象,特别是当这些类很少改变但经常需要在此结构上定义新的操作时。 #### 3.9 Chain of Responsibility模式 **定义**:使多个对象都有机会处理请求,从而避免请求的发送者...

    C++ 设计模式

    **缺点**:客户端必须了解所有的策略类,并自行决定使用哪一个策略类,即客户端必须清楚各个策略类的区别,以便适时选择恰当的策略类。 ##### 3.3 State模式 State模式允许一个对象在其内部状态改变时改变它的行为...

    各种UML图图例.pdf

    图5的类图示例可以帮助我们理解不同类之间的继承、关联和聚合关系,这对于软件设计阶段的概念模型构建至关重要。通过类图,开发者可以清楚地定义出每个类的属性和方法,以及它们与其他类的关系,从而确保代码的一致...

    软件工程复习提纲

    2. **类的关系**:面向对象设计中的类之间常见的关系包括关联、聚合、组合、继承、依赖等。每种关系具有特定的含义和应用场景。 #### 第13章 软件项目管理 1. **软件项目管理**:软件项目管理涉及的主要工作包括...

Global site tag (gtag.js) - Google Analytics