UML在powerDesigner的使用及其相关概念

最近对这句古话非常喜欢:工欲善其事必先利其器

首先,我们需要学会怎么利用工具去辅助我们去了解别人的代码,那怎么有效快速的了解别人的代码,而自己又不会犯糊涂呢?那就需要我们借助powerdesigner这个强大的工具了。

可以参考这些文章:【PowerDesigner】【10】绘制类图

powerDesigner绘制类图_zhouguizhi-CSDN博客_powerdesigner类图

#1.如何创建类图

打开,点【file】-【New Model】

选择【Model types】-【Object-Oriented Model】-【Class Diagram】-【java】-【ok】

#2.创建成功后,就可以使用右侧栏进行画图了

#3.统⼀建模语⾔简介

统⼀建模语⾔( Unified Modeling Language UML )是⽤来设计软件蓝图的可视化建模语⾔, 1997 年 被国际对象管理组织(OMG )采纳为⾯向对象的建模语⾔的国际标准。它的特点是简单、统⼀、图形化、能表达软件设计中的动态与静态信息。
统⼀建模语⾔能为软件开发的所有阶段提供模型化和可视化⽀持。⽽且融⼊了软件⼯程领域的新思想、 新⽅法和新技术,使软件设计⼈员沟通更简明,进⼀步缩短了设计时间,减少开发成本。它的应⽤领域很宽,不仅适合于⼀般系统的开发,⽽且适合于并⾏与分布式系统的建模。
UML 从⽬标系统的不同⻆度出发,定义了 ⽤例图类图对象图状态图活动图时序图协作图构件图部署图等 9 种图。
当前业界使⽤最⼴泛的是 Rational Rose,但作为开发人员的我,还是喜欢使用powderdesigner
这次主要介绍软件设计模式中经常⽤到的类图,以及类之间的关系。
 

总体关系总结表

#3.1.类

类( Class )是指具有相同属性、⽅法和关系的对象的抽象,它封装了数据和⾏为,是⾯向对象程序设计 (OOP )的基础,具有封装性、继承性和多态性等三⼤特性。
UML 中,类使⽤包含类名、属性和操作且带有分隔线的矩形来表示。

#3.1.1.类名

类名(Name)是⼀个字符串。

#3.1.2.属性

属性(Attribute)是指类的特性,即类的成员变量。UML 按以下格式表示:

