ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

UML类图——重要

2022-03-30 21:35:56  阅读:176  来源: 互联网

标签:... 重要 void move 类图 private public UML class


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)并拥有商品;
  • 反之,卖出的商品总有某个顾客与之相关联。

因此,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),但是一个按钮只能属于一个界面。

  • 一个Form类的对象可以与零个或多个Button类的对象相关联
  • 一个Butto类的对象只能与一个Form类的对象关联

如图所示。
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()方法。

  • 驾驶员的drive()方法依赖车的move()方法
    • 类Driver依赖类Car

如图所示。

image

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

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

泛化关系

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

  • Person类
    • 姓名(name)
    • 年龄(age)
    • 行走move()
    • 说话say()
  • Student类
    • 姓名(name)
    • 年龄(age)
    • 学号(studentNo)
    • 学习study()
  • Teacher类
    • 姓名(name)
    • 年龄(age)
    • 教师编号(teacherNo)
    • 教学teach()

如图所示。

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

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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有