• 【聚沙成塔系列】之《UML九种图-包图、类图》


    一、包

    (一)相关概念:

    1、包:

    一个包=一层=一个命名空间=一个文件夹

    2、包的命名:

          简单名:王老二

          路径名:中国.河北省.廊坊市.廊坊师范学院.信息技术提高班.九期班.王老

    3、可见性:

          +公有;#保护;—私有

     

    (二)包之间的关系:

       引入和按访问依赖:

    解析:百家讲坛邀请:中国.河北省.廊坊市.廊坊师范学院. 信息技术提高班.九期班.王老二  来讲课

     

    (三)设计包的原则:

    1、重用等价原则:

    把类放入包中时,应考虑把包作为可重用的单元。

    2、共同闭包原则:

    把那些需要同时改变的类,放在同一个包中。

    3、共同重用原则:

    把一起使用的类,放在同一个包中。

    4、非循环依赖原则:

    包之间的依赖关系不要形成循环。

     

    二、类Class

    (一)相关概念:

    1、类class:

    类是对一组具有相同属性、操作、关系和语义的对象的抽象,面向对象系统组织结构的核心。类和对象表示现实世界,用消息和方法来模拟现实世界的核心思想。

    2、抽象类(abstract class)

    抽象类是一种不能被直接实例化的类。

    抽象类是不完整的,并且它只能用作基基类 

    3、关联类(association class)

    关联类既是关联也是类,它不仅像关联连接两个类,而且还可以定义一组属于关系本身的特性。

    问:为什么使用关联类?

    答:面向对象建模中存在这样的问题:两个类之间存在多对多的关系,有些属性不容易归到某一个类中。从图中可以看出Job类是即是一个关联关系也是一个类,是为了描述类Person与类Company之间的关联关系的。

    解析:Person类和Company类因为工作的缘故而存在关系。要建模Person和Company之间的这种工作关系,很重要的一个内容是工作岗位和这一岗位的工资。如果没有关联类,那么将工资这一属性放在Person类或是Company类都不合适。那很自然,这一属性应当放在关联关系上。相反,如果不适用关联类的话,Person类的属性中应该包含Company,Company类的属性中也应该包含Person,从而造成了数据冗余的现象。所以,从另一个角度来讲,使用关联类目的是解耦合。

    这一点也让我们联想到:数据库三范式中消除部分依赖、传递依赖。

     

    (二)类之间都有哪些关系?

    1、泛化(generalization):

    泛化是指一般元素和特殊元素之间的分类关系

           

    2、关联(association)

    模型元素间的一种语义联系,它是对具有共同的结构特性、行为特性、关系和语义的链的描述。

           

     

    (1)聚合(aggregation)

    聚合是一种特殊的关联关系。表示类之间的整体与部分的关系。特征:多了不多,少了不少

    在需求描述中的“包含”、“组成”、“分为…部分”等词汇都意味着存在聚合关系。

        

    解析:雁群类是由大雁类组成的,但是多一只大雁对雁群没有影响,少一只大雁对雁群也没有影响。仍然是雁群,不会变成烧鸡。

    (2)组合(composition)

    组合是一种特殊形式的关联关系,组合关系中的整体与部分具有同样的生命周期。特征:不可分割

       

    解析:大雁类是由翅膀类组成的,即每只大雁都有两个翅膀。两个翅膀是大雁不可分割的一部分。就像是国家的每一寸领土都是中国的一部分一样,是不可分割的组合关系。当然,你可能想到少了一只翅膀的大雁,不还是大雁吗?当然,只是这样子的大雁已经没有办法执行飞行的功能了,因此是一只不完整的大雁,不能称作是大雁。在这里,类应该是一个完整的。不完整的大雁不能称作是大雁。同样,缺少了翅膀的大雁不能被称作是大雁类。

    3、实现(realization):

    类实现接口

     

    解析:大雁类实现飞接口。

     

    4、依赖(dependency):

    表现为函数中的参数(use a)。是一种使用关系y=f(x表示一个类依赖于另一个类的定义,其中一个事物的变化将影响使用该事物的另一事物。因为x变化,所以y才变化。

      

    解析:如果王老二要借车,车具有被借的属性,则王老二与车之间是依赖关系。对应到定义里就是,车的改变将影响到使用车的王老二。 

    在类中,依赖由各种原因引起,如:

    一个类向另一个类发消息;

    一个类是另一个类的数据成员类型;

    一个类是另一个类的某个操作参数类型; 

        更为详细的用法请参加《设计模式之UML五种关系与代码的对应关系

     

    三、接口Interface

    (一)相关概念

    1、接口:

    接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。 

    (二)抽象类与接口的差异?

    答:接口比抽象类更抽象,主要体现在以下几个方面:

    1)继承:类可以实现无限个接口,但仅能单重继承(从一个抽象/其他类继承)从抽象类派生的类仍可实现接口;接口是用来解决多重继承。

    2)方法:抽象类可以存在非抽象的方法;接口里面的方法只是一个声明,必须用public来修饰,没有具体实现的方法。

    3)成员变量:抽象类中的成员变量可以被不同的修饰符修饰;接口中的成员变量默认的都是静态变量。

    4)本质:抽象类是对象的抽象;接口是一种行为规范。

     

  • 相关阅读:
    最长公共子序列算法问题代码(使用JavaScript实现)
    硬币找零问题算法几种不同的代码实现方式(使用Python实现)
    基数排序(使用Python实现)
    桶排序(使用Python实现)
    减法要用 signed 型
    16系列和18系列的不同
    Proteus中常用元器件名字
    数值类型
    PIC单片机之时钟设置
    MOS管使PIC单片机不能正常运行
  • 原文地址:https://www.cnblogs.com/zhaolijing/p/3229515.html
Copyright © 2020-2023  润新知