包图Package
[UML]UML系列——包图Package
系列文章
[UML]UML系列——用例图中的各种关系(include、extend)
[UML]UML系列——类图class的关联关系(聚合、组合)
[UML]UML系列——类图class的实现关系Realization
引言
在windows中文件夹有什么作用?
1、 对文件进行分类管理
2、避免了命名冲突
包的作用
一个程序往往包含了很多类,那么如何管理这些类就成了一个需要解决的问题(分组机制)。
这些类可能由不同的程序员进行建立,当把这些类合并成一个大系统时,往往会产生命名冲突(类名冲突)。
包的两个作用:分组机制,命名空间。
java:包(package)
c#:命名空间(namespace)
c#中定义命名空间:
namespace 命名空间名{......}
c#中引入命名空间:
using 命名空间名;

命名空间的嵌套
程序中的命名空间就如同文件和文件夹。文件夹包含许多文件和其他文件夹,同样,命名空间也可以包含其他命名空间。
程序演示:命名空间(code/space)

1 using System;
2 using System.Collections.Generic;
3 using System.Text;
4 using space1;
5 using space2;
6 namespace space3 //第三个命名空间
7 {
8 class Program
9 {
10 static void Main(string[] args)
11 {
12
13 DownCount dc = new DownCount(10); //倒数计数器对象
14 UpCount uc = new UpCount(10); //正数计数器对象
15 }
16 }
17 }

如果去掉using space1; using space2;
这两行应这样写:
space1.DownCount dc = new space1.DownCount(10);
space2.UpCount uc = new space2.UpCount(10);
包的符号

包的内容组织

提示:一个元素只能属于一个包
包内元素的可见性

