zoukankan      html  css  js  c++  java
  • UML 类图总结

    类的表示

    UML中类的表示

    从上到下:类名、属性、方法、内部类

    若类名为斜体则表示其为虚类

    标示符前的符号含义如下:

    符号 含义
    + public
    - private
    # protected

    标示符的冒号后表示:属性类型或返回类型

    类间关系

    关联 Association

    关联关系例1

    在使用Java、C#和C++等编程语言实现关联关系时,通常将一个类的对象作为另一个类的成员变量。

    class LoginForm {  
        private JButton loginButton; //定义为成员变量  
    }  
    class JButton {}
    

    双向关联

    关联关系例2

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

    单向关联

    关联关系例3

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

    自关联

    关联关系例4

    public class Node {  
        private Node subNode;  
    }  
    

    多重性关联

    关联关系例5

    public class Form {  
        private Button[] buttons; //定义一个集合对象  
    }  
    public class Button {}  
    

    聚合 Aggregation

    在聚合关系中,成员对象是整体对象的一部分,但是成员对象可以脱离整体对象独立存在。

    成员对象通常作为构造方法、Setter方法或业务方法的参数注入到整体对象中。

    public class Car {  
        private Engine engine;  
      
        public Car(Engine engine) {  
            this.engine = engine;  
        }  
          
        public void setEngine(Engine engine) {  
            this.engine = engine;  
        }  
    }  
      
    public class Engine {}  
    

    组合 Composition

    组合关系中整体对象可以控制成员对象的生命周期,一旦整体对象不存在,成员对象也将不存在,成员对象与整体对象之间具有同生共死的关系。

    在整体类的构造方法中直接实例化成员类。

    public class Head {  
        private Mouth mouth;  
      
        public Head() {  
            mouth = new Mouth(); //实例化成员类  
        }  
    }  
    public class Mouth {}  
    

    依赖 Dependency

    一种使用关系,特定事物的改变有可能会影响到使用该事物的其他事物,在需要表示一个事物使用另一个事物时使用依赖关系。

    将一个类的对象作为另一个类中方法的参数

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

    在一个类的方法中将另一个类的对象作为其局部变量

    Class Main {
        pubilc static void main(String[] args) {
            File file = new File(args[0]);
            Scanner scanner = new Scanner(file);
            ...
        }
    }
    

    在一个类的方法中调用另一个类的静态方法

    Class Main {
        pubilc static void main(String[] args) {
            System.out.println("hello");
        }
    }
    

    泛化 Generalization

    即继承关系。

    //父类  
    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() {}  
    }  
    

    实现 Realization

    public interface Vehicle {  
        public void move();  
    }  
      
    public class Ship implements Vehicle {  
        public void move() {}  
    }  
      
    public class Car implements Vehicle {  
        public void move() {}
    }
    
  • 相关阅读:
    linux命令行下命令参数前的一横(-)和两横(--)的区别
    sql的集合操作
    二叉树的遍历
    linux网络编程中阻塞和非阻塞socket的区别
    Python 信号量
    python中文件的复制
    Linux网络服务器epoll模型的socket通讯的实现(一)
    Linux启动提示“unexpected inconsistency;RUN fsck MANUALLY”
    Linux用户级线程和内核级线程区别
    nodejs的cs模式聊天客户端和服务器实现
  • 原文地址:https://www.cnblogs.com/sequix/p/8573524.html
Copyright © 2011-2022 走看看