一:基本概念
         ---->包是一种容器,如同文件夹一样。它将某些信息分类。形成逻辑单元
        ---->包是UML非常常用的一个元素,它最主要的作用就是容纳并为其他元素分类。包可以容纳任何UML元素,例如用例,业务实体,类图等,也包括子包。
        ----->UML认为好的分包具有高内聚,低耦合的性质。
        ----->分包好坏手有包之间的依赖关系来评判的。事实上在UML里,包之间的关系定义也只有依赖关系。
        ----->什么是依赖?如果A事物发生变化,B事物必然变化,我们称B依赖于A。反之则无依赖关系。

二:分包指导性原则

---->如果将元素分为三个包A,B,C,那么被分入同一个包中的那些元素应当是相互联系紧密,甚至不可分割的。同时这些元素又具有某些相同的性质,使得包可以抽象出来一些接口来代表包内的事物与包外事物交互,以避免包外的事物频繁地直接访问包内元素。这时我们A,B,C三个包具有高内聚的性质。
        ---->包的最理想的情况是修改A,B,C三个包中任意一个包的元素,其他的任何一个包中的内容都不受影响。这时我们称A,B,C三个包之间无依赖关系或松耦合关系,他们之间可以保持消息通信。
        ---->如果实际情况难以做到完全解除依赖关系,那么至少应当保证包之间的依赖关系不会被传递。例如B依赖于A,C依赖于B,当A修改导致B要做出修改时,C不会受到影响。如果做不到这一点,当一个包发生变动时将会引起大范围的连锁反应。
        ---->包之间的依赖关系应当是单向的。应当尽量避免双向依赖和循环依赖。如果A依赖于B,而B又依赖于A,我们称这是一种双向依赖关系。如果A依赖于B,B依赖于C,而C有依赖于A。我们称这是一种循环依赖关系。双向依赖和循环依赖都是不好的分包。
        ----->什么是依赖传递?如果A=B,B=C。由此可以确定A=C,这称之为依赖关系可传递。如果A是B的朋友。B是C的朋友。但不能确定A也是C的朋友。

三:包的分类

---->包最主要的用途是分类元素,但在UML中对包也可以进行一些版型定义,让包表达一些特定的含义。常用的包的版型。
        ----->领域包

       ----->子系统
          ---->组织结构

---->层

---->除了上述版型之外,我们可以自己定义需要的版型从特定的角度对包进行分类元素。

<七>面向对象分析之UML核心元素之包的更多相关文章

  1. <四>面向对象分析之UML核心元素之用例

    一:基本概念        --->用例定义了一组用例实例,其中每个实例都是系统所执行一系列操作,这些操作生成特定主角可以观测的值.        --->所谓用例,就是一件事情,要完成这 ...

  2. <十>面向对象分析之UML核心元素之关系

    关系        --->在UML中关系是非常重要的语义,它抽象出对象之间的联系,让对象构成特定的结构.        一,关联关系(association)

  3. <九>面向对象分析之UML核心元素之设计类,类,属性,方法,可见性

    设计类

  4. <五>面向对象分析之UML核心元素之边界

    一:基本概念

  5. <八>面向对象分析之UML核心元素之分析类

    一:基本概念        ---->在那大数项目中,分析类是被忽视的一种非常有用的元素.        ---->分析类用于获取系统中主要的“职责簇”,他们代表系统的原型类,是系统必须处 ...

  6. <三>面向对象分析之UML核心元素之参与者

    一:版型        --->在UML里有一个概念叫版型.有些书里也称类型,构造型.        --->这个概念是对一个UML元素基础定义的扩展.在同一个元素基础定义的基础上赋予特别 ...

  7. <十二>面向对象分析之UML核心元素之节点和设备

    节点,设备

  8. <六>面向对象分析之UML核心元素之业务实体

    一:基本概念

  9. <十一>面向对象分析之UML核心元素之组件

    组件

随机推荐

  1. jsp bean标签

    jsp中存在一个奇奇怪怪的bean标签. 例如 现在在java包中定义一个类test2 package bean; public class test { private int number; pu ...

  2. hadoop浅尝 hadoop与hbase交互

    在安装好hbase之后,运行一个与hadoop无关的纯hbase程序成功了. 接着写一个hadoop与hbase进行交互的小程序,这个程序的运行方法依然与前文相同, 即导出jar文件在shell下运行 ...

  3. HDU 1829 A Bug's Life(种类并查集)

    思路:见代码吧. #include <stdio.h> #include <string.h> #include <set> #include <vector ...

  4. poj 3604 Professor Ben

    质因数分解:牛人推导公式(1^3+2^3+……+(1+a1)^3)*……*(1^3+2^3+……+(1+ai)^3)…… 链接http://poj.org/problem?id=3604 #inclu ...

  5. android 上下文菜单详解

    本文使用xml来创建上下文菜单 <?xml version="1.0" encoding="utf-8"?> <menu xmlns:andr ...

  6. [转]Ubuntu 常用快捷键10个

    转自:http://www.linuxeden.com/html/news/20100613/103374.html 1.前一个后一个工作区的切换 如果你经常使用工作区,那你就可以用Ctrl + Al ...

  7. MongoDB安装(Linux)

    下载文件 http://downloads.mongodb.org/linux/mongodb-linux-i686-static-2.5.0.tgz 解压: tar -zxvf mongodb-li ...

  8. sql sever 2000

    sql sever 2000安装图解 浏览:15396 | 更新:2011-12-14 16:33 1 2 3 4 5 6 7 分步阅读 做为入门系统管理员,sqlsever2000是必会项目,因为市 ...

  9. Hibernate逍遥游记-第8章 映射组成关系(<component>、<parent>)

    一. 1. <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate ...

  10. C#基础精华08(反射,程序集)

    什么是程序集? 程序集是.net中的概念. .net中的dll与exe文件都是程序集.(exe与dll的区别?) 程序集(Assembly),可以看做是一堆相关类打一个包,相当于java中的jar包( ...