【未完成】类之间的各种关系

一、依赖关系

假设A类的变化引起了B类的变化,就说明B依赖于A。
在UML图中,用虚线箭头表示类之间的依赖关系。
依赖关系有下面具体三种情况。

  • 1、A类是B类中的局部变量,这时,A的变化能够引起B变化,说明B依赖A.
  • 2、A类是B类方法中的一个参数,A变化同样能引起B变化。
  • 3、A类向B类发送消息,这样A也能使B发生变化,也能说B依赖A。
public class Driver {

    public void drive(Car car){      //类Car是Driver里一个方法的参数,说明Car的变化能带来Driver的变化,则说明Driver依赖Car

        car.move();
    }
}

public class Car {

    public void move() {

        ...
    }
}

二、泛化(继承)关系

A是B、C的父类,说明A是 B, C 的泛化。
在UML图中,泛化关系用实线空心三角形表示。在Java中,泛化关系用extends来实现。

public class Person {

    protected String name;
    protected int age;

    public void move() {

        ...
    }

    public void say() {

        ...
    }
}

public class Student extends Person {

    private String studentNo;
    public void study() {

        ...
    }
}

在UML当中,对泛化关系有三个要求:

  • 1、子类与父类应该完全一致,父类所具有的属性、操作,子类应该全都有。
  • 2、子类中除了与父类一致的信息以外,还包括额外的信息。
  • 3、可以使用父类的实例的地方,也可以使用子类的实例。

三、关联关系

类之间有关联,比如客户和订单,一个客户有很多订单,一个订单对应一个客户,这就说他们之间存在关联。
在UML中,关联关系使用实线来连接
关联,通常将一个类的对象作为另一个类的属性

  • 1、双向关联
    你中有我我中有你。
public class Customer {

    private Product [] products;

}

public class Product {

    private Customer customer;
}
  • 2、单向关联
    只有一个类中以另外一个类作为属性
    用单向实心箭头表示。
  • 3、自关联
    一些类的属性对象类型为他自己
  • 4、重数性关联:表示一个类的对象与另一个类的对象连接的个数

    1..1 表示另一个类的一个对象只与一个该类对象有关系
    0..* 表示另一个类的一个对象与零个或多个该类对象有关系
    1..* 表示另一个类的一个对象与一个或多个该类对象有关系
    0..1 表示另一个类的一个对象没有或只与一个该类对象有关系
    m..n 表示另一个类的一个对象与最少m、最多n个该对象有关系

public class Form {
    private Button buttons[];
    ...
}

public class Button {
    ...
}

四、聚合关系

表示整体和部分的关系。通常在定义了一个整体类后,再去分析这个整体类的组成结构,从中找出成员类,该整体类和成员类之间就形成了聚合关系。在聚合关系中,成员类是整体类的一部分,即成员对象是整体对象的一部分,但成员对象可以脱离整体对象独立存在。
在UML图中,聚合关系用带空心菱形的直线表示

public class Car {

    private Engine engine;

    public Car(Engine engine) {

    this.engine = engine;
    }

    public void setEngine(Engine engine) {

        this.engine = engine;
    }
    ...
}

public class Engine {
    ...
}

五、组合关系

也就是整和部分的关系,但是整体与部分不可以分开。部分和整体具有统一的生存期,一旦整体对象不存在,部分对象也将不存在。同生共死。
在UML中,组合关系常用带实心菱形的直线表示。

public class Head {
    private Mouth mouth;
    public Head {
        mouth = new Mouth();
    }
}

public class Mouth {
...
}

六、实现关系

用来规定接口和实现接口的类或者构建结构的关系,接口是操作的集合,而这些操作就用于规定类或者构建的一种服务。
这里没学到接口,先放一放

原文地址:https://www.cnblogs.com/hmzmua/p/10991830.html

时间: 2024-08-29 06:08:27

【未完成】类之间的各种关系的相关文章

UML 类与类之间的四大关系的一些图标及代码含义

