[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 命名空间名;

       

命名空间的嵌套

      程序中的命名空间就如同文件和文件夹。文件夹包含许多文件和其他文件夹,同样,命名空间也可以包含其他命名空间。

1 namespace  N1
2 {
3      namespace N2
4     {
5         class  ClassA{…… }
6         class  ClassB{…… }
7     }
8    ……
9 }

程序演示:命名空间(code/space)

 1 namespace space1   //第一个命名空间
 2 {
 3     class DownCount  //倒数计数器
 4     {
 5         int v;
 6         public DownCount(int n)
 7         {
 8            v = n;
 9         }
10         public void reset(int n) //计数器置初始值
11         {
12            v = n;
13         }
14         public int count()       //倒数计数方法
15         {
16             if (v > 0) return v--;
17             else return 0;
18         }
19     }
20     //在此可建立其他的类
21 }

 1 namespace space2   //第二个命名空间
 2 {
 3     class UpCount  //正数计数器
 4     {
 5         private int v;
 6         public int goal;
 7         public UpCount(int n)  //从0至n输出
 8         {
 9             goal= n;
10             v = 0;
11         }
12         public void reset(int n)
13         {
14             goal = n;
15             v = 0;
16         }
17         public int count()
18         {
19             if (v < goal)
20                 return v++;
21             else
22                 return goal;
23         }
24     }
25     //在此可建立其他的类
26 }

 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、 显示包中的元素

总结

      包图的相关就介绍到这里,包图按字面意思也好理解,更像一个容器。

博客地址: http://www.cnblogs.com/wolf-sun/
博客版权: 本文以学习、研究和分享为主,欢迎转载,但必须在文章页面明显位置给出原文连接。
如果文中有不妥或者错误的地方还望高手的你指出,以免误人子弟。如果觉得本文对你有所帮助不如【推荐】一下!如果你有更好的建议,不如留言一起讨论,共同进步!
再次感谢您耐心的读完本篇文章。

转载:http://www.cnblogs.com/wolf-sun/p/3430150.html

时间: 2024-10-21 16:12:36

[UML]UML系列——包图Package的相关文章

UML学习:包图Package

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

[UML]UML系列——状态机图statechart diagram

系列文章 [UML]UML系列--用例图Use Case [UML]UML系列--用例图中的各种关系(include.extend) [UML]UML系列--类图Class [UML]UML系列--类图class的关联关系(聚合.组合) [UML]UML系列--类图class的依赖关系 [UML]UML系列--类图class的泛化关系 [UML]UML系列--类图class的实现关系Realization [UML]UML系列--包图Package [UML]UML系列--活动图activity

[UML]UML系列——时序图(顺序图)sequence diagram

系列文章 [UML]UML系列--用例图Use Case [UML]UML系列--用例图中的各种关系(include.extend) [UML]UML系列--类图Class [UML]UML系列--类图class的关联关系(聚合.组合) [UML]UML系列--类图class的依赖关系 [UML]UML系列--类图class的泛化关系 [UML]UML系列--类图class的实现关系Realization [UML]UML系列--包图Package [UML]UML系列--活动图activity

[UML]UML系列——协作图(通信图)collaboration diagram

原文:[UML]UML系列--协作图(通信图)collaboration diagram 系列文章 [UML]UML系列--用例图Use Case [UML]UML系列--用例图中的各种关系(include.extend) [UML]UML系列--类图Class [UML]UML系列--类图class的关联关系(聚合.组合) [UML]UML系列--类图class的依赖关系 [UML]UML系列--类图class的泛化关系 [UML]UML系列--类图class的实现关系Realization

[UML]UML系列——活动图activity diagram

系列文章 [UML]UML系列--用例图Use Case [UML]UML系列--用例图中的各种关系(include.extend) [UML]UML系列--类图Class [UML]UML系列--类图class的关联关系(聚合.组合) [UML]UML系列--类图class的依赖关系 [UML]UML系列--类图class的泛化关系 [UML]UML系列--类图class的实现关系Realization [UML]UML系列--包图Package 活动图的引入:先上实例       实例描述:

[UML]UML系列——类图class的泛化关系

系列文章       [UML]UML系列--用例图Use Case       [UML]UML系列--用例图中的各种关系(include.extend)       [UML]UML系列--类图Class       [UML]UML系列--类图class的关联关系(聚合.组合)       [UML]UML系列--类图class的依赖关系 泛化关系的引入       在现实生活中,有时会出现一类事物具有另一类事物的全部特点,除此之外还有自身的特点.       例如:        "不管

[UML]UML系列——类图class的实现关系Realization

系列文章       [UML]UML系列--用例图Use Case       [UML]UML系列--用例图中的各种关系(include.extend)       [UML]UML系列--类图Class       [UML]UML系列--类图class的关联关系(聚合.组合)       [UML]UML系列--类图class的依赖关系       [UML]UML系列--类图class的泛化关系 接口的概念        接口是一组没有实现的操作的集合.接口只提供操作的声明,不提供任何

UML包图学习

包图是UML中用类似于文件夹的符号表示的模型元素的组合,系统中的每个元素都只能为一个包所有,一个包可嵌套在另一个包中,使用包图可将相关元素归入一个系统,一个包中包含附属包.图表或单个元素.简单的来说,我们可以直接将包理解为命名空间,文件夹,是用来组织图形的封装,包图可以用来表述功能组命名空间的组织层次 那么为什么会出现"包"这个概念呢?我们知道,在面向对象软件开发的视角中,类显然是构件整个系统的基本构造块,但是对于庞大的应用系统而言,其包含的类不计其数,再加上类之间阡陌交通的关联关系.

[UML]UML系列——类图Class

相关文章       [UML]UML系列--用例图Use Case       [UML]UML系列--用例图中的各种关系(include.extend) 一.类图的概念及组成         1.类图的概念             类图是描述类.接口已经他们之间关系的图,它显示了系统中各个类的静态结构,是一种静态模型.         2.类图的组成            2种类元素(类和接口)            4种关系(依赖关系.实现关系.泛化关系和关联关系) 二.类的概念与表示符号