【UML】UML + C4

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

推荐参考:https://zhuanlan.zhihu.com/p/109655171  30分钟学会UML类图


 

帖子中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:。

    

 

     

 

   常用组合片段

      

 

   样例:

        

 

posted @ 2018-04-11 23:38  飞翔在天  阅读(265)  评论(0编辑  收藏  举报