10. 类的关系——关联关系

1、类的四种关系

· 关联关系

· 依赖关系

· 继承关系

· 实现关系(本质也是继承关系)

2、关联关系

在关联关系中,没有新的语法和概念,不过是一种思想。

对象和对象之间的连接。在Java中,关联关系的代码表现形式为一个类做为另一个类的属性类型存在。即语义上是“有”的关系:”has-a”。

2.1 按整体和部分分类:

(1)组合——同生共死

(2)聚合——不同生不同死

区别:生命周期不同

例:组合——同生同死

​ 创建整体时部分也同时创建,整体销毁部分也销毁

//组合(同生同死)//人类
public class People {private String name;private String age;private Phone[] phones;public People() {phones = new Phone[3];}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getAge() {return age;}public void setAge(String age) {this.age = age;}public Phone[] getPhones() {return phones;}public void setPhones(Phone[] phones) {this.phones = phones;}@Overridepublic String toString() {return "People [name=" + name + ", age=" + age + ", phones=" + Arrays.toString(phones) + "]";}}//电话类
public class Phone {private String color;private String num;public Phone() {// TODO Auto-generated constructor stub}public String getColor() {return color;}public void setColor(String color) {this.color = color;}public String getNum() {return num;}public void setNum(String num) {this.num = num;}@Overridepublic String toString() {return "Phone [color=" + color + ", num=" + num + "]";}}//测试
public class Client {public static void main(String[] args) {People people = new People();people = null;System.out.println(people.getPhones());}
}

结果:

例:聚合——不同死不同

创建整体时部分可以不创建,整体消亡时部分还存在。

///聚合(不同生不同死)//人类
public class People {private String name;private String age;private Phone[] phones;public People() {// TODO Auto-generated constructor stub}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getAge() {return age;}public void setAge(String age) {this.age = age;}public Phone[] getPhones() {return phones;}public void setPhones(Phone[] phones) {this.phones = phones;}//电话类
public class Phone {private String color;private String num;public Phone() {// TODO Auto-generated constructor stub}public String getColor() {return color;}public void setColor(String color) {this.color = color;}public String getNum() {return num;}public void setNum(String num) {this.num = num;}@Overridepublic String toString() {return "Phone [color=" + color + ", num=" + num + "]";}
}//测试类
public class Client {public Client() {// TODO Auto-generated constructor stub}public static void main(String[] args) {People people = new People();Phone[] phones = new Phone[3];people.setPhones(phones);people = null ; System.out.println(phones);System.out.println(people.getPhones());}
}

结果:

2.2 按方向分类:

(1)单向关联:A类关联B类

(2)双向关联:A关联B,B也关联A

例:单向关联

//类: 电话
public class Phone {// 属性:型号private String type;// 属性:颜色private String color;// 属性:品牌private String brand;// 构造方法public Phone() {}// Getters and Setterspublic String getType() {return type;}public void setType(String type) {this.type = type;}public String getColor() {return color;}public void setColor(String color) {this.color = color;}public String getBrand() {return brand;}public void setBrand(String brand) {this.brand = brand;}}//类:人
public class Person {// 属性:电话private Phone phone;// 构造方法:默认的public Person() {}// Getters and Setterspublic Phone getPhone() {return phone;}public void setPhone(Phone phone) {this.phone = phone;}}

例:双向关联

//类: 电话
public class Phone {// 属性:型号private String type;// 属性:颜色private String color;// 属性:品牌private String brand;// 属性:所有者private Person owner;// 构造方法:默认的public Phone() {}// Getters and Setterspublic String getType() {return type;}public void setType(String type) {this.type = type;}public String getColor() {return color;}public void setColor(String color) {this.color = color;}public String getBrand() {return brand;}public void setBrand(String brand) {this.brand = brand;}public Person getOwner() {return owner;}public void setOwner(Person owner) {this.owner = owner;}}//类:人
public class Person {private Phone phone;public Person() {}public Phone getPhone() {return phone;}public void setPhone(Phone phone) {this.phone = phone;}}

2.3按多重性分类:

(1)一对一

(2)一对多

例:一对一

//类: 电话
public class Phone {// 属性:型号private String type;// 属性:颜色private String color;// 属性:品牌private String brand;// 构造方法:默认的public Phone() {}// Getters and Setterspublic String getType() {return type;}public void setType(String type) {this.type = type;}public String getColor() {return color;}public void setColor(String color) {this.color = color;}public String getBrand() {return brand;}public void setBrand(String brand) {this.brand = brand;}}//类:人
public class Person {private Phone phone;public Person() {}public Phone getPhone() {return phone;}public void setPhone(Phone phone) {this.phone = phone;}}

例:一对多

//类: 电话
public class Phone {// 属性:型号private String type;// 属性:颜色private String color;// 属性:品牌private String brand;// 构造方法public Phone() {}// Getters and Setterspublic String getType() {return type;}public void setType(String type) {this.type = type;}public String getColor() {return color;}public void setColor(String color) {this.color = color;}public String getBrand() {return brand;}public void setBrand(String brand) {this.brand = brand;}}//类:人
public class Person {//数组private Phone[]  phones0 ;//集合private List<Phone> phones;private Set<Phone> phones2;private Map<String, Phone> phone3;public Person() {this.phones0 = new Phone[3];phones = new ArrayList<Phone>();}}this.color = color;}public String getBrand() {return brand;}public void setBrand(String brand) {this.brand = brand;}}//类:人
public class Person {//数组private Phone[]  phones0 ;//集合private List<Phone> phones;private Set<Phone> phones2;private Map<String, Phone> phone3;public Person() {this.phones0 = new Phone[3];phones = new ArrayList<Phone>();}}

10. 类的关系——关联关系相关推荐

