[UML]UML系列——包图Package

2023-05-16

系列文章

      [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 }  
View Code

程序演示:命名空间(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 }  
View Code

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

总结

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 如何使用 Golang 包以外的名称构建可执行文件

    是否可以构建 安装 获取等 名为的可执行文件foobar如果我的 Golang 包名称是以下之一 github com username go foobar github com username foobar tools and has
  • 创建Python包并导入模块

    我正在尝试编写我的第一个 Python 包 几乎所有模块都需要使用 NumPy 我应该写吗import numpy在每个模块中或者包中是否有某个地方我可以将其导入一次 以便每个模块都可以使用它 最好的方法是什么 是的 只需将其导入到需要的地
  • Nuget 包有什么意义?

    也许我在这里做错了什么或者表达了纯粹的无知 但我真的看不出 Nuget 包有什么好处 我最近决定安装一些 Nuget 包来替换我的应用程序中的静态 DLL 当我检查包创建的文件夹时 它们似乎包含许多不同版本的 DLL 所有这些都嵌套在一系列
  • 显示除“<>”或“<>”之外的 UML 用例图的依赖关系

    除了 扩展 或 包含 之外 我们如何显示用例之间的简单依赖关系 例如 我们想说用例 1 依赖于由用户 1 完成的用例 2 可以用一个简单的箭头来实现吗 向哪个方向 是的 还有其他依赖项 直接连接到用例的类的完整列表是 UML 2 5 标准的
  • 哪些脚本会进入 Python 包的 bin 文件夹?

    我正在从 Learn Python the Hard Way 及其中提到的练习之一中学习 Python 包 在bin目录下放置一个可以运行的脚本 对我来说 这似乎有点模糊 我不太确定 bin 文件夹中会包含什么样的脚本 搭便车者的包装指南
  • 在我的 Mac 上使用 python 3.9 安装 Pandas 和 yfinance 时出现问题

    我正在尝试使用 python m pip install yfinance 命令来安装 yfinance 该命令引用了 python 3 9 0 当我尝试这样做时 我收到以下信息 Collecting yfinance Using cach
  • 用例可以没有参与者吗?

    我正在研究全自动系统的用例图 外部系统只会触发该系统的一个用例 大多数其他用例都是计划任务并由计时器调用 我有一个由计时器调用的用例 它包含并扩展了其他两个用例 当我编写用例描述时 谁将成为 UC 2 和 UC 3 的参与者 用例可以在没有
  • 这是一个有效的 java 包名称吗? [复制]

    这个问题在这里已经有答案了 可能的重复 您在 Java 中的个人 爱好项目中使用什么包命名约定 https stackoverflow com questions 292169 what package naming convention
  • Eclipse:如何安装 UML2 工具

    我想尝试 UML2 Tools for Eclipse 如图所示本教程 http www vogella de articles UML article html 我目前拥有面向 Java EE 开发人员的 Eclipse 3 6 Heli
  • XMI 2.1.1 的 XSD

    我必须使用 JAXB 解析 XMI 文件 xmi 版本 2 1 1 为此 我必须生成与 XMI 文件相对应的 Java 类 因此 我需要 xmi 文件的 shema 定义才能使用 jxc 工具执行此操作 我希望有人知道在哪里可以找到这个文件
  • 使用“npm install”的漏洞问题

    我已经使用安装了一个快速服务器express coserver命令 然后我使用 npm install 命令来安装其他节点包 依赖项 但我得到了这个结果 npm audit security report Manual Review Som
  • Delphi:如果我在项目中使用包,为什么“使用调试 DCU”会变得无效?

    我正在构建一个使用 JVCL 插件系统的项目 该系统依赖于运行时 Delphi 包 自从我将它添加到我的项目中后 调试就变成了一场噩梦 因为我不再能够单步跟踪源代码任何 VCL 或 RTL 单元 它们在调试器中都被标记为灰点 当相关函数出现
  • 在 Papyrus UML 模型中使用 MARTE GQAM 构造型

    我正在尝试使用 MARTE GQAM 构造型来构造模型的某些元素 但在为其某些属性赋值时遇到麻烦 例如 我将两条生命线之间的消息定型为 我想为其 hostDemand 属性分配一个值 该属性应为 NFP Duration 实例 我看不到如何
  • 关联注入还是依赖注入?

    我正在研究依赖注入模式 我看过很多例子 其中一个典型的例子就是以XxxService XxxRepository为例 但我认为 根据UML概念 类XxxRepository应该是类XxxService的关联 为什么不称这种情况为关联注入 但
  • 管理 2 个以上具有依赖关系的 Nodejs 包的开发

    我正在开发 2 个 node js 包 每个包都在自己的 git 存储库中管理 包裹B取决于套餐A 所以我的本地目录结构如下所示 A1 B node modules A2 如果我更改本地代码A1 我想测试一下B在将其推送到公共存储库之前 我
  • Dia:图表编辑器:盒子对象的限制?

    如标题所示 我尝试为 hte 3d 图形引擎 ogre3d 开发尽可能少的方案 问题是大图方案 Ogre Root 类需要相当多的从它下降的箭头 用关系箭头连接框的模型是它们只能通过边界周围的特定点 称为 关节 或其他东西 进入 退出 但现
  • UML三元关联实现java代码[重复]

    这个问题在这里已经有答案了 三元关联是结构关系 指定一个事物的对象连接到其他两个事物的对象 我理解这种关系 但我不知道如何实现显示这三个类之间关联的方法 让我们考虑下面的例子 项目有许多使用特定编程的开发人员 语言促进发展 开发人员使用特定
  • Android:从 Android Java 源代码创建 UML [已关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个可以从我的 Java Android 源代码自动创建 Uml 的程序 我测试过ArgoU
  • “以下对象被‘package:xxx’屏蔽”是什么意思?

    当我加载包时 我收到一条消息 The following object is masked from package xxx 例如 如果我加载testthat http www rdocumentation org packages tes
  • 如何将我的包导入分组到单个自定义包中?

    通常当我编写 perl 程序时 我曾经包含以下包 use strict use warnings use Data Dumper 现在 我想像这样 我不会为每个程序都包含所有这个包 为了那个原因我会将这些全部打包在我自己的包中 喜欢跟随 m

随机推荐

  • 游戏中的帧同步要求的计算一致性——定点数(Fixed Point)

    最近做了一款帧同步游戏 xff0c 其寻路算法采用了RVO算法 但是由于是移动端的游戏 需要在不同的设备上运行 xff0c 其所有运算必须符合一致性 即所有客户端运算出来的结果必须一致 但是由于浮点数的特性 xff0c 具有误差 xff0c
  • 敏捷测试驱动模式-项目质量保障体系

    结合敏捷项目管理 xff0c 测试驱动模式 xff0c 让测试跑起来 我给这套体系的定义就是 保障质量的同时保证项目进度 xff0c 四个节点及时反馈及时沟通 xff0c 有效的让产品 研发和测试都动起来 xff0c 避免任意一方的停滞 质
  • angularjs自定义指令函数传参

    问题描述 在编写导入指令的时候 xff0c 需要将函数绑定到指令中 xff0c 并传入一个参数 初步实现 首先指令的js文件如下 xff0c 基本的绑定参数和绑定函数 xff0c 没有什么说的 xff1a angular module 39
  • 浅谈JSONObject解析JSON数据

    个人博客同步文章 https mr houzi com 2018 06 根据一段天气API来说一下JSONObject如何解析json数据 xff0c 尽管现在在开发中使用Gson等 xff0c 对于像我这样初次使用Java做开发的小白 x
  • 能ping通,但是不能wget或curl

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 当出现http接口请求超时时 xff0c 可以从以下几个方面排查问题 xff1a 检查接口服务本身是否正常 xff1b 检查接口所在服务器的防火墙是否开启 xff0c 尝试
  • R语言选择特定的行,对某一列排序

    R语言的数据框跟MySQL 中的表很像 根据某一列的特定值选择相应的行 d是个数据框 xff0c 有一列的名字是name d d name 61 61 34 95 34 这样就选中了 name为 95 的所有行 m 是个数据框 xff0c
  • excel表格公式无效、不生效的解决方案及常见问题、常用函数

    1 表格公式无效 不生效 使用公式时碰到了一个问题 xff0c 那就是公式明明已经编辑好了 xff0c 但是在单元格里不生效 xff0c 直接把公式显示出来了 xff0c 网上资料说有4种原因 xff0c 但是我4种都不是 xff0c 是第
  • JVM_栈详解一

    1 Java虚拟机栈 2 栈的存储单位 栈中存储什么 xff1f 每个线程都有自己的栈 xff0c 栈中的数据都是以栈帧 xff08 Stack Frame xff09 的格式存在 在这个线程上正在执行的每个方法都各自对应一个栈帧 xff0
  • EntLib 3.1学习笔记(6) : Security Application Block

    http www microsoft com china MSDN library enterprisedevelopment softwaredev dnpag2entlib mspx mfr 61 true http msdn2 mic
  • Delphi文件操作所涉及的一些函数 附例子

    判断文件是否存在 FileExists 判断文件夹是否存在 DirectoryExists 删除文件 DeleteFile Windows DeleteFile 删除文件夹 RemoveDir RemoveDirectory 获取当前文件夹
  • 排序算法

    include lt iostream gt include lt cstdlib gt include lt cstdio gt include lt time h gt using namespace std 插入排序 void Ins
  • C++应用中调用YOLOv3(darknet)进行目标检测

    YOLOv3论文 xff1a https pjreddie com media files papers YOLOv3 pdf 官网和代码 xff1a https pjreddie com darknet yolo属于one stage x
  • DJI开发之航线重叠率的计算

    介绍 无人机在规划一块区域的时候 xff0c 我们需要手动的给予一些参数来影响无人机飞行 xff0c 对于一块地表 xff0c 无人机每隔N秒在空中间隔的拍照地表的一块区域 xff0c 在整个任务执行结束后 xff0c 拍到的所有区域照片能
  • MODBUS MASTER RTU在STM32上的实现

    MODBUS MASTER RTU在STM32上的实现 1 概述 最近需要将几个信号采集模块通过总线串联起来 xff0c 这样便于系统模块化 故将目光关注到了工业上经常使用的modbus协议 modbus协议是一种一主多从的拓扑结构 xff
  • 基于HttpClient的HttpUtils(后台访问URL)

    最近做在线支付时遇到需要以后台方式访问URL并获取其返回的数据的问题 xff0c 在网络上g了一把 xff0c 发现在常用的还是Apache的HttpClient 因为以经常要用到的原故 xff0c 因此我对其进行了一些简单的封装 xff0
  • micropython安装ros_ROS2与STM32入门教程-microROS的freertos版本

    ROS2与STM32入门教程 micro ros的freertos版本 说明 xff1a 介绍如何安装使用micro ros 测试开发板 xff1a olimex stm32 e407 步骤 xff1a 安装ros2版本foxy xff0c
  • C#中通过com组件操作excel不能关闭的问题

    问题 xff1a 当用如下代码操作完Excel xff0c 虽然调用了Application的Quit 方法 xff0c 但发现Excel进程并没退出 object missing 61 System Reflection Missing
  • 交叉编译的概念及交叉编译工具的安装

    目录 一 什么是交叉编译 二 为什么要交叉编译 xff1f 三 交叉编译链的安装 四 相关使用方法 五 软连接 一 什么是交叉编译 交叉编译是指将一种编程语言编写的程序编译成另一种编程语言的程序 xff0c 通常是在不同的操作系统或硬件环境
  • .cn根服务器被攻击之后

    如果是互联网行业的人员应该知道 xff0c 8月25日凌晨 xff0c 大批的 cn 域名的网站都无法访问 xff0c 当然包括weibo cn等大型网站 个人比较奇怪的一件事情是 xff0c 微博PC网页版是 www weibo com
  • [UML]UML系列——包图Package

    系列文章 UML UML系列 用例图Use Case UML UML系列 用例图中的各种关系 xff08 include extend xff09 UML UML系列 类图Class UML UML系列 类图class的关联关系 xff08