10. 类的关系——关联关系
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. 类的关系——关联关系相关推荐
- java 关联关系_类的关系之一——关联关系
在Java应用程序中,不可能只有一个类,一定是很多类相互协作实现业务系统.因此,我们需要了解类与类之间的关系. 只要两个类之间有某种关系,都可以总结为三种关系中的一种,即关联.依赖.继承,其中继承也是 ...
- UML类图关系大全 and 报表的基本用法
UML类图关系大全 1.关联 双向关联: C1-C2:指双方都知道对方的存在,都可以调用对方的公共属性和方法. 在 GOF的设计模式书上是这样描述的:虽然在分析阶段这种关系是适用的,但我们觉得它对于描 ...
- python中对象和类的关系_Python面向对象之类与类之间的关系
2.2 关联,聚合,组合关系 其实这三个在代码上写法是⼀样的. 但是, 从含义上是不⼀样的. 1. 关联关系. 两种事物必须是互相关联的. 但是在某些特殊情况下是可以更改和更换的. 2. 聚合关系. ...
- UML 之 C++类图关系全面剖析
UML的类图关系分为: 关联.聚合/组合.依赖.泛化(继承).而其中关联又分为双向关联.单向关联.自身关联:下面就让我们一起来看看这些关系究竟是什么,以及它们的区别在哪里. 1.关联 双向关联: C1 ...
- 《大象:thinking in uml 》(第二版) 3章 UML核心元素 8-11节 设计类、关系、组件、节点
3.8 设计类 只供参考,喜欢请支持正版图书 设计类是系统实施中一个或多个对象的抽象:设计类所对应的对象取决于实施语言.设计类用于设计模型中,它直接使用与编程语言相同的语言来描述. 凡是使用过面向对象 ...
- 五分钟看懂UML类图与类的关系详解
在画类图的时候,理清类和类之间的关系是重点.类的关系有泛化(Generalization).实现(Realization).依赖(Dependency)和关联(Association).其中关联又分为 ...
- UML类图与类的关系详解
UML类图与类的关系详解 2011-04-21 来源:网络 在画类图的时候,理清类和类之间的关系是重点.类的关系有泛化(Generalization).实现(Realization).依赖(D ...
- 类与类之间关系的表示方式
类与类之间关系的表示方式 关联关系 关联关系是对象之间的一种引用关系, 用于表示一类对象与另一类对象之间的联系,如老师和学生.师傅和徒弟.丈夫和妻子等. 关联关系是类与类之间最常用的一种关系,分为一般 ...
- UML类图关系(泛化 、继承、实现、依赖、关联、聚合、组合)
在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composit ...
最新文章
- 使用blowery.Web.HttpCompress.dll对aspx压缩
- 多模型不仅是不同的初始化值会得到不同状态(多态微调结构网络)
- ios开发笔记之 APNS推送服务的实现
- c语言数字字体的格式,c语言—— 格式控制符—— 数据类型——相对应的字节数...
- ACM比赛技巧之文件数据输入与输出
- C语言之do_while输出菱形
- drools rule (二) LHS语法详解
- Java 阶乘(BigInteger)
- SpringBoot项目多环境配置(亲测有效)
- html给图片加个放大效果鼠标经过,网页制作-如何在制作鼠标经过时图片放大效果...
- JAVA 繁体 转 简体 简体转翻译 繁体简体互转
- 【9秒实验室自研】FLA文件资源导出工具 源码开放
- python:彩色照转黑白照
- CheriABI简介
- 原神私服 grasscutter搭建及食用教程
- 沙特认证_所有的沙特机器人去哪儿了
- 【Scratch】《零基础入门学习Scratch》(小甲鱼)笔记二
- 【转载】人到中年须具备的心情修养
- 希捷移动硬盘打不开怎么办,数据如何恢复
- 盘点多边形战士 Polygon 的扩容解决方案