zoukankan      html  css  js  c++  java
  • 类与类关系的UML图与代码表现

    一  :


    二 :





    三 :



    四 :



    五 :




    类与类之间的关系对于理解面向对象具有很重要的作用,存在以下关系:
    (1)泛化(Generalization)   :狗与动物  (空箭头)
    (2)关联(Association)       :公司与员工有特定的某种关系 (实线)
    (3)依赖(Dependency)    :人依赖螺丝刀 (虚线箭头)
    (4)聚合(Aggregation)     : 电脑和CPU,主板 (菱形空间头)







    详细展开  :
    一 .泛化(Generalization)
     表示类与类之间的继承关系接口与接口之间的继承关系或类对接口的实现关系
     一般泛化的关系是从子类指向父类的:
     父类 父类实例=new 子类()



    1/**
    2* 一个测试类
    3*/

    4public class Demo{    
    5    public void test() {
    6        //老虎的实例 也属于动物类型 
    7        Animal animal = new Tiger();  
    8    }
        
    9}
     



    1/**
    2*  动物类
    3*/

    4public class Animal{
    5
    6}
        


    1/**
    2* 老虎类 
    3*/

    4public class Tiger extends Animal{
    5
    6}
      



    二 .依赖(Dependency)

    对于两个相对独立的对象,当一个对象(螺丝刀)负责构造另一个对象(人)的实例,或者一个对象(人)依赖另一个对象(螺丝刀)的服务时,这两个对象之间主要体现为依赖关系。

    下面这个例子显然属于后者 :人要做一个拧螺丝的动作,他就要依赖于 螺丝刀对象,因为只有螺丝刀对象才提供拧螺丝的服务。


     1/**
     2 * 说明 :人 这个 类 
     3 */

     4public class Person {
     5    /**
     6     * 人拥有的一个  拧螺丝  的  动作 依赖于螺丝刀这个类
     7     * @param screwdriver :螺丝刀类
     8     */

     9     public void screw(Screwdriver screwdriver)
    10        //螺丝刀类提供了拧螺丝这个服务
    11        screwdriver.screw();    
    12    }
      
    13}



    三 .关联(Association)
    对于两个相对独立的对象,当一个对象的实例与另一个对象的一些特定实例存在固定的对应关系时,这两个对象之间为关联关系。
    关联关系是使用实例变量来实现
    比如客户和订单,每个订单对应特定的客户,每个客户对应一些特定的订单;再例如公司和员工,每个公司对应一些特定的员工,每个员工对应一特定的公司



     1/**
     2 * 公司
     3 */

     4public class Company{   
     5    //员工
     6    private Employee employee;
     7
     8    /**
     9     * 公司运作
    10      */

    11    public void run(){    
    12        employee.startWorking();    
    13    }

    14    
    15    public Employee getEmployee(){    
    16        return employee;    
    17    }
        
    18    public void setEmployee(Employee employee){    
    19        this.employee=employee;    
    20    }
      
    21}
     


    四 : 聚合(Aggregation)
    当对象A被加入到对象B中,成为对象B的组成部分时,对象B和对象A之间为聚集关系。聚合是关联关系的一种,是较强的关联关系,强调的是整体与部分之间的关系。
    [关联与聚合的区别]
    (1)关联关系所涉及的两个对象是处在同一个层次上的。比如人和自行车就是一种关联关系,而不是聚合关系,因为人不是由自行车组成的。
    聚合关系涉及的两个对象处于不平等的层次上,一个代表整体,一个代表部分。比如电脑和它的显示器、键盘、主板以及内存就是聚集关系,因为主板是电脑的组成部分。
    (2)对于具有聚集关系(尤其是强聚集关系)的两个对象,整体对象会制约它的组成对象的生命周期。部分类的对象不能单独存在,它的生命周期依赖于整体类的对象的生命周期,当整体消失,部分也就随之消失。比如张三的电脑被偷了,那么电脑的所有组件也不存在了,除非张三事先把一些电脑的组件(比如硬盘和内存)拆了下来。


     1public class Computer{    
     2    private CPU cpu;    
     3    public CPU getCPU(){    
     4        return cpu;    
     5    }
        
     6    public void setCPU(CPU cpu){    
     7        this.cpu=cpu;    
     8    }
        
     9    //开启电脑    
    10    public void start(){    
    11        //cpu运作    
    12        cpu.run();    
    13    }
        
    14}
      
  • 相关阅读:
    Flex4 启动失败: 正在等待 Adobe Flash Player 连接调试器
    软件的黑盒和白盒分析方法
    PAIP.国内软件公司的现状及解决.txt
    软件逆向分析方法小结
    应用程序中主键ID生成与UUID
    JDK1.4下载 JRE1.4下载
    壳与软件保护
    数据恢复软件
    跨语言调用模块.TXT
    论文格式
  • 原文地址:https://www.cnblogs.com/yefengmeander/p/2887862.html
Copyright © 2011-2022 走看看