zoukankan      html  css  js  c++  java
  • 包图Package

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

           

    命名空间的嵌套

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

     View Code

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

     View Code
     View Code
    复制代码
     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、 显示包中的元素

    总结

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

    img 作者:Wolfy
  • 相关阅读:
    day22 Python shelve模块
    day22 Python pickle模块
    day22 Python sys模块
    day22 Python os模块
    day22 Python random模块
    day22 Python 时间模块
    day21 Python 实现的深度优先搜索实现迷宫算法
    day21 Go 实现的深度优先搜索实现迷宫算法
    杂篇
    杂篇
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3431248.html
Copyright © 2011-2022 走看看