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

简介

包图是对各个包及包之间关系的描述,展现系统中模块与模块之间的依赖关系。一个包图可以由任何一种UML图组成,可容纳的元素有类、接口、组件、用例和其他包等。包是UML中非常常用的元素,主要作用是分类、容纳其他元素。包与包之间的关系有泛化、细化和依赖,主要取决于包内部成员之间的关系。

包图建模步骤

    - 分析系统的模型元素,运用分层设计把概念、语义和逻辑上相近的元素包含在同一个包中

    - 对于每个包,分析包内每个元素的可访问属性,并标识出该元素的可见性

    - 确定包与包中元素之间的泛化、细化、依赖关系,相应处理重载、多重性及导入等关系

    - 分析包结构,对包进行refine, merge等操作

包图中的元素

包图中可以容纳很多元素,如类、接口、组件、注释等,这些元素在相应的UML图中都有涉及,这里主要介绍包元素。

  • 包名的位置:UML中使用文件夹的图标来表示包,包名可以放在第一栏,也可以放在第二栏

       放在第一栏

放在第二栏

   

  • 包名的格式:每个包都有一个字符串格式的包名唯一标识该包,其中包名的格式有两种:

    - 简单包名

    - 带路径包名

  • 可见性

      ‘+‘: public:对所有包可见

      ‘-‘: private:对本包之外不可见

      ‘#‘: protected:对本包的子包可见

  • 传递性:包与包之间的关系和可见性具有具有传递性

      - 关系传递:如果包A和包B之间存在关系,包B和包C之间存在关系,那么包A和包C之间也存在关系          

      - 可见性传递:根据包与包之间依赖关系的不同传递可见性

            - <<import>>因为添加为公有元素的原因所以可见性可以传递

            - <<access>>的可见性由于添加为私有元素的原因可见性不可传递

  • 构造特性:和类的构造性相似,就是在包名关键字旁加入<<xxx>>作为补充说明,UML提供了5种构造型来描述包的特性

      - <<system>>: 表示该包代表一个系统

      - <<subsystem>>: 表示该包代表一个子系统

      - <<facade>>: 表示该包是由其他包构成的一个视图

      - <<stub>>: 表示该包是一个代理包,该代理包为其他包提供公共服务

      - <<framework>>:表示该包代表一个框架

包图类的关系

  • 泛化:继承关系,跟类之间的泛化关系相似,表明是一个包家族

  • 细化:一个包中有另一个包中的所有元素,则第二个包是第一个包的细化

  • 依赖:一个包中引用到了另一个包,箭头从输入方包指向输出方包

     

      <<use>>:一种默认的包依赖关系,表示客户包中的元素以某种方式使用着提供者包中的公共元素

      <<import>>:最普遍的包依赖关系,表示提供者包中的公共元素被添加为客户包中的公共元素

      <<access>>:表示提供者包中的公共元素被添加为客户包中的私有元素

      <<merge>>:表示提供者包中的元素被扩展为客户包中的元素

      <<trace>>:表示一个包的历史版本发展为另一个包的进化版本

包图的高级特性

  • 分层:根据职责分层,目的是为了解耦。双向箭头表示相互依赖。

  

  • 嵌套:包里面是可以有包的。但应尽量避免使用多层嵌套包,2-3层就好

包图示例

以书店在线订购系统为例

包图的注意事项

    - 若包被撤销,则其中的元素也会被撤销掉

    - 合理最小化包之间的依赖

    - 合理最小化每个包中public, protected元素的个数及最大化private元素个数

    - 避免包之间的循环依赖

    - 根据类之间的依赖关系对包进行分层、分组、合并、细化

    - 包之间关系遵循高内聚、低耦合的特性

原文地址:https://www.cnblogs.com/coolstream/p/9572852.html

时间: 2024-12-27 08:44:54

Python设计模式 - UML - 包图(Package Diagram)的相关文章

Python设计模式 - UML - 类图(Class Diagram)

简介 类图是面向对象分析和设计的核心,用来描述系统各个模块中类与类之间.接口与接口之间.类与接口之间的关系,以及每个类的属性.操作等特性,一般在详细设计过程中实施. 类图本身就是现实世界的抽象,是对系统中各种概念进行建模,并描绘出它们之间的关系,所以类图关注的对象就是元素及元素之间的关系. 类图建模步骤 - 抽象出类实体 - 识别出类的主要属性 - 画出类之间的关系 - 对各个类进行分析.梳理.设计 类图的元素 类图中包含以下几种模型元素:类.接口.关系.协作.注释.约束.包. 类 在UML的图

Python设计模式 - UML - 组件图(Component Diagram)