public(+): 可在其他任何包中使用
private(-): 只能在该包中使用
protected(#): 可以在该包和该包的子包中使用
包的导入

当包A将包B导入时,包A中的元素可以直接访问包B中的元素,而不必在每次使用时用完整的路径名。

导入包时应注意的几个问题

1 namespace N1
2 {
3 class class A
4 namespace N2
5 {
6 class classB{…… }
7 class classC{…… }
8 }
9 namespace N3
10 {
11 class classB{…… }
12 class classD{…… }
13 }
14 }

未导入时,应使用完全限定名:
N1.N3.classD d=new N1.N3.classD();
问题1:using语句只能导入命名空间中的类型成员,不能导入命名空间中的嵌套命名空间。
1 using N1
2 namespace N4
3 {
4 //只能使用classA
5 }
问题2:在相同的命名空间中不能存在名称相同的类或命名空间;如果类或命名空间位于不同的命名空间中,它们可以具有相同的名字。

1 namespace N1
2 {
3 class class A
4 namespace N2
5 {
6 class classB{…… }
7 class classC{…… }
8 }
9 namespace N3
10 {
11 class classB{…… }
12 class classD{…… }
13 }
14 }

问题3:一个命名空间可在多个源代码文件中多次声明,但是,只要它们的完全限定名相同,就认定是同一个命名空间。

1 namespace N1
2 {
3 class class A
4 namespace N2
5 {
6 class classB{…… }
7 class classC{…… }
8 }
9 }
10
11 namespace N1
12 {
13 namespace N3
14 {
15 class classB{…… }
16 class classD{…… }
17 }
18 }

问题4:如果使用using语句导入的多个命名空间中包含了同名的类,则不能直接通过类型名来使用这些类,所以要使用类型的完全限定名

1 using N1.N2; //引入N1
2 using N1.N3; //引入N2
3 namespace N3
4 {
5 class N1.N2 .ClassB……
6 class N1.N3 .ClassB……
7 }

包图的Rose建模
1、新建包

2、向包中添加类
方法1:在"浏览器"中将已经存在的类拖到包中
方法2:在"浏览器"中新建类 方法:右击包名->new->class

3、设置类在包中的可见性
方法:在浏览器中双击类,弹出下窗,在Export Control里面选择:

4、将包拖到绘图区

5、 显示包中的元素


总结
包图的相关就介绍到这里,包图按字面意思也好理解,更像一个容器。
![]() |
作者:Wolfy |
包图Package的更多相关文章
- [UML]UML系列——包图Package
系列文章 [UML]UML系列——用例图Use Case [UML]UML系列——用例图中的各种关系(include.extend) [UML]UML系列——类图Class ...
- Python设计模式 - UML - 包图(Package Diagram)
简介 包图是对各个包及包之间关系的描述,展现系统中模块与模块之间的依赖关系.一个包图可以由任何一种UML图组成,可容纳的元素有类.接口.组件.用例和其他包等.包是UML中非常常用的元素,主要作用是分类 ...
- UML精粹4 - 对象图,包图,部署图,用例
对象图object diagram 对象图是某个时间点上的对象在系统中的快照,也经常被称为实例图.一般在展示组合对象结构时比较有用.例如 组合结构的类图 一个时刻的对象图 包图package diag ...
- 【UML】NO.49.EBook.5.UML.1.009-【UML 大战需求分析】- 包图(Package Diagram)
1.0.0 Summary Tittle:[UML]NO.49.EBook.1.UML.1.009-[UML 大战需求分析]- 包图(Package Diagram) Style:DesignPatt ...
- 使用包图 (UML Package Diagram) 构建模型架构
包图用于以包包含层次结构的形式显示模型的组织方式.包图还可以显示包包含的模型元素以及包与其包含的模型元素之间的依赖关系. 在项目开发中,模型元素可能会很快达到大量数量,因此需要以某种方式构建它们,即使 ...
- UML:包图
什么是包图?包图是对UML图进行“打包”,按照你期望的方式进行组织的一种图.包图用于展示宏观上的内容.往往利用包图对类进行“打包”,但包图其实可以对任何UML图进行“打包”.包图是逻辑上的概念,你可以 ...
- UML 结构图之包图 总结
[注] 本文不是包图的基础教程, 只是包图的图形总结. 学习UML图形 推荐阅读<UML参考手册>第2版. http://www.umlchina.com/ 推荐微软的开发软件设计模型 h ...
- UML-类图,包图
UML构造设计模型 一.类图 二.包图 三.组件图 四.部署图 一.类图 1.类:类由三格表示:类名,类的属性,类的操作 类名: 首字母大学 ...
- UML对象图和包图
UML九已经介绍过的基本图,然后,我们再来看看对象图和包图. 一.对象图 谈到对象.我们不得不说一下对象.对象(Object)是对象类的实例(Instance),用于模型化特定的实体.对象是唯一的. ...
随机推荐
- 第10章 外观模式(Façade Pattern)
原文 第10章 外观模式(Façade Pattern) 概述: 在软件开发系统中,客户程序经常会与复杂系统的内部子系统之间产生耦合,而导致客户程序随着子系统的变化而变化.那么如何简化客户程序 ...
- codeforces 438D
在大大推荐下这个标题不明的人做.而我的最后一个非常喜欢的段树,因此,愤怒出手.认为基本上相同.大值,当最大值小于取模时能够剪枝. 今后再遇到此类问题算是能攻克了 // file name: d.cpp ...
- CSS浏览器兼容性问题集()两
11.非常适合 高度适合于被改变时所述内目标高度的外层的高度不能自己主动调节,尤其是排队对象时margin 要么paddign 时. 例: #box {background-color:#e ...
- JavaScript模块化编程之require.js与sea.js
为什么要模块化:当今,网站以不再是一个简单的页面,JavaScript也不再是做一些简单的脚本验证,随着WEB.20时代到来,前端工程师面临的必将是越来越庞大的JavaScript代码,越来越复杂的内 ...
- oracle_powerdesinger逆向工程 , PDM 文件 注释到name的完美解决方案 comment2name
1. 从oracle 到 PDM文件 逆向工程中 ,需要注意 去掉“” ,这个百度下很多帖子,用于去掉引号 2. 从注释copy到name运行脚本会有个问题就是 ,有些注释太长,不美观 解决方案, ...
- javascript中数组常用方法总结
原文:javascript中数组常用方法总结 在javascript的基础编程中,数组是我们最常遇到的,那么数组的一些常用方法也是我们必须要掌握的,下面我们总结一下数组中常用的方法. toString ...
- Linux_修改创建文件夹时默认权限(修改为能上传)
1:查看当前权限 umask 0022 意思就是权限为:777-022 =755 读 2:临时修改 umask 020 020 意思为:777-020=757 读写上传 3:永久修改 回到根目录 cd ...
- 私人定制javascript事件处理机制(浅谈)
看到园子里关于事件监听发表的文章,我都有点不好意思写了.不过想想我的题目以私人定制作开头也就妥妥地写吧. 事件相关概念 1.事件类型 发生事件的字符串 有传统事件类型 比如表单.window事件等 D ...
- 今天才知道css hack是什么
先来个冷笑话:一晚下班回家,一民警迎面巡逻而来.突然对我大喊:站住! 民警:int类型占几个字节? 我:4个. 民警:你可以走了. 我感到很诧异. 我:为什么问这样的问题? 民警:深夜还在街上走,寒酸 ...
- HDU 3523 Image copy detection(KM最大匹配)
HDU 3523 Image copy detection 题目链接 题意:这题事实上题意读懂就简单了,说白了就是1-n放到1-n列,每列的值为每列上数字和该数字的差的绝对值,然后求总和最小 思路:就 ...
