zoukankan      html  css  js  c++  java
  • 【UML】UML + C4

    C4模型:https://insights.thoughtworks.cn/c4-model/

    帖子中UML图在ProcessOn绘制。

    类之间的关系

     关联关系---表示一类对象与另一类对象之间有联系

    通常一个类对象作为另外一个类的成员变量。    vs    依赖(一个类对象作为另外一个类方法的入参)

    1)单向关联

     

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

     2)双向关联:顾客购买并拥有商品;商品被卖给某个顾客

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

     3)自关联

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

    4)多重关联:表示两个关联对象才能够在数量上的对应关系

      

      实际样例: Frame包含很多Button

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

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

      代码实现时,成员对象通常作为含参构造方法,Setter方法注入到对象中。  // 通过setter导入一个其他可独立存在的对象

    public class Car{
        private Engine engine;
        // 构造注入
        public Car(Engine engine)
        {
             this.engine = engine;  
        }    
        // 设值注入
        public void setEngine(Engine engine){
            thins.engine = engine;
        }
        ...
    }
    
    public class Engine{
        ...
    }

     6)组合关系

      整体和部分的关系,此时整体可以控制成员的生命周期,对象不存在,则成员也不存在。

      代码通常在整体类构造方法中直接实例化成员类

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

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

       大多数时,依赖关系体现在某个类的方法使用另一个类的对象作为参数 

         

    依赖方式的3种常见实现:

      1、类对象作为另一个类方法中入参;

      2、一个类方法中,将另一个类对象作为局部变量;

      3、一个类方法调用另外一个类的静态方法 

      代码样例

    // 实现类型1:类对象作为另一个类方法入参

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

    继承关系:描述父类与子类的关系

    接口实现: 没有属性,且所有操作都是抽象的(不允许其中方法存在{}body)


    时序图:

      几种生命线类型

        Boundary:边界对象,初学者dao用得少,在MVC模式、控制模式、需求分析过渡到系统设计中用得多些,可用于表示交互界面、子系统。
        Control:控制对象,用于表示业务逻辑、分工协调的职责对象,采用控制模式分析设计时用得多。
        Entity:实体对象,用于表示需要永久保存或较长生命期的数据对象,例如票据、文件、数据库(通常不直接说数据库等技术实现方式,而说逻辑意义的名称)。

       对象:代表时序图中的对象在交互中所扮演的角色

      位于时序图的顶部,以一个矩形表示。对象的命名方式一般有三种:
             1 对象名和类名。例如:华为手机:手机、loginServiceObject:LoginService。
             2 只显示类名,不显示对象,即为一个匿名类。例如::手机、:LoginSservice。
        3 只显示对象名,不显示类名。例如:华为手机:、loginServiceObject:。

        

         

       常用组合片段

          

       样例:

            

  • 相关阅读:
    关于按钮背景透明 + div拖拽
    asp.net 自带ajax 控件的小实例
    何去何从
    字符串的常用操作
    第一章
    C语言的基础知识2
    C语言的基础知识1
    socket
    缓冲区溢出学习
    OD调试
  • 原文地址:https://www.cnblogs.com/clarino/p/8799449.html
Copyright © 2011-2022 走看看