  1. java 关联关系_类的关系之一——关联关系

    在Java应用程序中,不可能只有一个类,一定是很多类相互协作实现业务系统.因此,我们需要了解类与类之间的关系. 只要两个类之间有某种关系,都可以总结为三种关系中的一种,即关联.依赖.继承,其中继承也是 ...

  2. UML类图关系大全 and 报表的基本用法

    UML类图关系大全 1.关联 双向关联: C1-C2:指双方都知道对方的存在,都可以调用对方的公共属性和方法. 在 GOF的设计模式书上是这样描述的:虽然在分析阶段这种关系是适用的,但我们觉得它对于描 ...

  3. python中对象和类的关系_Python面向对象之类与类之间的关系

    2.2 关联,聚合,组合关系 其实这三个在代码上写法是⼀样的. 但是, 从含义上是不⼀样的. 1. 关联关系. 两种事物必须是互相关联的. 但是在某些特殊情况下是可以更改和更换的. 2. 聚合关系. ...

  4. UML 之 C++类图关系全面剖析

    UML的类图关系分为: 关联.聚合/组合.依赖.泛化(继承).而其中关联又分为双向关联.单向关联.自身关联:下面就让我们一起来看看这些关系究竟是什么,以及它们的区别在哪里. 1.关联 双向关联: C1 ...

  5. 《大象:thinking in uml 》(第二版) 3章 UML核心元素 8-11节 设计类、关系、组件、节点

    3.8 设计类 只供参考,喜欢请支持正版图书 设计类是系统实施中一个或多个对象的抽象:设计类所对应的对象取决于实施语言.设计类用于设计模型中,它直接使用与编程语言相同的语言来描述. 凡是使用过面向对象 ...

  6. 五分钟看懂UML类图与类的关系详解

    在画类图的时候,理清类和类之间的关系是重点.类的关系有泛化(Generalization).实现(Realization).依赖(Dependency)和关联(Association).其中关联又分为 ...

  7. UML类图与类的关系详解

    UML类图与类的关系详解   2011-04-21 来源:网络   在画类图的时候,理清类和类之间的关系是重点.类的关系有泛化(Generalization).实现(Realization).依赖(D ...

  8. 类与类之间关系的表示方式

    类与类之间关系的表示方式 关联关系 关联关系是对象之间的一种引用关系, 用于表示一类对象与另一类对象之间的联系,如老师和学生.师傅和徒弟.丈夫和妻子等. 关联关系是类与类之间最常用的一种关系,分为一般 ...

  9. UML类图关系(泛化 、继承、实现、依赖、关联、聚合、组合)

    在UML类图中,常见的有以下几种关系: 泛化(Generalization),  实现(Realization),关联(Association),聚合(Aggregation),组合(Composit ...

最新文章

  1. 使用blowery.Web.HttpCompress.dll对aspx压缩
  2. 多模型不仅是不同的初始化值会得到不同状态(多态微调结构网络)
  3. ios开发笔记之 APNS推送服务的实现
  4. c语言数字字体的格式,c语言—— 格式控制符—— 数据类型——相对应的字节数...
  5. ACM比赛技巧之文件数据输入与输出
  6. C语言之do_while输出菱形
  7. drools rule (二) LHS语法详解
  8. Java 阶乘(BigInteger)
  9. SpringBoot项目多环境配置(亲测有效)
  10. html给图片加个放大效果鼠标经过,网页制作-如何在制作鼠标经过时图片放大效果...
  11. JAVA 繁体 转 简体 简体转翻译 繁体简体互转
  12. 【9秒实验室自研】FLA文件资源导出工具 源码开放
  13. python:彩色照转黑白照
  14. CheriABI简介
  15. 原神私服 grasscutter搭建及食用教程
  16. 沙特认证_所有的沙特机器人去哪儿了
  17. 【Scratch】《零基础入门学习Scratch》(小甲鱼)笔记二
  18. 【转载】人到中年须具备的心情修养
  19. 希捷移动硬盘打不开怎么办,数据如何恢复
  20. 盘点多边形战士 Polygon 的扩容解决方案

热门文章

  1. VMware迁移虚拟机教程
  2. 驱动到底是什么?为什么要装驱动?
  3. LibQQt系列之十四《v2.3》
  4. □ 影片名:《无法抗拒的诱惑》(27139) 在线播放
  5. Jquery中的Each方法
  6. 「镁客·请讲」酷哇机器人刘力源:主打低速自动驾驶场景,AI环卫需求正在急速增长... 1
  7. Java 基础知识总结(附PDF文档)
  8. java闰年满五换行_有关平年闰年的科学知识
  9. 网络恶意行为分析模型
  10. lis通道号_LIS系统项目维护操作说明-.doc