UML类图教程
- 格式:docx
- 大小:10.98 KB
- 文档页数:4
uml类图实心三角形加点
继承关系:用空心三角形+实线表示。
实现接口:用空心三角形+虚线表示。
关联关系:用实线箭头表示。
聚合关系:用空心菱形+实线箭头表示。
合成(组合):用实心菱形+实线箭头表示。
依赖关系:用虚线箭头表示。
一、类(Class):矩形框类图分三层:1:类的名称,斜体显示代表抽象类2:类的特性,通常是字段和属性3:类的操作,通常是方法或行为,前面的符号:3.1:‘+’,表示public 3.2:‘—’,表示private 3.3:‘*’,表示protected。
二、接口(interface):矩形框与类图的区别:顶端有《interface》显示两层:1:接口名称2:接口方法棒棒糖表示法:圆圈旁为接口名称、接口方法在实现类中出现。
三、继承关系用空心三角形+实线表示。
四、实现接口用空心三角形+虚线表示。
五、关联关系用实线箭头表示。
六、聚合关系用空心菱形+实线箭头表示聚合:表示两个对象之间是总体和部分的弱关系,部分的生命周期能够超越总体,一种弱的‘拥有’关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分。
七、合成(组合)用实心菱形+实线箭头表示连线两端的数字被
称为基数,表明这一端的类可以有几个实例;如果一个类可能有无数个实例,则用‘n’表示;关联关系、聚合关系也可以有基数组合:一种强的“拥有”关系,体现了严格的部分和整体的关系,部分和整体的生命周期一样。
八、依赖关系用虚线箭头表示。
UML类图中关联关系的三种导航方式在软件开发中,UML(统一建模语言)类图是一种常用的建模工具,用于描述系统中的类和它们之间的关系。
其中,关联关系是类图中最基本的一种关系,描述了类之间的连接。
在关联关系中,导航方式是指一个类如何访问与之相关联的其他类的对象。
在UML类图中,有三种常见的导航方式:单向导航、双向导航和自关联导航。
1. 单向导航单向导航是指一个类可以访问与之关联的其他类的对象,而被关联的类不能直接访问该类的对象。
这种导航方式常见于一对多的关联关系,其中一个类是主导类,而另一个类是从属类。
举个例子,考虑一个图书馆管理系统,图书馆类与图书类之间存在一种关联关系,一个图书馆可以管理多本图书。
在这种情况下,图书馆类可以通过关联关系访问图书类的对象,但是图书类无法直接访问图书馆类的对象。
2. 双向导航双向导航是指两个类可以互相访问对方的对象。
这种导航方式常见于一对一或多对多的关联关系,其中两个类都可以主动访问对方的对象。
继续以图书馆管理系统为例,考虑一个借阅记录类与读者类之间的关联关系。
一个借阅记录可以关联一个读者,同时一个读者也可以关联多个借阅记录。
在这种情况下,借阅记录类和读者类可以通过关联关系互相访问对方的对象。
双向导航可以提供更灵活的访问方式,但也需要注意双向关联的管理和维护。
在设计时,需要考虑到两个类之间的依赖关系和业务逻辑,避免出现循环依赖或不一致的情况。
3. 自关联导航自关联导航是指一个类与自身存在关联关系,可以访问自身的对象。
这种导航方式常见于树状结构或层级结构的模型。
举个例子,考虑一个组织机构管理系统,组织类与自身存在一种关联关系,一个组织可以包含多个子组织。
在这种情况下,组织类可以通过关联关系访问自身的对象,实现对组织结构的层级管理。
自关联导航可以用于描述递归结构或层级结构,提供了一种方便的方式来处理复杂的关系。
但是,在使用自关联导航时需要注意循环引用的问题,避免出现无限循环或死循环的情况。
继承、实现、依赖、关联、聚合、组合的联系与区别分别介绍这几种关系:继承指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系;在Java 中此类关系通过关键字extends明确标识,在设计时一般没有争议性;实现指的是一个class类实现interface接口(可以是多个)的功能;实现是类与接口之间最常见的关系;在Java中此类关系通过关键字implements明确标识,在设计时一般没有争议性;依赖可以简单的理解,就是一个类A使用到了另一个类B,而这种使用关系是具有偶然性的、、临时性的、非常弱的,但是B类的变化会影响到A;比如某人要过河,需要借用一条船,此时人与船之间的关系就是依赖;表现在代码层面,为类B作为参数被类A在某个method方法中使用;关联他体现的是两个类、或者类与接口之间语义级别的一种强依赖关系,比如我和我的朋友;这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的,而且双方的关系一般是平等的、关联可以是单向、双向的;表现在代码层面,为被关联类B以类属性的形式出现在关联类A中,也可能是关联类A引用了一个类型为被关联类B的全局变量;聚合聚合是关联关系的一种特例,他体现的是整体与部分、拥有的关系,即has-a的关系,此时整体与部分之间是可分离的,他们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享;比如计算机与CPU、公司与员工的关系等;表现在代码层面,和关联关系是一致的,只能从语义级别来区分;组合组合也是关联关系的一种特例,他体现的是一种contains-a的关系,这种关系比聚合更强,也称为强聚合;他同样体现整体与部分间的关系,但此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束;比如你和你的大脑;表现在代码层面,和关联关系是一致的,只能从语义级别来区分;对于继承、实现这两种关系没多少疑问,他们体现的是一种类与类、或者类与接口间的纵向关系;其他的四者关系则体现的是类与类、或者类与接口间的引用、横向关系,是比较难区分的,有很多事物间的关系要想准备定位是很难的,前面也提到,这几种关系都是语义级别的,所以从代码层面并不能完全区分各种关系;但总的来说,后几种关系所表现的强弱程度依次为:组合>聚合>关联>依赖;聚合跟组合其实都属于关联只不过它们是两种特殊的关联因为本是同根生所以它们之间难免会有相似之处下面让我们一起来看一下它们之间有何不同聚合与组合的概念相信不用我在此赘述大家就已经了解了下面直接上例子程老师的《大话》里举大那个大雁的例子很贴切在此我就借用一下大雁喜欢热闹害怕孤独所以它们一直过着群居的生活这样就有了雁群每一只大雁都有自己的雁群每个雁群都有好多大雁大雁与雁群的这种关系就可以称之为聚合另外每只大雁都有两只翅膀大雁与雁翅的关系就叫做组合有此可见聚合的关系明显没有组合紧密大雁不会因为它们的群主将雁群解散而无法生存而雁翅就无法脱离大雁而单独生存——组合关系的类具有相同的生命周期聚合关系图:组合关系图:从从代码上看这两种关系的区别在于:构造函数不同雁群类:[csharp]view plaincopy1.public class GooseGroup2. {3.public Goose goose;4.5.6.public GooseGroup(Goose goose)7. {8.this.goose = goose;9. }10. }[csharp]view plaincopy1.public class GooseGroup2. {3.public Goose goose;4.5.6.public GooseGroup(Goose goose)7. {8.this.goose = goose;9. }10. }大雁类:[csharp]view plaincopy1.public class Goose2.{3.public Wings wings;4.5.public Goose()6. {7. wings=new Wings();8. }9.}[csharp]view plaincopy1.public class Goose2.{3.public Wings wings;4.5.public Goose()6. {7. wings=new Wings();8. }9.}聚合关系的类里含有另一个类作为参数雁群类(GooseGroup)的构造函数中要用到大雁(Goose)作为参数把值传进来大雁类(Goose)可以脱离雁群类而独立存在组合关系的类里含有另一个类的实例化大雁类(Goose)在实例化之前一定要先实例化翅膀类(Wings)两个类紧密耦合在一起它们有相同的生命周期翅膀类(Wings)不可以脱离大雁类(Goose)而独立存在信息的封装性不同在聚合关系中,客户端可以同时了解雁群类和大雁类,因为他们都是独立的而在组合关系中,客户端只认识大雁类,根本就不知道翅膀类的存在,因为翅膀类被严密的封装在大雁类中。
UML科普⽂,⼀篇⽂章掌握14种UML图前⾔上⼀篇⽂章写了⼀篇建造者模式,其中有⼏个UML类图,有的读者反馈看不懂了,我们今天就来解决⼀哈。
什么是UML?UML是Unified Model Language的缩写,中⽂是统⼀建模语⾔,是由⼀整套图表组成的标准化建模语⾔。
为什么要⽤UML?通过使⽤UML使得在软件开发之前,对整个软件设计有更好的可读性,可理解性,从⽽降低开发风险。
同时,也能⽅便各个开发⼈员之间的交流。
UML提供了极富表达能⼒的建模语⾔,可以让软件开发过程中的不同⼈员分别得到⾃⼰感兴趣的信息。
Page-Jones 在《Fundamental Object-Oriented Design in UML》⼀书中总结了UML的主要⽬的,如下:1. 为⽤户提供现成的、有表现⼒的可视化建模语⾔,以便他们开发和交换有意义的模型。
2. 为核⼼概念提供可扩展性 (Extensibility) 和特殊化 (Specialization) 机制。
3. 独⽴于特定的编程语⾔和开发过程。
4. 为了解建模语⾔提供⼀个正式的基础。
5. ⿎励⾯向对象⼯具市场的发展。
6. ⽀持更⾼层次的开发概念,如协作,框架,模式和组件。
7. 整合最佳的⼯作⽅法 (Best Practices)。
UML图有哪些?UML图分为结构图和⾏为图。
结构图分为类图、轮廓图、组件图、组合结构图、对象图、部署图、包图。
⾏为图⼜分活动图、⽤例图、状态机图和交互图。
交互图⼜分为序列图、时序图、通讯图、交互概览图。
UML图概览什么是类图?【概念】类图是⼀切⾯向对象⽅法的核⼼建模⼯具。
类图描述了系统中对象的类型以及它们之间存在的各种静态关系。
【⽬的】⽤来表⽰类、接⼝以及它们之间的静态结构和关系。
在类图中,常见的有以下⼏种关系。
泛化(Generalization)【泛化关系】是⼀种继承关系,表⽰⼦类继承⽗类的所有特征和⾏为。
【箭头指向】带三⾓箭头的实线,箭头指向⽗类。
淮海工学院计算机工程学院实验报告书课程名:UML理论及实践题目:实验二绘制用例图和类图班级:D计算机081学号:**********名:**一、实验目的与要求(1)理解actor、Use case的概念及作用,能标识Actor之间、Use case之间、Actor 和Use Case之间的关系;(2)理解类的内部结构及类间的关系(Association、Generalization、dependency、realize、Aggregation、composition,...)(3)学会应用Rose/RSA绘制Use case图和类图,在图中正确绘制各种图形元素、表示元素间的相互关系。
二、实验内容(1)可以以“图书信息管理”或"*****管理系统"为主题,绘制其Use case图和类图。
(2)要求所绘制的图形应与所描述的主题语义一致。
三、实验步骤1.以“网店管理系统”为主题,绘制其Use case图和类图。
2.描述绘制的Use case图和类图。
四、实验结果雇员图一网店管理Use Case图图中包含四个活动者:个人顾客、顾客、协作顾客、雇员。
包含五个Use case:分别为“浏览商品”、“添加商品”、“删除商品”、“商品选购”、“订货作业线”。
个人顾客、顾客、协作顾客之间存在泛化关联。
Use case “浏览商品”、“添加商品”、“删除商品”、“商品选购”存在包含关联。
顾客、雇员分别于五个Use case “浏览商品”、“添加商品”、“删除商品”、“商品选购”、“订货作业线”存在使用关联。
图二网上商店的类图矩形框“订货”、“订货作业线”、“顾客”、“个人顾客”、“协作顾客”、“雇员”、“产品”、均表示对象类。
将每个对象类图框分割成3个分隔框,其中分别列出了该对象类的类名、属性和操作。
例如在对象类“顾客”中,有两个属性name(顾客名)和address(地址),一个操作creditRating()(信誉度分级)。
UML系统建模基础教程文档名称:校园兼职管理系统1、需求分析:校园兼职系统的产生是因为大学生在校时间充裕,对便捷又小量的兼职需求日益增多,其次学生之间需要寻求帮助的问题,比如回家拼车、快递拿取、寻求观众、宣传活动、互助补课等都面临一些问题。
因此,创建一个很好的互助平台是极为需要的。
校园兼职管理系统是面向高等院校的本校学生,为学生群体中提供一个资源共享平台,为需要兼职的学生提供一个安全便捷的渠道,既可以赚取外快又安全快捷,既不需要面临很大的工作量,服务对象都是学生,真正实现学生之间的互助和沟通。
校园兼职系统的功能需求性包括以下内容:(1)学生通过该平台浏览兼职信息,然后提交申请后,要完成兼职任务,如果按规定完成兼职任务就提交完成确认。
学生还可以发布兼职信息,当有人接单并完成,调取订单详情核对完成情况,然后进行支付。
如果对接单者的完成情况不满意可以申请投诉。
(2)支付完成后,接单学生会受到已支付通知。
(3)管理员负责用户管理,进行注册的客户进行信息审核或者删除用户操作。
或对投诉信息进行处理,包括对用户发出警告或者注销用户操作。
对提交的订单和招聘信息进行审核、发布、管理,然后消息通知。
2、系统用例模型2.1参与者分析(1)学生(Students)。
校园兼职系统的服务对象是高等院校的学生,学生通过该系统进行浏览兼职信息和申请接单。
还具有提交招聘兼职信息给管理员。
(2)管理人员(Administrators)。
管理人员负责用户管理和投诉处理。
对学生提交的招聘信息进行审核、发布、管理。
(3)数据库(Database)。
存储用户信息,还有所产生的订单进行存放。
2.2用例图模块2.2.1学生用例图图1 学生用例图支付费用2.2.2管理员用例图警告用户行为注销用户图2 管理员用例图3、创建系统静态模型3.1参与者的实体类Students类:学生类Administrators类:管理者Database类:数据库2.边界类2.1 Students边界类Register类Apply类Check_order类Complaint类Manage orders类Order record类Release类User management类Handling类Notice类Sign in类Order query类Order类MainWindow类3控制类QueryStatusWindow Payment类InputOrderWindow类2.2.3系统类包图图3 校园兼职管理系统类的包图4.系统类图图4 系统类图4、创建时序图 4.1登录顺序图图5 登录时序图1)学生登录工作流程(1) 学生登陆时要先注册,先进入Register 注册界面,inputinfomation 填入个人信息。
UML与Rose软件建模案例教程
146
图7-18图书管理系统的用例图
7.8 构建图书管理系统的类模型
图书管理系统几个实体类的类图,以及图书借出类与图书类、借阅者类的关系如图7-19所示。
图书借出类与图书类为一对一的关系,每一本图书(对应一个唯一的条码)在同一时刻只能借出一次。
借阅者类与图书借出类为一对多的关系,每个借阅者可能借阅多本图书,也可能没有借阅一本图书。
书目类与图书类、图书类型类的关系如图7-19所示,书目类与图书类为一对多的关系,每一种书目至少对应有一本图书,也可能对应有多本图书。
图书类型类与书目类为一对多的关系,每种图书类型可以对应有多种不同的书目,也可能没有对应的书目。
借阅者类与借阅者类型类的关系如图7-19所示。
借阅者类型类与借阅者类为一对多的关系,每个借阅者类型可以对应有多个不同的借阅者。
图书管理系统主要界面类的类图如图7-20所示。
图书管理系统图书借出界面类与图书类、借阅者类、图书借出类之间的关系如图7-21所示。
umlmagicdraw16使用手册UMLE用例图是软件开发中重要的建模工具之一。
MagicDraw是一个强大的UMLE建模工具,被广泛应用于软件开发和系统设计领域。
本使用手册将介绍MagicDraw 16的使用方法和技巧,帮助用户快速上手并熟练运用MagicDraw进行UMLE建模。
一、MagicDraw 16概述MagicDraw 16是一款专业的UMLE建模工具,具有直观的用户界面和丰富的功能。
它支持多种UMLE图形建模,包括用例图、类图、时序图等,提供了丰富的工具和快捷键,方便用户进行模型的创建、编辑和分析。
二、MagicDraw 16的安装和配置1. 下载MagicDraw 16安装包,并解压到指定目录。
2. 运行安装程序,并根据提示完成安装过程。
3. 打开MagicDraw 16,选择适合的界面风格和语言设置。
4. 在选项菜单中配置项目路径和插件设置,以便更好地适应实际需求。
三、MagicDraw 16的基本功能1. 创建和编辑用例图:通过拖拽图标和连接线,用户可以创建用例图,并设置用例之间的关系。
2. 添加用例属性:用户可以为每个用例添加自定义属性,包括名称、描述、优先级等。
3. 创建类图:用户可以使用MagicDraw 16的类图编辑器创建和编辑类图,包括添加类、属性和方法等。
4. 时序图的创建和编辑:MagicDraw 16支持创建和编辑时序图,用户可以按照时间顺序展示系统中不同对象之间的交互过程。
5. 模型导出和分享:用户可以将模型导出为图片、PDF或其他格式,方便与他人分享和展示。
四、MagicDraw 16的高级功能1. 自定义工具栏:用户可以根据自己的需求创建和调整工具栏,以便更高效地使用MagicDraw 16。
2. 定制图形样式:MagicDraw 16提供了丰富的图形样式和注释选项,用户可以按需调整图形的大小和颜色,以及添加注释和说明。
3. 快捷键的使用:MagicDraw 16支持大量的快捷键,用户可以根据自己的习惯设置快捷键,提高工作效率。
2.设计模式常⽤的UML图分析(⽤例图、类图与时序图)1-⽤例图概述1. 展现了⼀组⽤例、参与者以及他们之间的关系。
2. ⽤例图从⽤户⾓度描述系统的静态使⽤情况,⽤于建⽴需求模型。
⽤例特征保证⽤例能够正确捕捉功能性需求,判断⽤例是否准确的依据。
1. ⽤例是动宾短语2. ⽤例是相互独⽴的3. ⽤例是由⽤户参与者启动的4. ⽤例要有可观测的执⾏结果5. ⼀个⽤例是⼀个单元参与者 ActorUML中,参与者使⽤⼀个⼩⼈表⽰:1. 参与者为系统外部与系统直接交互的⼈或事务,于系统外部与系统发⽣交互作⽤2. 参与者是⾓⾊⽽不是具体的⼈3. 代表参与者在与系统打交道时所扮演的⾓⾊4. 系统实际运作中,⼀个实际⽤户可能对应系统的多个参与者。
不同⾓⾊也可以只对应⼀个参与者,从⽽代表同⼀参与者的不通实例⽤例 Use Case系统外部可见的⼀个系统功能单元。
系统的功能由系统单元所提供,并通过⼀系列系统单元与⼀个或多个参与者之间交换的消息所表达。
系统单元⽤椭圆表⽰,椭圆中的⽂字简述系统功能:关系 Relationship常见关系类型有关联、泛化、包含和扩展关联 Association表⽰参与者与⽤例之间的通信,任何⼀⽅都可发送或接受消息。
箭头指向:指向消息接收⽅:⼦系统 SubSystem⽤来展⽰系统的⼀部分功能(紧密联系)泛化 Inheritance继承关系,⼦⽤例和⽗⽤例相似,但表现出更特别的⾏为;⼦⽤例将继承⽗⽤例的所有结构、⾏为和关系。
⼦⽤例可以使⽤⽗⽤例的⼀段⾏为,也可以重载它。
⽗⽤例通常是抽象。
箭头指向:指向⽗⽤例2-类图描述系统中的类,以及各个类之间的关系的静态试图。
表⽰类、接⼝以及它们之间的协作关系,⽤于程序设计阶段。
注意:1. 抽象类或抽象⽅法⽤斜体表⽰2. 如果是接⼝,则在类名上⽅加 <<Interface>>3. 字段和⽅法返回值的数据类型⾮必需4. 静态类或静态⽅法加下划线类图实例:类图中的事务及解释如图,类图从上到下分为三部分,分别为类名、属性和操作1. 属性:如果有属性,则每⼀个属性都必须有⼀个名字,另外还可以有其它的描述信息,如可见性、数据类型、缺省值等2. 操作:如果有操作,则每⼀个操作也都有⼀个名字,其它可选的信息包括可见性、参数的名字、参数类型、参数缺省值和操作的返回值的类型等类图中的六种关系1.实现关系 implements (类实现接⼝)⽤空⼼三⾓虚线表⽰2.泛化关系 extends (表⽰⼀般与特殊的关系) is-a⽤空⼼三⾓实线表⽰3.组合关系 (整体与部分的关系) contains-a实⼼菱形实现表⽰eg.有头类、⾝体类与⼈类类三个类,则⼈类类中应包含头类及⾝体类这两个属性,则⼈类类与头类和⾝体的关系即为组合关系。
Rational Rose 简介Rose模型(包括所有框图、对象和其他模型元素)都保存在一个扩展名为.mdl的文件中。
1. 环境简介Rational Rose可视化环境组成Rose界面的五大部分是浏览器、文档工具、工具栏、框图窗口和日志。
见图1-1。
图1-1:Rose界面浏览器:用于在模型中迅速漫游。
文档工具:用于查看或更新模型元素的文档。
工具栏:用于迅速访问常用命令。
框图窗口:用于显示和编辑一个或几个UML框图。
日志:用于查看错误信息和报告各个命令的结果。
浏览器和视图浏览器是层次结构,用于在Rose模型中迅速漫游。
在浏览器中显示了模型中增加的一切,如参与者、用例、类、组件等等。
Rose浏览器见图1-2。
浏览器中包含四个视图:Use Case视图、Logical视图、Component视图和Deployment 视图。
点击每个视图的右键,选择new就可以看到这个视图所包含的一些模型元素。
图1-2:Rose浏览器1.3框图窗口在图1-3所示的框图窗口中,我们可以浏览模型中的一个或几个UML框图。
改变框图中的元素时,Rose自动更新浏览器。
同样用浏览器改变元素时,Rose自动更新相应框图。
这样,Rose就可以保证模型的一致性。
图1-3:框图窗口各类框图的建立2.1建立用例图use case diagram从用例图中我们可以看到系统干什么,与谁交互。
用例是系统提供的功能,参与者是系统与谁交互,参与者可以是人、系统或其他实体。
一个系统可以创建一个或多个用例图。
创建用例图(图2-1-1)在浏览器内的Use Case视图中,双击Main,让新的用例图显示在框图窗口中。
也可以新建一个包(右击Use Case视图,选择new→package,并命名),然后右击这个新建包的,选择new→use case diagram。
对系统总的用例一般画在Use Case视图中的Main里,如果一个系统可以创建多个用例图,则可以用包的形式来组织。
软件工程的23种设计模式的UML类图0 引言谈到设计模式,绝对应该一起来说说重构。
重构给我们带来了什么?除了作为对遗留代码的改进的方法,另一大意义在于,能够让我们在写程序的时候能够不需事先考虑太多的代码组织问题,当然这其中也包含了应用模式的问题。
尽管大多数开发者都已经养成了写代码前先从设计开始的习惯,但是,这种程度的设计,涉及到到大局、到总体架构、到要紧的模块划分我觉得就够了。
换句话说,这时就能写代码了。
这就得益于重构的思想了。
假如没有重构的思想,有希望获得非常高质量的代码,我们就不得不在开始写代码前考虑更多事实上并非非常稳固的代码组织及设计模式的应用问题,那开发效率当然就大打折扣了。
在重构与设计模式的合理应用之下,我们能够相对较早的开始写代码,并在功能尽早实现的同时,不断地通过重构与模式来改善我们的代码质量。
因此,下面的章节中,在谈模式的同时,我也会谈谈关于常用的这些模式的重构成本的懂得。
重构成本越高意味着,在遇到类似的问题情形的时候,我们更应该提早考虑应用对应的设计模式,而重构成本比较低则说明,类似的情形下,完全能够先怎么方便,怎么快怎么写,哪怕代码不是很优雅也没关系,回头再重构也很容易。
1 创建型1.1FactoryMethod思想:Factory Method的要紧思想是使一个类的实例化延迟到其子类。
场景:典型的应用场景如:在某个系统开发的较早阶段,有某些类的实例化过程,实例化方式可能还不是很确定,或者者实际实例化的对象(可能是需要对象的某个子类中的一个)不确定,或者者比较容易变化。
如今,假如直接将实例化过程写在某个函数中,那么通常就是if-else或者select-case代码。
假如,候选项的数目较少、类型基本确定,那么这样的if-else还是能够同意的,一旦情形变得复杂、不确定性增加,更甚至包含这个构造过程的函数所在的类包含几个甚至更多类似的函数时,这样的if-else代码就会变得比较不那么容易保护了。
staruml教程
StarUML的简单明了教程
StarUML 是一种生成类图和其他类型的统一建模语言(UML)图表的工具。
首先,我们必须先安装将要使用的软件。
StarUML ,是一个开放源码软件,遵
循GPL 协议许可(GNU 公共许可证),并免费提供下载。
安装以后就可以启动该程序。
然后,一个名叫:New Project By Approach 的对话框会弹出。
选择“Empty Project”并且按下"确定"。
这里建议你不要勾选"设置为默认的做法" 复选框。
在右边的“Model Explorer”框中选定“Untitled”模块。
通过“Model”主菜单,或右击选定的模型,可以" Add/Design Model "
通过“Model”主菜单,或右击选定模型,可以“Add Diagram/Class Diagram”:
通过“Model/Profile...”菜单去设置工程所需的profile。
这决定了工程所使
用的规则和约定。
一定要包含"JAVA Porfile"这一项目。
UML类图教程:理解、设计和构建软件系统
UML类图是一种在软件开发过程中用于描述系统结构的静态结构图。
它显示了类、属性、操作以及对象之间的关系。
以下是关于如何绘制UML类图的详细教程:
一、UML类表示法
在UML中,类表示封装状态(属性)和行为(操作)的概念。
类图中的每个类都包含一个类名、属性(成员变量)和操作(成员方法)。
下面是一个简单的Java类的UML表示法示例:
public class Person {
private String name;
private int age;
public Person(String name, int age) {
= name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
= name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
对应的UML类图表示法如下:
Class Diagram: Person Class
+name: String
+age: int
#constructors: Person(String name, int age) [e2e], Person(String name, int age) -> e2e [e2e]
#getters: getName() [e2e], setName(String name) [e2e]
#setters: setAge(int age) [e2e]
在类图中,类名通常使用“+”表示公共、"-"表示私有或"#"表示受保护的访问修饰符来表示。
属性使用"+"表示公共、"-"表示私有或"#"表示受保护的访问修饰符,而操作使用同样的修饰符或使用"()"表示方法。
在类图中,还可以包含构造方法、析构方法、getter和setter方法等。
二、UML类图视角选择
UML类图可以根据不同的视角来描述系统结构。
在概念视角中,类图主要描述领域中的概念,例如实体类、边界类和控制类等。
在规范视角中,类图主要描述软件中抽象数据类型(ADT)的接口,例如数据访问对象(DAO)和业务逻辑对象(BLL)等。
在实现视角中,类图主要描述类将如何实现它们的接口,例如使用具体的编程语言和技术实现数据访问层和业务逻辑层等。
视角的选择取决于在开发过程中走了多远,以及需要提供哪些细节和展示哪些关系类型。
三、UML类图关系表示法
除了显示类的属性和操作,UML类图还包含类与类之间的关系。
以下是一些常见的UML类图关系表示法:
1.关联关系(Association):表示类与类之间的长期关系,例如一个学生和
一个班级之间的关系。
在UML类图中,关联关系使用实线表示,可以在实线上添加箭头来表示方向性。
例如,一个班级可以拥有多个学生,而一个
学生只能属于一个班级。
可以在关联关系上添加标签来表示多重性(1:1, 1:n, n:m等)。
2.聚合关系(Aggregation):表示一种“has-a”关系,其中一个类是另一
个类的组成部分。
例如,一个班级有多个学生组成。
在UML类图中,聚合关系使用带有空心箭头的实线表示,箭头指向整体部分。
例如,班级类与学生类之间的聚合关系可以表示为:班级-学生。
3.组合关系(Composition):表示一种“contains-a”关系,其中一个类
包含另一个类的对象作为其成员变量。
例如,一个班级有一个班长。
在UML类图中,组合关系使用带有实心箭头的实线表示,箭头指向整体部分。
例如,班级类与班长类之间的组合关系可以表示为:班级-班长。
4.继承关系(Inheritance):表示一种“is-a”关系,其中一个类继承另一
个类的属性和操作。
例如,猫是一种动物。
在UML类图中,继承关系使用带有空心箭头的虚线表示,箭头指向父类。
例如,猫类与动物类之间的继承关系可以表示为:猫-动物。
5.依赖关系(Dependency):表示一个类依赖于另一个类的定义或实现。
例如,一个订单需要一个客户信息。
在UML类图中,依赖关系使用带有箭头的虚线表示,箭头指向被依赖的类。
可以在虚线上添加标签来表示多重性(1:1, 1:n, n:m等)。
例如,订单类与客户信息类之间的依赖关系可以表示为:订单-客户信息。
6.实现关系(RealUnified Modeling Language(UML)是一种广泛应用于
软件开发的建模语言,它通过图形化的方式帮助开发者理解、设计和构建软件系统。
UML类图是其中一种重要的图表,它展示了系统中类的属性和操作,以及类之间的关系。
以下是UML类图的详细教程。
一、UML类图的基本元素
1.类:在UML类图中,每个类用一条垂直线表示,类名位于线的顶部。
2.属性:类的属性是类的状态的表示,它们在类的线下方列出,每个属性都
有其类型和访问级别。
3.方法:类的方法是类的行为的表示,它们在类的线上方列出。
4.关系:类之间的关系通过各种线条和箭头表示,这些关系包括关联、聚合、
组合和依赖等。
二、UML类图的视角
UML类图可以从不同的视角来观察,这些视角包括概念视角、规范视角和实现视角。
1.概念视角:这个视角关注的是系统中的概念和它们之间的关系,它通常用
于需求分析和领域建模阶段。
在这个视角中,类图中的类通常表示概念,属性和操作可能不包含具体的实现细节。
2.规范视角:这个视角关注的是系统的规范和接口,它通常用于设计和规格
阶段。
在这个视角中,类图中的类通常表示抽象数据类型(ADT)的接口,属性和操作可能只包含规范化的描述。
3.实现视角:这个视角关注的是系统中的具体实现,它通常用于构造和配置
阶段。
在这个视角中,类图中的类通常表示具体的类,属性和操作可能包含具体的实现细节。
三、UML类图的实际应用
在实际的软件开发过程中,UML类图可以用来进行以下工作:
1.建立领域模型:在需求分析阶段,可以通过UML类图来建立领域模型,帮
助开发者和客户更好地理解系统的需求。
2.设计系统结构:在设计阶段,可以通过UML类图来设计系统的结构,帮助
开发者更好地理解系统的组织和结构。
3.实现代码生成:在构造阶段,可以通过UML类图来自动生成代码,帮助开
发者更快地完成系统的开发。
4.进行系统维护:在维护阶段,可以通过UML类图来理解和修改系统,帮助
开发者更好地理解和维护系统。
总之,UML类图是一种非常有用的工具,它可以帮助开发者更好地理解和设计软件系统,提高开发效率和代码质量。