PowerDesigner面向对象建模-常用UML图

news2024/11/20 12:30:52

1 PowerDesigner简介

PowerDesigner最初由Xiao-Yun Wang(王晓昀)在SDP Technologies公司开发完成。PowerDesigner是Sybase的企业建模和设计解决方案,采用模型驱动方法,将业务与IT结合起来,可帮助部署有效的企业体系架构,并为研发生命周期管理提供强大的分析与设计技术。PowerDesigner独具匠心地将多种标准数据建模技术(UML、业务流程建模以及市场领先的数据建模)集成一体,并与 .NET、WorkSpace、PowerBuilder、Java™、Eclipse 等主流开发平台集成起来,从而为传统的软件开发周期管理提供业务分析和规范的数据库设计解决方案。此外,它支持60多种关系数据库管理系统(RDBMS)/版本。PowerDesigner运行在Microsoft Windows平台上,并提供了Eclipse插件。

Power Designer 是Sybase公司的CASE工具集,使用它可以方便地对管理信息系统进行分析设计,他几乎包括了数据库模型设计的全过程。利用Power Designer可以制作数据流程图、概念数据模型、物理数据模型,还可以为数据仓库制作结构模型,也能对团队设计模型进行控制。他可以与许多流行的软件开发工具,例如PowerBuilder、Delphi、VB等相配合使开发时间缩短和使系统设计更优化。

power designer是能进行数据库设计的强大的软件,是一款开发人员常用的数据库建模工具。使用它可以分别从概念数据模型(Conceptual Data Model)和物理数据模型(Physical Data Model)两个层次对数据库进行设计。在这里,概念数据模型描述的是独立于数据库管理系统(DBMS)的实体定义和实体关系定义;物理数据模型是在概念数据模型的基础上针对目标数据库管理系统的具体化。

------------参考百度百科

2 面向对象建模

面向对象模型 (OOM) 一个OOM包含一系列包,类,接口 , 和他们的关系。 这些对象一起形成所有的 ( 或部份) 一个软件系统的逻辑的设计视图的类结构。 一个OOM本质上是软件系统的一个静态的概念模型。

2.1面向对象的三种类

UML中将类分为三种:1.边界类(Boundry Class); 2.实体类(Entity Class); 3.控制类(Control Class);

类型说明示例
边界类(Boundry Class)边界类用于描述外部参与者与系统之间的交互。如界面、人机交互接口,设备接口等。

用户界面

系统接口设备接口

实体类(Entity Class)实体类对应系统需求中的每个实体,相当于每个对象Object的类,属性和行为与对象自身的属性和行为息息相关,对应保存到存储媒介中,如数据库、文件等等。

学生类

汽车类

商品类

控制类(Control Class)

控制类用于体现应用程序的执行逻辑,对应业务操作。

相当于MVC三层架构中的controller。

添加学生

添加商品

2.2 类图

2.2.1 类的基本信息

UML的类图是对象的抽象化,用于描述软件实体的构成情况,基本信息包括类名,属性,操作(方法)。

 属性和方法前面的符号为对应的保护级别

  • + :public
  • - :private
  • #:protected

2.2.2 创建类图

通过右键点击项目,然后添加新的面向对象模型:

选择添加类图

 选择类图标,然后在屏幕中间添加:

 双击类的图标进行编辑

2.2.3 类间的六种关系

关系定义语法符号

继承关系Generalization

泛化关系的一种,类和子类的关系,接口和子接口的关系extends

实线上的空心三角形箭头从子类指向超类

实现关系

Realization

类实现了一个接口。

一个类可以实现多个接口。

implements

虚线上的空心三角形箭头从类指向接口

依赖关系

一个类A使用到了另一个类B。

弱依赖,但类B的变化会影响类A

类B作为类A的方法的参数或者局部变量

虚线的箭头由类B指向类A

关联关系

强联系,有类A必然有类B;

单向关联,双向关联;

一对一,一对多,多对多;

两个类的关联,类和自身的关联;

类B作为类A的成员变量

单项关联(实线的箭头指向关联类):

 

双向关联(不带箭头的实线):

聚合关系

整体和部分,关联的一种特例。

生命周期可以不同。

同关联关系

空心菱形+实线箭头

组合关系

整体和部分,关联的一种特例。

各个部分具有相同的生命周期,是不可分离的。

同关联关系

实心菱形+实线箭头

关联的多重性:

  • n:  表示n
  • m..n:  m到n范围内的任意数值(包含m和n)
  • p..*:  从p到无从大的任意数值
  • *:  0..*的缩写
  • 0..1: 可选

 3.用例图

 3.1 用例图简介

用例图(英语:use case diagram)是用户与系统交互的最简表示形式,展现了用户和与他相关的用例之间的关系。

3.1.1 用例图的基本信息

内容说明示例
参与者用户用户、普通用户、管理员等
用例用椭圆表示的系统的一部分功能登陆,查看等等
子系统用来展示系统的一部分功能,这部分功能是紧密联系的订单系统、权限管理系统

 3.1.2 用例间的关系

关系说明表示

关联

