UML系列——包图Package

原文地址: https://www.cnblogs.com/wolf-sun/p/3430150.html

系列文章

UML系列——用例图Use Case
UML系列——用例图中的各种关系(include、extend)
UML系列——类图Class
UML系列——类图class的关联关系(聚合、组合)
UML系列——类图class的依赖关系
UML系列——类图class的泛化关系
UML系列——类图class的实现关系Realization

引言

在windows中文件夹有什么作用?
1、 对文件进行分类管理
2、避免了命名冲突

包的作用

一个程序往往包含了很多类,那么如何管理这些类就成了一个需要解决的问题(分组机制)。

这些类可能由不同的程序员进行建立,当把这些类合并成一个大系统时,往往会产生命名冲突(类名冲突)。

包的两个作用:分组机制,命名空间。

java:包(package)

c#:命名空间(namespace)

c#中定义命名空间:

namespace 命名空间名{......}

c#中引入命名空间:

using 命名空间名;


1.png

命名空间的嵌套

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

namespace  N1
{
     namespace N2
    {
        class  ClassA{…… }
        class  ClassB{…… }
    }
   ……
}

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

namespace space1   //第一个命名空间
{
    class DownCount  //倒数计数器
    {
        int v;
        public DownCount(int n) 
        { 
           v = n; 
        } 
        public void reset(int n) //计数器置初始值
        { 
           v = n; 
        }
        public int count()       //倒数计数方法
        {
            if (v > 0) return v--;
            else return 0;
        }
    }
    //在此可建立其他的类
}
namespace space2   //第二个命名空间
{
    class UpCount  //正数计数器
    {
        private int v;
        public int goal;
        public UpCount(int n)  //从0至n输出
        {
            goal= n;
            v = 0;
        }
        public void reset(int n)
        {
            goal = n;
            v = 0;
        }
        public int count()
        {
            if (v < goal) 
                return v++;
            else 
                return goal;
        }
    }
    //在此可建立其他的类
}
using System;
using System.Collections.Generic;
using System.Text;
using space1;
using space2;
namespace space3   //第三个命名空间
{
    class Program
    {
        static void Main(string[] args)
        {
            
            DownCount dc = new DownCount(10);  //倒数计数器对象
            UpCount uc = new UpCount(10);       //正数计数器对象
      }
    }
}

如果去掉using space1; using space2;
这两行应这样写:
space1.DownCount dc = new space1.DownCount(10);

space2.UpCount uc = new space2.UpCount(10);

包的符号

2.png

包的内容组织

3.png

提示:一个元素只能属于一个包

包内元素的可见性

4.png

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

包的导入

5.png

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

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

namespace  N1
{
   class  class A
   namespace N2
    {
       class  classB{…… }
       class  classC{…… }
     }
     namespace N3
    {
       class  classB{…… }
       class  classD{…… }
     }
   }

未导入时,应使用完全限定名:
N1.N3.classD d=new N1.N3.classD();

问题1:using语句只能导入命名空间中的类型成员,不能导入命名空间中的嵌套命名空间。

using N1
namespace N4
{ 
    //只能使用classA
}

问题2:在相同的命名空间中不能存在名称相同的类或命名空间;如果类或命名空间位于不同的命名空间中,它们可以具有相同的名字。

namespace  N1
{
   class  class A
   namespace N2
    {
       class  classB{…… }
       class  classC{…… }
     }
     namespace N3
    {
       class  classB{…… }
       class  classD{…… }
     }
   }

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

namespace  N1
{
   class  class A
   namespace N2
    {
       class  classB{…… }
       class  classC{…… }
     }
}

namespace  N1
{
   namespace N3
    {
       class  classB{…… }
       class  classD{…… }
     }
   }

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

using  N1.N2;    //引入N1
using  N1.N3;    //引入N2
namespace  N3
{
    class N1.N2 .ClassB……
    class N1.N3 .ClassB……
}

总结

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,634评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,951评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,427评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,770评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,835评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,799评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,768评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,544评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,979评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,271评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,427评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,121评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,756评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,375评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,579评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,410评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,315评论 2 352