其他分享
首页 > 其他分享> > UML类图——重要

UML类图——重要

作者:互联网

A.2 类与类的UML表示

       类(Class) 封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性、操作、关系的对象集合的总称。

设计类是面向对象设计中最重要的组成部分,也是最复杂和最耗时的部分。
       在软件系统运行时类将被实例化成对象(Object),对象对应于某个具体的事物,是类的实例(Instance)
       类图(Class Diagram) 使用出现在系统中的不同类来描述系统的静态结构,它用来描述不同的类以及它们之间的关系。

类的UML图示

image

public class Employee {
    private String name;
    private int age;
    private String email;

    public void modifyInfo() {
        ...
    }
}

早UML类图中,类一般由三部分组成:

  1. 类名
  2. 类的属性:类的性质。
    [可见性]名称:类型「=默认值]
    
    • 可见性:
      • 公有(public):+
      • 私有(private):-
      • 受保护(protected):#
      • 包内可见(defalut):*
    • 名称:属性名,驼峰命名法(Camel Case)
    • 类型:
      • 基本数据类型
      • 用户自定义数据类型
    • 默认值:可选项,属性的初始值。
  3. 类的操作:类的任意一个实例对象都可以使用的行为。
    [可见性]名称([参数列表])[:返回类型]
    
    • 可见性:同类的属性
    • 名称:方法名或操作名,驼峰命名法(Camel Case)
    • 参数列表:方法参数
    • 方法列表:可选项
      • 基本数据类型
      • 用户自定义类型
      • 空类型

A.3 类之间的关系(重要)

image

关联关系

关联关系(Association):结构化的关系。表示一类对象与另一类对象之间有联系。
image

public class LoginForm {
    private JButton LoginButton;
    ...
}

public class JButton{
    ...
}

双向关联

在默认情况下关联是双向的。

因此,Customer类和 Product类之间具有双向关联关系,如图所示。

image

public class Customer {
    private Product[] products;
    ...
}

public class Product {
    private Customer customer;
    ...
}

单向关联

顾客(Customer)拥有地址(Address)。
image

public class Customer {
    private Address address;
    ...
}

public class Address {
    ...
}

自关联

一个结点类(Node)的成员又是结点Node类型的对象。
image

public class Node {
    private Node subNode;
    ...
}

多重性关联

image
一个界面(Form)可以拥有零个或多个按钮(Btutton),但是一个按钮只能属于一个界面。

如图所示。
image

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

public class Button {
    ...
}

聚合关系

汽车发动机(Engine)是汽车(Car)的组成部分,但是汽车发动机可以独立存在,如图所示。

image

public class Car {
    private Engine engine;

    //构造注入
    public Car(Engine engine) {
        this.engine = engine;
    }

    //设值注入
    public void setEngine(Engine engine) {
        this.engine = engine
    }
    ...
}

public class Engine {
    ...
}

组合关系

人的头(Head)与嘴巴(Mouth),嘴巴是头的组成部分之一,而且如果头没了,嘴巴也就没了,如图所示。

image

public class Head {
    private Mouth mouth;

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

public class Mouth {
    ...
}

依赖关系

驾驶员开车。
在Driver类的drive()方法中将Car类型的对象car作为一个参数传递,以便在drive()方法中能够调用car的move()方法。

如图所示。

image

public class Driver {
    public void drive(Car car) {
        car.move();
    }
    ...
}

public class Car {
    public void move() {
        ...
    }
    ...
}
  1. 最常用,将一个类的对象作为另一个类中方法的参数;
  2. 在一个类的方法中将另一个类作为局部变量,使用方法;
  3. 在一个类的方法中调用另一个类的静态方法。

泛化关系

Student类和Teacher类都是Person类的子类

如图所示。

image

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() {
        ...
    }
}

public class Teacher extends Person {
    private String teacherNO;

    public void teach() {
        ...
    }
}

接口与实现的关系

image

public interface Vehicle {
    public void move();
}

public class Ship implements Vehicle {

    @Override
    public void move() {
        ...
    }
}

public class Car implements Vehicle {

    @Override
    public void move() {
        ...
    }
}

标签:...,重要,void,move,类图,private,public,UML,class
来源: https://www.cnblogs.com/tlo-liangjiajia/p/16079182.html