参与者与用例之间的关系;

任何一方都可接收到消息。

无箭头实线

​ 

泛化

参与者之间或用例之间的关系

继承的关系

空心三角形箭头实线

​ 

包含

用例之间的关系

一个用例(基用例)包含其他用例(包含用例)具有的行为,其中包含用例中定义的行为将被插入基用例定义的行为中。

虚线箭头,带关键词<<include>>

扩展

用例之间的关系

一个用例(扩展用例)对另一个用例(基用例)行为的增强

虚线箭头,带关键字<<extends>>

3.1.3 示例:

3.2 创建用例图

选择面向对象模型,然后选择用例图

4 时序图

时序图(Sequence Diagram),又名序列图、循序图,是一种UML交互图。它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。它可以表示用例的行为顺序,当执行一个用例行为时,其中的每条消息对应一个类操作或状态机中引起转换的触发事件。

4.1 时序图的基本元素

元素说明示例
色(Actor)

 系统角色,可以是人或者其他系统,子系统

对象(Object)

对象代表时序图中的对象在交互中所扮演的角色,位于时序图顶部和对象代表。

对象一般包含以下三种命名方式:

第一种方式包含对象名和类名。

第二种方式只显示类名不显示对象名,即为一个匿名对象。

第三种方式只显示对象名不显示类名。

生命线(Lifeline)

生命线代表时序图中的对象在一段时期内的存在

对象下方的虚线
控制焦点(Activation)

控制焦点代表时序图中的对象执行一项操作的时期,在时序图中每条生命线上的窄的矩形代表活动期。它可以被理解成C语言语义中一对花括号“{ }”中的内容。

消息(Message)消息是定义交互和协作中交换信息的类,用于对实体间的通信内容建模,信息用于在实体间传递信息。

消息:

​​​​​​​ 返回值:

 

  

 4.2 时序图示例

4.2 创建时序图

面向对象模型,选择时序图:

 5 业务流程图(BMP)

软件的流程图。

5.1 创建业务流程图

选择新建业务流程图模型:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/680663.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python熟悉python基础语法,了解html网络结构,了解json格式数据,含有字符串

前言 Python网络爬虫是利用Python编写的程序&#xff0c;通过自动化地访问网页、解析html或json数据&#xff0c;并提取所需信息的技术。下面将详细介绍一些与Python网络爬虫相关的重要知识点。 1、Python基础语法&#xff1a; 变量和数据类型&#xff1a;学习如何声明变量以及…

使用R语言绘制富集条形图,轻松分析基因表达数据

一、引言 富集分析&#xff08;enrichment analysis&#xff09;是一种生物信息学方法&#xff0c;它可以帮助我们识别基因或其他的生物实体在某个特定的类别中过度表示的趋势。通俗来说&#xff0c;富集分析通过将基因分类到特定的集合中&#xff0c;然后根据基因在集合中的分…

万字长文带你深入理解JavaNIO并手动实现多人聊天室

NIO 网络编程 代码已同步至GitCode&#xff1a;https://gitcode.net/ruozhuliufeng/java-project.git Java NIO简介 IO概述 ​ IO的操作方式通常分为几种&#xff1a;同步阻塞BIO、同步非阻塞NIO、异步非阻塞AIO。 ​ &#xff08;1&#xff09;在JDK1.4之前&#xff0c;我们…

哈希表/散列表(HashTable)c++实现

目录 哈希表实现的思想 除留余数法 哈希冲突 第一种方法&#xff1a;探测法实现哈希表 探测法的思想 结点类 插入数据(insert) 冲突因子 数据扩容 哈希值 插入的代码实现以及哈希类 查找数据(find) 删除数据(erase) 第二种方法&#xff1a;拉链法实现哈希表 …

Kotlin~迭代器模式

概念 提供一种遍历集合元素的方法&#xff0c;而不暴露集合内部的实现。 角色介绍 iterator 迭代器接口: 定义访问和遍历集合元素的接口&#xff0c;一般包含next和hasNext方法。concrete iterator 具体迭代器: 实现迭代器接口&#xff0c;迭代器的核心逻辑实现。aggregate …

极致呈现系列之:Echarts热力图的神奇光晕

目录 什么是热力图热力图的特性及应用场景热力图的特性热力图的应用场景 Echarts中热力图的常用属性vue3中创建热力图 什么是热力图 热力图&#xff08;Heatmap&#xff09;是一种基于颜色映射的数据可视化图表&#xff0c;用于展示数据点的密度和分布情况。它使用不同的颜色强…

RT-Thread-10-线程优先级翻转

线程优先级翻转 前面讲到信号量和互斥量&#xff0c;二者有些区别&#xff1a; 信号量&#xff0c;可以在任何线程&#xff08;以及中断&#xff09;释放&#xff0c;用于同步&#xff0c;线程只在获得许可时才可以运行&#xff0c;强调的是运行步骤&#xff1b; 互斥量&#…

科技项目验收测试规范有哪些?

