【咸鱼期末】Java知识点(2)

一.类之间的关系

1. 依赖

一个类A中的方法使用到了另一个类B 。这种使用关系是具有偶然性的,临时性的,非常弱的,但是B类的变化会影响到A。依赖是类之间关系最弱的一种形式。

public class Person {
  void drive(Vehicle v){}
  void write(){
	Pen p = new Pen();
	p.write
   }
  String getWeather(){
	return WeatherStation.getState;
  }
}

上图中,Person类功能的实现,有赖于其他几个类 Vehicle ,Pen 和 WeatherStation 。
其它几个类分别作为Person 类方法内的局部变量、方法的形参,或者对静态方法的调用。这几个类的变化会影响到Person类,但反之不会 。

2. 关联

一个类作为另一个类的成员变量出现。关联可以是单向的,也可以是双向的。关联可以是1对1的,也可以是1对多的,也可以是多对多的,也可以自关联。一个类使用了被关联类的属性和方法来实现自己的功能被关联的类若发生改动,则使用它的类也会发生变化。

public class Car{
  private Driver driver;
  public void showDriver(){
	System.out.println(driver.getName());
  }
}
public class Driver{
  private List<Car> cars;
  Car getCarByNumber(int n){}
} 

上图中,关联体现的是两个类之间比依赖更强的一种关系,一般是长期性的。被关联类B以类属性 的形式出现在关联类A中,就叫关联关系。

3. 聚合

与关联关系一样,聚合关系也是通过将其它类作为成员变量实现的。
在聚合关系中,两个类是处在不同层次上的,一个代表整体,另一个代表部分,是整体与部分之间的拥有关系,即has-a关系。
虽然是整体和部分的关系,但是整体与部分之间是可分离的,他们可以具有各自的生命周期。

public class Match{
  private String name;
  private int prize;
}
public class Person{
  private String name;
  private int age;
}
public class Club{
  private List<Person> members;
  private List<Match> matches;}

上图中,普通的关联关系中, A类和B类没有必然的联系,而聚合中,需要B类是A类的一部分,是一种”has a“的关系,即 A has a B。但是,has不是 must has,整体与部分之间是可分离的,他们可以具有各自的生命周期。

4. 组合

与关联关系一样,组合关系也是通过将其它类作为成员变量实现的。组合也是关联关系的一种特例,他体现的是一种contains a的关系,这种关系比聚合更强,也称为强聚合
在组合关系中,两个类是有着不同层级的关系的,一个代表整体,另一个代表部分。
整体与部分之间是不可分离的,整体的生命周期结束也就意味着部分的生命周期结束,同生共死。

public class Menu{
  private String name;
  private List<String> options;
}
public class Button{
  private String label;
}
public class Window{
  private List<Menu> menu;
  private List<Button> buttons;}

关系的汇总
关系汇总

5. 继承

继承也算是类之间的一种相互关系,此处不再赘述。

面向对象中有一个重要原则『 多用组合、少用继承 』 或者说 『 组合优于继承 』。

二.UML

1. 类图

类图
几点注意:类由矩形框表示,由三层构成:上层:类名,中层:属性,下层:方法。
抽象类名和抽象方法名用斜体表示。
注意类之间的连接方式。

2. 用例图

用例图显示了系统的功能,由参与者和用例构成,以图形化的方式表示了:系统内部的功能,系统外部的参与者以及它们之间的交互关系。
每一个用例代表系统的一个功能。用例不描述系统内部如何工作,只是定义功能,说明系统必须做什么。一个用例由一系列动作或事件流组成。
用例的一般描述分为以下几个方面:简要说明,主事件流和其他事件流,前提条件,事后条件。
用例

3. 组件图和部署图

组件图:显示软件系统中组件之间的依赖关系,以及和 第三方组件(比如类库)的依赖关系。还能显示包含软件的源代码文件的物理组织结构。
部署图:表示软件系统如何部署到硬件环境中,能够展示系统中的组件在硬件环境中的物理布局。

4. 时序图

主要用来显示具体用例的详细动作或事件流程。
时序图的构成:
•对象生命线(垂直的虚线);
•对象激活框(细长矩形);
•消息(带箭头的水平线 + 消息名);
----调用:实线段,实心箭头
----返回:虚线段,枝状箭头
•顶部方框表示类的对象或类,有 3 种写法
----对象名和类名间用冒号隔开,如 c Car
----省略对象名称, Car
----只保留对象名, c
时序图

5.活动图和状态转换图

活动图:描述活动的顺序,展现从一个活动到另一个活动的控制流。
状态转换图:描述一个对象的生命周期中所处的不同状态,以及状态之间的转换过程。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值