<七>面向对象分析之UML核心元素之包
一:基本概念
---->包是一种容器,如同文件夹一样。它将某些信息分类。形成逻辑单元
---->包是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核心元素之包的更多相关文章
- <四>面向对象分析之UML核心元素之用例
一:基本概念 --->用例定义了一组用例实例,其中每个实例都是系统所执行一系列操作,这些操作生成特定主角可以观测的值. --->所谓用例,就是一件事情,要完成这 ...
- <十>面向对象分析之UML核心元素之关系
关系 --->在UML中关系是非常重要的语义,它抽象出对象之间的联系,让对象构成特定的结构. 一,关联关系(association)
- <九>面向对象分析之UML核心元素之设计类,类,属性,方法,可见性
设计类
- <五>面向对象分析之UML核心元素之边界
一:基本概念
- <八>面向对象分析之UML核心元素之分析类
一:基本概念 ---->在那大数项目中,分析类是被忽视的一种非常有用的元素. ---->分析类用于获取系统中主要的“职责簇”,他们代表系统的原型类,是系统必须处 ...
- <三>面向对象分析之UML核心元素之参与者
一:版型 --->在UML里有一个概念叫版型.有些书里也称类型,构造型. --->这个概念是对一个UML元素基础定义的扩展.在同一个元素基础定义的基础上赋予特别 ...
- <十二>面向对象分析之UML核心元素之节点和设备
节点,设备
- <六>面向对象分析之UML核心元素之业务实体
一:基本概念
- <十一>面向对象分析之UML核心元素之组件
组件
随机推荐
- Unity3D脚本中文系列教程(十六)
Unity3D脚本中文系列教程(十五) ◆ function OnPostprocessAudio (clip:AudioClip):void 描述:◆ function OnPostprocess ...
- POJ 1724 Roads
题意:有R条路,每条路都有一定的路长和花费,问在总的花费小于一定的值的情况下,从1到N的最短路程 注意:这里两点之间单向边,且可能存在很多条路,所以只能用邻接表存储.思路:用dijks ...
- 【hadoop2.6.0】一句话形容mapreduce
网上看到的: We want to count all the books in the library. You count up shelf #1, I count up shelf #2. Th ...
- js正则函数match、exec、test、search、replace、split使用介绍
match() 使用正则表达式模式对字符串执行查找,并将包含查找的结果作为数组返回. stringObj.match(rgExp) stringObj 必选项.对其进行查找的 String 对象或字符 ...
- [主席树]SPOJ DQUERY
题目链接 题意:n个数 m个查询 查询的是[l, r]区间内不相同的数的个数 没有修改,因此静态的主席树就好了 将重复的元素建树即可 query的时候加起来,用区间长度(r-l+1)去减就是答案 (q ...
- [转]Ubuntu 常用快捷键10个
转自:http://www.linuxeden.com/html/news/20100613/103374.html 1.前一个后一个工作区的切换 如果你经常使用工作区,那你就可以用Ctrl + Al ...
- SpingMVC中利用BindingResult将错误信息返回到页面中
SpingMVC中利用BindingResult将错误信息返回到页面中. ActionFrom中: private String name; private String password; get( ...
- SRAM与SDRAM的区别
http://www.cnblogs.com/spartan/archive/2011/05/06/2038747.html SDRAM SDRAM(Synchronous Dynamic Rando ...
- 汉诺塔算法的递归与非递归的C以及C++源代码
汉诺塔(又称河内塔)问题其实是印度的一个古老的传说. 开天辟地的神勃拉玛(和中国的盘古差不多的神吧)在一个庙里留下了三根金刚石的棒,第一根上面套着64个圆的金片,最大的一个在底下,其余一个比一 个小, ...
- iOS 开发--github的demo
令人惊讶的是,YYText 虽然代码量很大(超过一万行),但它只是 ibireme 的作品之一.ibireme 利用业余时间完成了 YYKit 工具库,包括: YYModel — 高性能的 iOS J ...