依赖与关联 依赖(Dependency ) : 含义:是类与类之间的连接,表示一个类依赖于另外一个类的定义;依赖关系仅仅描述了类与类之间的一种使用与被使用的关系; 体现:在Java和C++中体现为局部变量、方法/函数的参数或者是对静态方法的调用; 举例:人依赖于水和空气;汽车依赖汽油; UML图表示的依赖关系: 依赖: 比如说我要过河,没有桥怎么办,我就去借来一条小船渡过去。我与小船的关系仅仅是使用(借用)的关系。 表现在代码上,为依赖的类的某个方法以被依赖的类作为其参数。或者是class A 的某个方法创造了 class B 的 实例抑或对class B的静态方法的调用。如果A依赖于B,那意味着B的变化可能要求A也发生变化; \ Boat: [java] static class Boat{ public static void row(){ System.out.println("开动"); } } static class Boat{ public static void row(){ System.out.println("开动"); } }Person: [java] class Person{ public void crossRiver(Boat boat){ boat.row() ; } public void fishing(){ Boat boat = new Boat() ; boat.row() ; class Person{ public void crossRiver(Boat boat){ boat.row() ; } public void fishing(){ Boat boat = new Boat() ; boat.row() ; public void patrol(){ Boat.row() ; } } } public void patrol(){ Boat.row() ; } } 关联(Association): 含义:类与类之间的连结,关联关系使一个类知道另外一个类的属性和方法;通常含有“知道”,“了解”的含义。关联可以是双向的,也可以是单向的 体现:在Java和C++中,关联关系是通过成员变量来实现的; 举例:“渔民”需要知道“天气”情况才能够出海 UML图表示的关联关系: 关联: 有名的例子:客户和订单的关系以及公司和员工的关系,都是关联关系。还有就是我和我的单车的例子,他们都 是一种“拥有”的关系。表现在代码上,就是一个类包含另一个类的实例,通常表现为被关联类以类属性的形式 出现在关联类的类定义中,也可以表现为关联类引用了一个类型为被关联类的全局变量。关联可以使单向的, 也可以使双向的。 \ Computer: [java] class Computer{ public void develop(){ System.out.println("Develop "); } } class Computer{ public void develop(){ System.out.println("Develop "); } } Person: [java] class Person{ private Computer computer ; public Person(Computer computer){ this.computer = computer ; } public void work(){ computer.develop() ; System.out.println("work"); } } } 依赖和关联的区别在于依赖是使用,关联是拥有。 ------------------------------------------------------------------------------------------------------------- 聚合(aggregation): 含义:是关联关系的一种,是一种强关联关系(has-a);聚合关系是整体和个体/部分之间的关系;关联关系的两 个类处于同一个层次上,而聚合关系的两个类处于不同的层次上,一个是整体,一个是个体/部分;在聚合关系中, 代表个体/部分的对象有可能会被多个代表整体的对象所共享; 体现:C++中,聚合关系通过将被聚合者的(数组)指针作为内部成员来实现的; 图示:空心菱形 + 实线 + 箭头;箭头指向被聚合的类,也就是说,箭头指向个体/部分; 举例:班级和学生,当班级删除之后,学生还是存在,学生还可能被培训机构引用 UML图表示的聚合关系: \ Classes: [java] class Classes{ private Student student ; public Classes(Student student){ this.student = student ; } } } Student : [java] class Student{ } class Student{ } 组合(Composition): 含义:它也是关联关系的一种(is-a),但它是比聚合关系更强的关系.组合关系要求聚合关系中代表整体的对象 要负责代表个体/部分的对象的整个生命周期;组合关系不能共享;在组合关系中,如果代表整体的对象被销毁或 破坏,那么代表个体/部分的对象也一定会被销毁或破坏,而聚在合关系中,代表个体/部分的对象则有可能被多个 代表整体的对象所共享,而不一定会随着某个代表整体的对象被销毁或破坏而被销毁或破坏; 体现:在Java和C++中,组合关系是通过成员变量来实现的; 图示:实心菱形 + 实线 + 箭头;箭头指向代表个体/部分的对象,也就是被合成/组合的类的对象; 举例:一个人由头、四肢、等各种器官组成,因为人与这些器官具有相同的生命周期,人死了,这些器官也挂 了;房子和房间的关系,当房子没有了,房间同样不可能单独存在。 UML图表示的组合关系: \ Room: [java] class Room{ public Room createRoom(){ System.out.println("创建房间"); return new Room() ; } } class House{ private Room room ; public House(){ room = new Room() ; } public void createHouse(){ room.createRoom() ; } } } 聚合和组合的区别:聚合是个体离开了整体,依然可以存在; 组合是个体和整体不可以分开,个体不能离开整体单独存在。 依赖,关联 和聚合,组合的区别: 依赖,关联 : 类之间的关系是在同一层次上; 聚合,组合: 类之间的关系表现为整体和部分。
相关推荐
UML 中依赖泛化关联实现聚合组合的 C# 实现 UML 中类图是软件设计中最重要的工具之一,它能够帮助我们更好地设计和管理软件系统。今天,我们将讨论 UML 中的依赖泛化关联实现聚合组合的 C# 实现。 首先,让我们...
本文将深入探讨面向对象中的四种基本关系:依赖、关联、聚合和组合,以及它们在实际应用中的含义和用例。 ### 一、依赖(Dependency) 依赖是最弱的一种关系,表示一个类依赖于另一个类的接口或实现,但这种依赖通常...
### UML学习之依赖、关联、聚合、组合与继承 #### 一、泛化(Generalization) **概念:** 泛化表示的是类与类之间的继承关系、接口与接口之间的继承关系,或者是类对接口的实现关系。在UML中,泛化关系通常用一个带...
UML关系(泛化,实现,依赖,关联(聚合,组合))
UML 中继承、实现、依赖、关联、聚合、组合的联系与区别 UML 中的继承关系是指一个类继承另外一个类的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系。在 Java 中此类关系通过...
本篇文章将深入探讨UML类图中的五种主要关系:关联、组合、聚合、依赖和泛化,以及它们在实际编程中的应用。 **关联** 是类之间的一种结构关系,表示类之间的连接或相互作用。它通常用一条实线表示,可以是单向或...
### UML中依赖、泛化、关联、聚合与组合的Java实现详解 #### UML基础知识概览 统一建模语言(UML)作为一种图形化的标准化建模语言,为软件开发提供了强大的可视化工具,帮助开发者理解、设计和记录软件系统。UML...
UML类关系-依赖、关联、聚合和组合 UML(Unified Modeling Language)是软件设计领域中的一种标准化建模语言,用于描述软件系统的结构、行为和架构。UML类关系是UML中的一种基本概念,描述了类之间的关系。今天,...
在UML中,有六种主要的类间关系:继承、实现、依赖、关联、聚合和组合。理解这些关系对于设计高质量的软件架构至关重要。 1. **继承**: 继承是类与类之间的一种层次结构关系,表示一个类(子类)可以从另一个类...
本文将深入探讨UML类关系中的四种关键概念:依赖、关联、聚合和组合,以及它们在软件设计中的应用。 1. 依赖(Dependency) 依赖是UML中最弱的一种关系,表示一个类(或对象)的实现或行为需要另一个类(或对象)的...
几种类间关系:继承、实现、依赖、关联、聚合、组合。可做为开发设计时速查手册。
在这篇博客“#0x003B UML类图之关联、聚合、组合、依赖”中,作者探讨了类图中的四种主要关系:关联、聚合、组合和依赖,这些都是理解面向对象设计的关键概念。 关联是UML类图中最基本的关系,表示两个或多个类之间...
UML 类图关系大全中有多种关系,包括泛化、关联、依赖、聚合、组合等。 1. 关联关系 关联关系是类图中最基本的关系类型。它描述了类之间的相互关系,可以是单向的,也可以是双向的。双向关联关系表示两个类之间的...
UML类图关系泛化、继承、实现、依赖、关联、聚合、组合 UML类图关系是Unified Modeling Language(统一建模语言)的核心概念之一,用于描述系统中的对象之间的关系。本文将对UML类图关系中的泛化、继承、实现、依赖...
Java依赖、关联、聚合、组合之间的区别详解 在 Java 编程中,了解依赖、关联、聚合、组合之间的区别是非常重要的。这些概念都是 Java 面向对象编程的基础知识,正确理解它们可以帮助开发者设计出更加灵活、可维护的...
### 关联、聚合(Aggregation)以及组合(Composition)的区别 在面向对象设计中,类之间的关系是非常重要的概念。这不仅有助于理解系统架构,还能帮助开发者更好地组织代码。本篇文章将详细探讨关联、聚合...
本文将详细探讨UML中的一些关键概念,包括依赖、泛化、关联、聚合、组合以及实现,并结合C#语言给出具体实现示例。 1. 泛化(Generalization): 泛化关系在UML中代表了继承,它表示一个类(子类)继承自另一个类...
本文将深入探讨UML中的五个关键关系:继承、实现、依赖、关联和聚合,以及它们在软件设计中的作用。 1. **继承(Inheritance)**: 继承是面向对象编程的核心概念之一,它允许一个类(子类或派生类)从另一个类...
UML类图关系(泛化、继承、实现、依赖、关联、聚合、组合).doc
在UML(统一建模语言)中,有几种关键的关系类型用于描述系统中类与类之间的关系,包括继承、聚合、泛化和依赖。这些关系是面向对象设计的基础,帮助我们理解不同对象如何共享特性、组合成更复杂的结构以及相互作用...