随着科技的不断发展和进步&#xff0c;越来越多的科技项目被投入使用。为了保证这些科技项目的质量&#xff0c;需要进行验收测试。科技项目验收测试是一项非常重要的工作&#xff0c;其结果对项目的质量和功能正常使用有着直接的影响。本文将就科技项 目验收测试规范和第三方软…

基于51单片机设计的公交车LED屏

一、项目介绍 为了提高公交车站点信息的实时性和准确性,方便乘客及时了解公交车到站信息,从而提高公交出行的便利性和舒适度。传统的公交车到站信息是通过人工喊话或者静态的站牌来实现的,这种方式存在信息不及时、不准确、不方便等问题。当前设计基于STC89C52单片机和MAX7…

PyQt6中文手册

PyQt6中文手册 一、PyQt6 简介 最后更新于 2021.04.22 本教程是 PyQt6 的入门教程。本教程的目的是让您开始使用 PyQt6 库。 关于 PyQt6 PyQt6 Digia 公司的 Qt 程序的 Python 中间件。Qt库是最强大的GUI库之一。PyQt6的官网&#xff1a;www.riverbankcomputing.co.uk/new…

2023年企业应该关注的10种AI攻击类型

2023年&#xff0c;热度很高的一个话题莫不是生成式AI和chat GPT了。但是&#xff0c;人工智能&#xff08;AI&#xff09;技术的应用安全威胁都已经开始显现。安全研究人员表示&#xff0c;在AI技术快速应用发展过程中&#xff0c;其安全性也面临诸多挑战。为了防范AI技术大规…

【C++】哈希unordered系列容器的模拟实现

文章目录 一、哈希表的模拟实现&#xff08;开散列&#xff09;1. 开散列的概念2. 开散列的节点结构3. 开散列的插入删除与查找4. 开散列整体代码实现 二、unordered系列容器的封装实现(开散列)1. 迭代器2. unordered_set和unordered_map的封装实现3. 哈希表整体源码 一、哈希表…

Jacoco代码覆盖率测试

​欢迎光临我的博客查看最新文章: https://river106.cn 1、简介 JaCoCo(Java Code Coverage)是一个开源的覆盖率工具&#xff0c;它针对的开发语言是java&#xff0c;其使用方法很灵活&#xff0c;可以嵌入到Ant、Maven中。 很多第三方的工具提供了对JaCoCo的集成&#xff0c;…

Java设计模式之结构型-装饰器模式

目录 一、基本概念 二、角色设计 三、代码实现 四、总结 一、基本概念 装饰器模式是指不必在改变原有的类和不使用继承的情况下&#xff0c;动态扩展一个对象的功能。 二、角色设计 角色描述抽象构件是一个接口或者抽象类&#xff0c;定义我们最核心的对象基础构件抽象构…

GD32 SPI 查询方式和DMA方式在全双模式下效率区别

最近在使用SPI的时候&#xff0c;遇到了一些数据传输效率问题&#xff0c;在此记录自己学习过程。SPI的基础知识这里就不在讲述了&#xff0c;直接分析SPI查询方式和DMA方式的效率问题。这里使用的芯片是GD32F303CC。 SPI以查询方式进行全双工通信 1.查询手册&#xff0c;SPI…

java——网络编程

文章目录 网络通信协议1. TCP/IP协议2. HTTP协议 Socket编程1.创建Socket对象2.获取输入输出流3.发送数据4.接收数据5.关闭Socket连接 NIO编程1.创建Channel2.创建Buffer3.从Channel中读取数据4.写入数据到Channel中5.关闭Channel和Stream Java网络编程是使用Java语言实现计算机…

Spark7-9

7. Spark中的一些重要概念 7.1 Application 使用SparkSubmit提交的个计算应用&#xff0c;一个Application中可以触发多次Action&#xff0c;触发一次Action产生一个Job&#xff0c;一个Application中可以有一到多个Job 7.2 Job Driver向Executor提交的作业&#xff0c;触发…

没想到,老刘是逃离北上广的那波人

我今天跟老刘调试的时候&#xff0c;我问了老刘一个问题——我问你工作这么久了&#xff0c;有没有遇到什么可以让你财富自由的机会。 老刘那个时候正在焊板子&#xff0c;背着我&#xff0c;他抬起头又低了下去&#xff0c;然后说「我是有一次机会了&#xff0c;但是没有抓住&…

MySQL-SQL存储函数以及触发器详解

♥️作者&#xff1a;小刘在C站 ♥️个人主页&#xff1a; 小刘主页 ♥️努力不一定有回报&#xff0c;但一定会有收获加油&#xff01;一起努力&#xff0c;共赴美好人生&#xff01; ♥️学习两年总结出的运维经验&#xff0c;以及思科模拟器全套网络实验教程。专栏&#xf…

PyTorch翻译官网教程3-DATASETS DATALOADERS

官网链接 Datasets & DataLoaders — PyTorch Tutorials 2.0.1cu117 documentation 数据集和数据加载器 处理样本数据的代码可能会变得混乱并且难以维护。理想情况下&#xff0c;我们希望我们的数据集代码与模型训练代码解耦&#xff0c;以获得更好的可读性和模块化。PyT…