本文将分三个部分介绍Uml建模:Uml建模的作用、类图、startuml的使用

Uml的作用

   本文以java为例介绍Uml,在当前的软件开发中大多数使用面向对象开发(OO),面向对象的就是将现实世界中的对象,行为,关系等模拟化到软件系统中。当在开发一个软件系统的时候,不会一开始直接编程。这样做的后果就是没有经过详细的设计,导致后期某些业务逻辑基于现有的系统不能开发。所以对于软件系统的设计尤其重要。对于系统的设计分为两部分:1.需求分析人员根据现实业务场景,梳理出业务关系。(eg:一个老师带一个班的课程)2.软件设计师设计出对应的对象关系,行为,状态等(一个老师类,一个学生类 ,多多关系)。UML建模是将现实世界的业务抽象到软件系统中,通过图形的方式勾勒出整个系统,在UML中可以清晰的了解所有模块之间的关联关系。

一:Uml 建模三种模型

类模型:描述系统内部对象及其关系的静态结构。类模型由类图构建,类图中节点表示类,类与类之间的关联关系用不同含义的弧标识。

状态模型:描述对象随着时间迁移发生了哪些变化。状态模型使用状态图确定并实现控制。状态图的节点是状态,弧是由时间引发的状态间的转移。

交互模型:描述系统中对象如何协作完成更为宽泛的任务。用例:关注系统的功能,即系统为用户做了哪些事情。顺序图:显示交互对象以及发生交互的时间顺序。活动图:描述重要的处理步骤。

二:面向对象建模离不开最基础的面向对象的特性:抽象,继承,封装,多态,这些特性都会表现在类图上,对象可以被实例化,实例化的对象的属性,操作,类型模拟具体的对象特征。

三:类模型的特征

1.关联关系(Associated):描述在对象之间在物理上或者概念上的联系。关系方向是双向的,人和工具的关联,人使用工具工作。人和工具是多对多的关系。

表示关联关系的符号:1..5(1~5),* (表示多的意思),+(表示类是public修饰的)

关联中还有一种自关联:自己关联自己,常见的在树形结构中,例如组织关系

一个子机构可以有多个父结构,一个父结构可以有多个子机构

2.泛化(generalization)指一个父类与其一个或多个子类之间的关系。子类继承父类的特性,还可以表现出更宽泛的特征。

:String(生命属性的类型),+(表示public) - (private)#(protected) ~(package)    eat() (吃饭的方法)

3.实现(realization):接口是操作的集合,实现类继承接口,将接口声明的抽象操作具体化。例如:动物都有吃的动作,人是吃饭,猴子吃水果。

默认的接口图形是原型,在这里我再startUml 中修改了它的展现方式

4.聚合(aggregation)关系是一种弱关联。一个聚集对象有多个部件构成,部件是聚集的一部分。例如:车和轮胎的关系,轮胎没了,车依然存在。聚合具有传递性,A聚合B,B聚合C ,A聚合C,并且也具有反聚合性,A聚合C,C不能聚合A

这里以四轮车为例:一辆车由四个轮子聚合

5.组合(compostion):有两个恩爱的约束条件,一个组成部件至多属于一个装配件。而且一个组成部件一旦被分配给装配件,它就会和装配件有着相同的生命周期。装配件消亡,组成件也将随之消亡。例如:人和胳臂,人消失了,胳臂也不复存在,又例如:程序员没了代码就会死。这种关系要比聚合更强。这里也是用实心菱型表示。

6.单项关联(directedAssociation):没有生命周期的限制,一个引用另外一个

一个人有多辆车

7.依赖(dependency):物体与物体之间产生的依赖关系,例如:人依赖空气和水

所有的关联关系:

  一个动物的接口被人类所实现(realization),人这个类被男人和女人两个类所泛化(generalization),人类依赖(dependency)水和空气而存活,人类的胳臂和腿才能组合(compostion)成人类,缺一不可,人类消亡,胳臂和腿已经消亡.人类可以开一辆车或者多辆车(directedAssociation),多个车轮聚合(aggregation)成车的一部分,人类可以自关联,人类的父亲,孩子。人类也可以双向关联(association)

四:startUml的使用

1.下载startUml之后双击打开,点击default approach.

2.若左侧的工具栏没有显示,则点击view-->toolbox 在前面勾选,勾选model explorer。

3.找到Model explorer-->design model 右键点击 add--->选择package或者class

选中之后修改名称

3.拖拽这个类到文本框中进行编辑

4.连接关联关系,直接拖拽

5.直接添加的接口是圆形图标,要想设置成方格的形式Format-stereotype dispaly-textual

6.选中类或者接口点击这两个按钮既可以显示属性和行为(方法)