UML 类与类之间的四大关系的一些图标及代码含义 另一个版本: 关联:连接模型元素及链接实例,用一条实线来表示: 依赖:表示一个元素以某种方式依赖于另一个元素,用一条虚线加箭头来表示: 聚合:表示整体与部分的关系,用一条实线加空心菱形来表示: 组成:表示整体与部分的有一关系,用一条实线加实心菱形来表示: 泛化(继承):表示一般与特殊的关系,用一条实线加空心箭头来表示: 实现:表示类与接口的关系,用一条虚线加空心箭头来表示:类与类之间存在以下关系:(1)泛化(Generalization)(2)关

验证当多个类之间有继承关系时,创建子类对象会导致父类初始化块的执行。

结果:当多个类之间有继承关系时,创建子类对象会导致父类初始化块的执行.

Hibernate中的Entity类之间的继承关系之一MappedSuperclass

在hibernate中,Entity类可以继承Entity类或非Entity类.但是,关系数据库表之间不存在继承的关系.那么在Entity类之间的继承关系,在数据库表中如何表示呢? Hibernate提供了4种兼容JPA的策略,解决Entity类的继承与关系数据库表的对应不匹配问题.这里介绍第一种MappedSuperclass. 在这种策略中,存在如下特征: 只在Entity类之间存在继承关系,其中的父Entity类使用@javax.persistence.MappedSuperclass标注

Python设计模式 - 基础 - 类与类之间的六种关系

在程序中需要把世间万物抽象成相应的类,现实世界中物与物之间的关系和程序中类与类之间的关系相对应,因为世间万物是普遍联系的,所以程序中类与类之间也不是孤立的.在系统分析和框架设计中,根据面向对象机制的三大特性:封装.继承.多态,归纳和扩展出类与类之间六种不同的关系: - 依赖关系Dependency: 在局部变量,方法的形参,或者对静态方法的调用中实现 - 关联关系Association: 在类的成员变量中实现,可以双向也可以单向 - 聚合关系Aggregation: 强关联,整体与部分的关系,但

类之间的依赖关系和组合关系

目录 类之间的依赖关系和组合关系 依赖(关联)关系 组合(聚合)关系 一对多的组合关系 类之间的依赖关系和组合关系 依赖(关联)关系 类之间可以有三种关系: 依赖(关联)关系 组合(聚合)关系 继承(实现)关系 依赖(关联)关系指的是类对象执行某个动作的时候,需要其他类的对象来帮助完成这个操作的情况,其特点为: 将一个类的对象或者类名传到另一个类的方法中使用 此时的关系是最轻的,随时可以更换其他对象 关联关系的示例如下: class Person: def play(self, tools):

UML类图画法及类之间几种关系

文章目录如下: 一.类图画法 二.类之间的几种关系:泛化(Generalization).实现(Realization).关联(Association)(又分一般关联.聚合(Aggregation).组合(Composition)).依赖(Dependency) 一.类图画法 1.  类图的概念 A.显示出类.接口以及它们之间的静态结构和关系 B.用于描述系统的结构化设计 2.  类图的元素 类.接口.协作.关系,我们只简单介绍一下这四种元素. 同其他的图一样,类图也可以包含注解和限制. 类图中

模板类之间的友元关系实现Blob和BlobPtr

16.12编写你自己版本的Blob和BlobPtr模板,包含书中未定义的多个const成员. Blob.h(注意,成员函数的声明和定义要放在一个头文件中) /*记住,模板的头文件中通常既包括声明也包括定义.函数模板和类模板成员函数的定义通常放在头文件中,不能分开放....谨记*/ #ifndef BLOB_H #define BLOB_H #include<iostream> #include<vector> #include<string> #include<m

当多个类之间有继承关系时,创建子类对象会导致父类初始化块的执行。

源代码 public class inherit { public static void main(String[] args){ first a=new first(); a.show(); } } class second{ String name; { name="zxr"; } } class first extends second{ int age=20; void show() { System.out.println("名字"+name); Sys

eclipse如何查看类之间的引用关系

今天遇到这个问题:mark一点点: 在类名上单击右键.选择Reference->Workingspace快捷克债券Ctrl+Shift+G 版权声明:本文博客原创文章,博客,未经同意,不得转载.