[UML]UML系列——包图Package

系列文章

[UML]UML系列——用例图Use Case

      [UML]UML系列——用例图中的各种关系(include、extend)

      [UML]UML系列——类图Class

      [UML]UML系列——类图class的关联关系(聚合、组合)

      [UML]UML系列——类图class的依赖关系

 [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的更多相关文章

  1. [UML]UML系列——包图Package

    系列文章 [UML]UML系列——用例图Use Case       [UML]UML系列——用例图中的各种关系(include.extend)       [UML]UML系列——类图Class   ...

  2. Python设计模式 - UML - 包图(Package Diagram)

    简介 包图是对各个包及包之间关系的描述,展现系统中模块与模块之间的依赖关系.一个包图可以由任何一种UML图组成,可容纳的元素有类.接口.组件.用例和其他包等.包是UML中非常常用的元素,主要作用是分类 ...

  3. UML精粹4 - 对象图,包图,部署图,用例

    对象图object diagram 对象图是某个时间点上的对象在系统中的快照,也经常被称为实例图.一般在展示组合对象结构时比较有用.例如 组合结构的类图 一个时刻的对象图 包图package diag ...

  4. 【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 ...

  5. 使用包图 (UML Package Diagram) 构建模型架构

    包图用于以包包含层次结构的形式显示模型的组织方式.包图还可以显示包包含的模型元素以及包与其包含的模型元素之间的依赖关系. 在项目开发中,模型元素可能会很快达到大量数量,因此需要以某种方式构建它们,即使 ...

  6. UML:包图

    什么是包图?包图是对UML图进行“打包”,按照你期望的方式进行组织的一种图.包图用于展示宏观上的内容.往往利用包图对类进行“打包”,但包图其实可以对任何UML图进行“打包”.包图是逻辑上的概念,你可以 ...

  7. UML 结构图之包图 总结

    [注] 本文不是包图的基础教程, 只是包图的图形总结. 学习UML图形 推荐阅读<UML参考手册>第2版. http://www.umlchina.com/ 推荐微软的开发软件设计模型 h ...

  8. UML-类图,包图

    UML构造设计模型   一.类图  二.包图   三.组件图   四.部署图   一.类图     1.类:类由三格表示:类名,类的属性,类的操作              类名: 首字母大学     ...

  9. UML对象图和包图

    UML九已经介绍过的基本图,然后,我们再来看看对象图和包图.  一.对象图 谈到对象.我们不得不说一下对象.对象(Object)是对象类的实例(Instance),用于模型化特定的实体.对象是唯一的. ...

随机推荐

  1. 基于Android的ELF PLT/GOT符号和重定向过程ELF Hook实现(by 低端农业代码 2014.10.27)

    介绍 技术原因写这篇文章,有两种: 一个是在大多数在线叙述性说明发现PLT/GOT第二十符号重定向过程定向x86的,例<Redirecting functions in shared ELF l ...

  2. IEnumerable,IQueryable的区别

    IEnumerable,IQueryable之前世今生 IEnumerable<T>在.Net2.0中我们已经很熟悉了.你想要利用Foreach迭代吗?实现IEnumerable<T ...

  3. sql server 汉字的长度

    前几天改了人家程序中的一个小bug,就是输入时长度的校验问题.项目是.Net的,数据库是 sql server的.检查了一下,发现以前的人员把长度给控制小了,数据库中允许输入256的长度,而别人在as ...

  4. 做ACM该伤不起啊!!

    開始搞ACM啊!! ! .! ! ! ..! 从此踏上了尼玛不归路啊! !! !!! !!.!!! 谁特么跟劳资讲算法是程序设计的核心啊..! ! ! .  尼玛除了面试题就没见过用算法的地方啊!!! ...

  5. 从[java.lang.OutOfMemoryError: Java heap space]恢复

    出现java.lang.OutOfMemoryError: Java heap space该错误或者是程序问题,或者被分配到JVM内存真的是不够的. 一般来说都是能够事前可控解决的. 可是假设不可控的 ...

  6. android 卸载程序、清除数据、停止服务用法

    要实现卸载程序.清除数据.停止正在执行的服务这几大模块,如今将代码粗略总结例如以下: 主要运用到的类有 PackageManager ActivityManager ApplicationInfo R ...

  7. C# 打开指定文件或网址

    System.Diagnostics.Process.Start的妙用: 文件夹打开时自动选中一个文件,比如自动选中此目录下的指定文件方法: Process.Start("Explorer& ...

  8. MySQL引擎的相关知识

    MySQL数 据库引擎取决于MySQL在安装的时候是如何被编译的.要添加一个新的引擎,就必须重新编译MYSQL.在缺省情况下,MYSQL支持三个引 擎:ISAM.MYISAM和HEAP.另外两种类型I ...

  9. Linux常用命令汇总-速查

    对Linux新手有用的20个命令 对中级Linux用户有用的20个命令 对Linux专家非常有用的20个命令 20个最受欢迎的Linux命令 20个有趣的Linux命令

  10. NetMQ

    NetMQ发布订阅C#示例 NetMQ (ZeroMQ to .Net),ØMQ号称史上最快中间件.它对socket通信进行了封装,使得我们不需要写socket函数调用就能完成复杂的网络通信.和一般意 ...