简介 组件图又称构建图,用于显示系统各组件及各组件关系的物理视图. 组件图通常包括组件.接口.关系.端口和连接器,用来显示程序代码中相应的模块.源文件或源文件集合之间的依赖和泛化关系. 组件图中的组件通常由类图中的一个或多个类(对象)实现为系统中的模块.源文件.过程文件或可执行文件,最终构成系统的绝大部分功能单元. 组件图建模步骤 - 确定系统有哪些对外接口或端口 - 确定系统要用到哪些组件,识别出系统中的重要模块.库文件.源代码文件.数据表或文件.可执行文件或文档等,将其建模为一个个组件 -

UML之包图(Package Diagram)

软件的架构设计,思路遵循由大及小.相较于Class Diagram,Package Diagram从更宏观的角度来展示软件的架构设计,主要体现在代码组织方面.Package Diagram对一些大型的项目特别有用.顺便说一句,良好的代码组织,对软件的可维护性至关重要,请认真的规划你的包结构.下文将简单介绍Package Diagram,主要分两块,什么是Package,以及Package之间的关系. 什么是Package 用最简单的方式来说,Package可以理解为文件夹(folder).代码的

Python设计模式 - UML - 总览

说到设计模式就不得不涉及建模思想,说到建模思想自然而然会应用UML,目前业界开源的UML工具很多,用起来也非常便捷.近几年来随着软件应用领域开发模式转向快速迭代试错,UML在敏捷开发,尤其是web及mobile开发领域应用越来越少. 就国内软件行业发展现状来说,稳定成熟的商业软件凤毛麟角,初具雏形的互联网App大行其道,竞争中的公司更看重的是快速占领市场,小团队快速迭代试错,而不是长期.精心打磨同一款软件产品,所以注重统一规范.充分需求分析.严密框架设计的UML显得相对繁琐,自然会被灵活敏捷的各

UML之类图(Class Diagram)

类图是类的静态关系描述图,简单来讲有两个方面,有哪些类,这些类之间的关系是什么?需要注意的是类图描述的是静态关系,动态行为的如流程,判断,循环等类图无法描述,需要搭配其它UML图. 类自身的描述 生物由细胞构成,类图由类构成,我们先看看类长什么样,如何描述.首先类有一个唯一的名字,通常用手写字母大写的英文字母表示,一班名字应该用名词来表示.类的内部有两个部分构成,数据部门和操作部门.数据部门也叫属性(Property),存储一些数据.状态.关联等信息,操作部门表示的是该类能够执行的操作(Oper

设计模式-UML类图的各符号含义(转)

UML类图的各符号含义 类图基本符号可拆分为虚线,箭头,实线,空心右三角,实心右三角,空心菱形和实心菱形.由这些基本的图形进行组合构成了类图的基本符号.这里要注意这几个符号的顺序,代表了类与类之间关系的耦合程 度.越向右耦合度越高. 其中虚线+箭头是表示即依赖的关系,实线+箭头表示关联的关系,虚线+空心右三角表示implements,实线+空心右三角表示的是泛化,即类的继承关系.实线+空心菱形表示的是聚合的关系,实线+实心菱形则表示 组合的关系. 另外一点是在看类图的时候要注意.类图的思想其实也

[设计模式]-UML类图的各符号含义

UML类图的各符号含义 类图基本符号可拆分为虚线,箭头,实线,空心右三角,实心右三角,空心菱形和实心菱形.由这些基本的图形进行组合构成了类图的基本符号.这里要注意这几个符号的顺序,代表了类与类之间关系的耦合程 度.越向右耦合度越高. 其中虚线+箭头是表示即依赖的关系,实线+箭头表示关联的关系,虚线+空心右三角表示implements,实线+空心右三角表示的是泛化,即类的继承关系.实线+空心菱形表示的是聚合的关系,实线+实心菱形则表示 组合的关系. 另外一点是在看类图的时候要注意.类图的思想其实也

java设计模式--UML类图

2016-06-07 22:46:16 下面简单介绍UML类图:(图是截取的,大家可以用UML工具去画) 1.描述类的类图 类:Person 属性:name   age   sex 访问权限:-  表示私有的private   +:表示公共的public  #:表示protected 方法: getName():String   setName(name:String)   getAge():int   setAge(age:int)   getSex():String   setSex(sex

Python设计模式 - UML - 部署图(Deployment Diagram)

简介 部署图也称配置图,用来显示系统中硬件和软件的物理架构.从中可以了解到软件和硬件组件之间的物理拓扑.连接关系以及处理节点的分布情况. 部署图建模步骤 - 找出需要进行部署的各类节点,如网络硬件设备.服务器硬件设备.及部署在硬件设备上的软件系统等 - 确定各类节点之间的连接关系及通信方式 - 从性能.可扩展性.可维护性.可移植性角度确定各类节点的数目和部署方式 - 绘制部署图,将artifact分配给各个节点 部署图主要元素 部署图中的主要元素有节点.物件和连接.其中节点根据其状态不同又有节点