Uml 建模 一(类图建模和startuml的使用)的更多相关文章

  1. KsUML 免费的类图建模工具

    最近基于SharpDevelop和NClass两个开源软件,开发了一个免费的类图建模工具,详情请访问 www.TimeGIS.com KsUML类图建模工具是一个用来给软件开发人员使用的一种UML类图 ...

  2. 3.UML中的类图及类图之间的关系

    统一建模语言简介 统一建模语言(Unified Modeling Language,UML)是用来设计软件蓝图的可视化建模语言,1997 年被国际对象管理组织(OMG)采纳为面向对象的建模语言的国际标 ...

  3. GOF 的23种JAVA常用设计模式总结 02 UML中的类图与类图之间的关系

    统一建模语言UML 统一建模语言(Unified Modeling Language,UML)是用来设计软件蓝图的可视化建模语言,1997 年被国际对象管理组织(OMG)采纳为面向对象的建模语言的国际 ...

  4. UML中的类图及类图之间的关系

    统一建模语言简介 统一建模语言(Unified Modeling Language,UML)是用来设计软件蓝图的可视化建模语言,1997 年被国际对象管理组织(OMG)采纳为面向对象的建模语言的国际标 ...

  5. UML简单介绍—类图详解

    类图详解 阅读本文前请先阅读:UML简单介绍—类图这么看就懂了 1.泛化关系 一个动物类: /** * 动物类 */ public class Animal { public String name; ...

  6. 【UML 建模】类图介绍

    1.类图是面向对象系统建模中最常用和最重要的图,是定义其它图的基础.类图主要是用来显示系统中的类.接口以及它们之间的静态结构和关系的一种静态模型. 2.类的关系有泛化(Generalization). ...

  7. UML精粹3 - 类图,序列图,CRC

    类图Class diagram 类图描述系统中的对象类型,以及它们之间的各种静态关系.类图也展示类的性质和操作,以及应用于对象连接方式的约束.UML中的特性feature,涵盖了性质property和 ...

  8. UML静态视图——类图、对象图、包图

    绘画类的最重要的图是抽象类.让我们回顾一下类的基本内容. 一.分类 1.类的概念: 面向对象编程的类是一个基本概念.类是具有相同特性的.办法.集合语义和一组对象的关系. 2.类分类: 实体类:保存要放 ...

  9. 软件工程 #02# Entity Relationship Diagram VS. 用 UML 中的类图表示 E-R 图

    不同的老师叫我们画 E-R 图居然是不一样的,于是我仔细研究了一番.. 通常所说的 E-R 图(外文全称 Entity Relationship Diagram,简称 ERD)长这个样子: 而有时候它 ...

随机推荐

  1. RSA私钥加密公钥解密、各种密钥格式转换

    此随笔解决RSA加解密相关的3个问题,详情可以查看源码. 1.公钥加密.私钥解密2.各种格式RSA密钥之间的转换3.不限制加密原文的长度

  2. 【iOS系列】-iOS的多线程解析

    [iOS系列]-iOS的多线程解析 iOS的多线程实现技术: 1:GCD -- Grand Central Dispatch 是基于C语言的底层API 用Block定义任务,使用起来非常灵活便捷 提供 ...

  3. C项目实践--学生成绩管理系统

    1.功能需求分析 学生成绩管理系统是对学生基本信息及成绩的管理.本程序主要实现了对学生的学号.姓名等基本信息以及各项学科成绩进行增加.删除.修改.查询和保存到磁盘文件等操作.主要功能描述如下: (1) ...

  4. AndroidEventBus总结

    什么是AndroidEventBus? android事件总线,是一个发布 / 订阅的事件总线 github地址:https://github.com/greenrobot/EventBus Andr ...

  5. SoapUI中读取Office365邮件

    常见邮件服务一般使用IMAP邮件访问协议,如果你所在公司更换到Office 365则需要另一个组件. Office 365使用的是Exchange Server电子邮件服务组件,需要微软的Jar包来支 ...

  6. 线程之间的通信socketpair【学习笔记】【原创】

    平台信息:内核:linux3.1.0系统:android5.0平台:tiny4412 作者:庄泽彬(欢迎转载,请注明作者) 说明: 韦老师的安卓视频学习笔记 一.在一个进程中多个线程如何进行通信,主要 ...

  7. Map dependencies with code maps

    https://docs.microsoft.com/en-us/visualstudio/modeling/map-dependencies-across-your-solutions Instal ...

  8. js页面报错javax.servlet.jsp.PageContext cannot be resolved to a type解决

    构建了一个maven项目但是项目创建好的jsp总会报错javax.servlet.jsp.PageContext cannot be resolved to a type,但是不影响项目运行.但总归难 ...

  9. AutoIT: 对文件系统的菜单进行操作,有专门的语句WinMenuSelectItem

    对文件系统的菜单进行操作,有专门的语句WinMenuSelectItem: Run("notepad.exe") WinWaitActive("[CLASS:Notepa ...

  10. codeforces 447 A-E div2 补题

    A DZY Loves Hash 水题 #include<iostream> #include<cstdio> #include<cstdlib> #include ...