[可⻅性]属性名:类型[=默认值]
例如: -name:String      (注意:这里的中括号代表可以忽略不写“可见性”和“默认值”)
注意: 可⻅性 表示该属性对类外的元素是否可⻅,包括 公有(Public)、私有(Private)、受保护(Protected)和朋友(Friendly 4 种,在类图中分别⽤符号 +-#~ 表示。

#3.1.3.操作

操作( Operations )是类的任意⼀个实例对象都可以使⽤的⾏为,是类的成员⽅法。 UML 按以下格 式表示:
[可⻅性]名称(参数列表)[:返回类型]
例如: +display():void
完整的实例

接着,我们看看这个图是怎么画出来的:

接着就是添加类中的属性了:

最后就是添加类中的操作方法了:

#3.2.接口

接⼝( Interface)是⼀种特殊的类,它具有类的结构但不可被实例化,只可以被⼦类实现。它包含抽象操作,但不包含属性。它描述了类或组件对外可⻅的动作。在 UML 中,是这样展示的:
           该图代表的是Graph接口

#3.2.1.接口和抽象类的区别

抽象类官方点的定义就是:如果一个类没有包含足够多的信息来描述一个具体的对象,这样的类就是抽象类。

实际点来说,一个抽象类不能实例化,因为“没有包含足够多的信息来描述一个具体的对象”。但终归属于类,所以仍然拥有普通类一样的定义。依然可以在类的实体(直白点就是能在{}里面)定义成员变量,成员方法,构造方法等。

接口官方定义:接口在java中是一个抽象类型,是抽象方法的集合。一个类通过继承接口的方式,从而继承接口的抽象方法。

从定义上看,接口是个集合,并不是类。类描述了属性和方法,而接口只包含方法(未实现的方法)。接口和抽象类一样不能被实例化,因为不是类。但是接口可以被实现(使用 implements 关键字)。实现某个接口的类必须在类中实现该接口的全部方法。虽然接口内的方法都是抽象的(和抽象方法很像,没有实现)但是不需要abstract关键字。

因此,可以得到一个结论就是:我们在画UML图中的时候,如果该类是抽象类,那么我们还是需要和画普通类那样,直接定义就好。

#3.3.类图

类图(ClassDiagram )是⽤来显示系统中的类、接⼝、协作以及它们之间的静态结构和关系的⼀种静态模型。它主要⽤于描述软件系统的结构化设计,帮助⼈们简化对软件系统的理解,它是系统分析与设计阶段的重要产物,也是系统编码与测试的重要模型依据。
类图中的类可以通过某种编程 语⾔直接实现。类图在软件系统开发的整个⽣命周期都是有效的,它是⾯向对象系统的建模中最常⻅的图。

#4.类之间的关系

在软件系统中,类不是孤⽴存在的,类与类之间存在各种关系。
根据类与类之间的耦合度从弱到强排列, UML 中的类图有以下⼏种关系:依赖关系关联关系聚合关系组合关系泛化关系实现关系。其中 泛化 实现 耦合度相等,它们是最强的。

#4.1.依赖关系 Dependency

依赖(Dependency 关系是⼀种使⽤关系,它是对象之间耦合度最弱的⼀种关联⽅式,是临时性的关联。在代码中,某个类的⽅法通过【局部变量、⽅法的参数或者对静态⽅法 】的调⽤来访问另⼀个类(被依赖类)中的某些⽅法来完成⼀些职责。
UML 类图中,依赖关系使⽤ 带箭头的虚线 来表示,箭头从使⽤类指向被依赖的类

#4.2.关联关系 Association

关联(Association 关系是对象之间的⼀种引⽤关系,⽤于表示⼀类对象与另⼀类对象之间的联系,如⽼师和学⽣、师傅和徒弟、丈夫和妻⼦等。 关联关系 是类与类之间最常⽤的⼀种关系,分为 ⼀般关联关系、聚合关系和组合关系
关联可以是双向的,也可以是单向的。
UML 类图中,双向的关联可以⽤ 带两个箭头或者没有箭头的实线 来表示,单向的关联⽤ 带⼀个箭头的实线来表示, 箭头从使⽤类指向被关联的类 也可以在关联线的两端标注⻆⾊名,代表两种不同的⻆⾊。

#4.2.1.PowerDesigner默认双向关联修改为单向关联

PowerDesigner中的关联(Association)默认如下,是双向关联的形式

每个老师可以教多个学生,每个学生可以向多个老师学,他们是双向关联。

有时候我们期望使用单向关联,如下

中国只属于亚洲的关联关系。

具体修改方式如下:

补充一个知识点,那就是“多重性关联

#4.2.2.具体实例

这里还有一个问题,需要弄清楚,在powerdesigner中如何创建List<Student>类型的参数。

#4.3.聚合关系Aggregation

聚合( Aggregation )关系 是关联关系的⼀种,是强关联关系,是整体和部分之间的关系, has-a 的关系
聚合关系也是通过成员对象来实现的,其中成员对象是整体对象的⼀部分,但是成员对象可以脱离整体对象而独⽴存在。例如,学校与⽼师的关系,学校包含⽼师,但如果学校停办了,⽼师依然存在。
UML 类图中,聚合关系可以⽤ 带空⼼菱形的实线 来表示,菱形指向整体。

#4.4.组合关系 Composition

组合( Composition )关系 也是关联关系的⼀种,也表示类之间的整体与部分的关系,但它是⼀种更强烈的聚合关系, contains-a 关系
在组合关系中,整体对象可以控制部分对象的⽣命周期,⼀旦整体对象不存在,部分对象也将不存在部分对象不能脱离整体对象⽽存在。例如,头和嘴的关系,没有了头,嘴也就不存在了。
UML 类图中,组合关系⽤ 带实⼼菱形的实线 来表示,菱形指向整体

#4.5.泛化关系(继承)Generalization

泛化( Generalization )关系 是对象之间耦合度最⼤的⼀种关系,表示⼀般与特殊的关系, 是⽗类与⼦类之间的关系,是⼀种继承关系 is-a 的关系
UML 类图中,泛化关系⽤ 带空⼼三⻆箭头的实线 来表示, 箭头从⼦类指向⽗类 在代码实现时,使⽤⾯向对象的继承机制来实现泛化关系。
例如,Student 类和 Teacher 类都是 Person 类的⼦类。

#4.6.实现关系(接⼝)Realization

实现( Realization )关系是接⼝与实现类之间的关系。 在这种关系中,类实现了接⼝,类中的操作实现了接⼝中所声明的所有的抽象操作。
UML 类图中,实现关系使⽤ 带空⼼三⻆箭头的虚线 来表示,箭头从实现类指向接⼝。
例如,汽⻋和船实现了交通⼯具,如图所示:

#5.总结

类与类之间的关系
1. 依赖关系(局部变量、形参、静态⽅法的调⽤)
2. 关联关系(成员变量)
1. ⼀般关联关系
2. 聚合关系( has - a
3. 组合关系( contains-a
3. 继承关系(⽗类和⼦类的关系) is - a
4. 实现关系(接⼝和实现类)
​看到最后,画重点了,如果您需要(智慧餐厅)有关设备,或者身边有这样的资源,可以推荐给我,达成合作后,你懂的,致富链接:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猿小飞

您的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值