zoukankan      html  css  js  c++  java
  • UML之包图

    包图的基本概念: 包图是用来描述模型中的包和所包含元素的组织方式的图,是维护和控制系统总体结构的重要内容。

    包图能够组织许多UML中的元素,不过其最常用的用途是用来组织用例图和类图。

    包图中包含包元素以及包之间的关系。与其他图类似,包图中可以创建注解和约束。

    包的概念: 包是用于把模型组织成层次结构的通用机制,它不能执行。

    包名:包有简单名、路径名

    包中的元素:包中可以容纳各种高级的模型元素,如类和类的关系、状态机、用例图、交互、协作等,甚至是一个完整的UML图。

    另外,包中还可以含有包,这被称为包的嵌套。

    包元素的可见性:控制包外元素对包内元素的访问权限。

    公有(+):只要当前包被引入,包内的公共元素即对引入者可见。

    保护(#):仅对当前包的子包可见。

    私有(-):仅对该包可见,外部无法访问。

    另外,如果某元素对于一个包是可见的,则它对于嵌套在这个包中的任何包都是可见的。

    包的构造型:可以使用构造型来描述包的种类。UML预定义了一些构造型,用户也可自行定义新的构造型。

    高内聚,低耦合:

    在外部观察包时,可以将内部元素视作一个整体,方便将多个元素一同处理。

    包内部的元素应该保证有相似、相同的语义,或者其元素有同时更改和变化的性质。

    注:在实际应用中,包对包含的元素的作用相当于C++和C#中命名空间的概念或Java中的包概念。和这些概念不同的是,UML包中的内容不限于类和接口,包中的元素种类要丰富的多。

    元素的分包原则:

    1)元素不能“狡兔三窟”:树形结构的一个节点不能同时拥有两个父节点,一个元素也不允许在两个包中重复出现。

    2)相同包内元素不能重名:包所具有的命名空间的作用要求用一个包中的同种类元素名称必须是唯一的。

    3)包内元素要紧密联系:分在同一个包中的元素应该具有某些相同的性质,即包的高内聚性。

    4)包与包尽可能保持独立:包和包之间需要尽可能减少耦合度,要求包内元素与外部元素有尽可能少的依赖关系。

    包的依赖关系:

    包之间的依赖关系实际上是从一个更高的层次来描述包内某些元素之间的依赖关系。也就是说,如果不同包中任何元素之间存在着一个依赖,则两个包之间就存在着依赖关系。

    包之间的依赖关系首先需要包中的某些元素具有某种外部可见性,即可以被包外部的元素所引用。

    容易出现的问题:循环依赖

    循环依赖的出现是令人困惑、也是非常容易产生错误的。尤其是当依赖关系表示包的引入时,循环依赖会导致将模型转化成代码后因为包之间互相引入而出现错误。

    解决方案:重新分包,引入第三个包,重新建立依赖关系。

     

    包图的建模技术

    对成组元素建模

    浏览模型中的元素,找出概念或语义上接近的元素分组。

    将分好组的元素组织在一个包里,同时考虑包的嵌套。

    对每一个包,区分哪些元素需要在包外被访问,进而确定包内元素的可见性。这一步骤类似于类的封装过程:没有必要对外开放的元素一定要预先标注为私有,随后逐一检查,如果必须开放再考虑开放可见性为受保护或公有。若设计完成时发现部分公有元素未被使用,还应该将这些元素重新置为私有元素。

    使用引入依赖显式地在包之间建立关系。

    对体系结构视图建模

    我们已经知道,视图是对系统的组织和结构的某个方面的投影,表达了对系统某个方面的关注。理论上,我们完全可以利用包元素来创建自己的体系结构视图。实际上,现在绝大部分的UML建模工具的视图结构也是使用包元素来划分其体系结构视图的。

  • 相关阅读:
    spring in action小结4.1
    spring in action小结3 运行时值注入
    python-__init__.py 与模块对象的关系
    Python-常用库扩展
    Qt-优化布局结构
    Python-文件修改器
    C语言-数据结构(一)
    Python-PyQt4学习笔记
    Python-PyQt4学习资料汇总
    Linux-查看C语言手册及man的特殊用法
  • 原文地址:https://www.cnblogs.com/gd-luojialin/p/10356727.html
Copyright © 2011-2022 走看看