分为两部分:
- 基础知识部分
- 各类图的实际画法画法掌握及需要注意的地方
part1 important point:
-
面向对象方法
- 面向对象与面向过程?
面向过程:面向的是数据流,简单易懂易掌握,但开发效率低,重用性不好 面向对象:对现实中的事物进行抽象,描述成**对象**,按对象的一致属性,将对象划分为**类**
- 面向对象设计的基本原则?
开闭原则,替换原则,依赖倒置原则,接口分离原则
- 面向对象与面向过程?
-
统一建模语言
UML中图的分类:结构图 行为图 -
统一过程
- 软件生命周期:问题集中在 做什么?怎么做?怎么用电脑做?做的对不对?长时间运行需要改变吗?
就是 需求分析 设计模型 编码 测试分析 维护
- 软件生命周期:问题集中在 做什么?怎么做?怎么用电脑做?做的对不对?长时间运行需要改变吗?
-
UML的构成
-
关系
依赖,关联,泛化,实现
-
关系
-
正向工程和反向工程的概念
part2 各种图
-
用例图 use case diagram
-
什么是用例、用例图?有什么用?
用例:系统外在的需求情况.一般是一个动作,一个由系统提供用户使用的动作.在UML中一半用椭圆表示
用例图:用例图(use case diagram)是显示一组用例、参与者以及它们之间的关系的图
作用:帮助你分析系统有哪些功能,以及让你明确系统内部和系统外部(也就是角色)的交互的 -
用例图有哪些主要的建模元素?
用例,参与者,系统边界,和他们之间的关系
-
什么是参与者?
是指系统以外的、需要使用系统或与系统交互的事物, 包括: 人、设备、外部系统等
-
什么是用例?
用户使用系统一项功能所进行交互的文字描述
-
参与者、用例之间有哪些关系?
参与者之间有泛化(generalization)关系,特殊指向一般 用空心三角+实线表示
参与者和用例之间是关联关系,表示了参与者与用例间的通信
用例之间的关系:泛化,包含,扩展
包含关系:基本用例的行为包含了另一个用例的行为。基本用例描述在多个用例中都有的公共行为。包含关系本质上是比较特殊的依赖关系。
用例的泛化、包含、扩展关系的比较。一般来说可以使用“is a”和“has a”来判断使用那种关系。泛化和扩展关系表示用例之间是“is a”关系,包含关系表示用例之间是“has a”关系 -
如何获取参与者?
谁来使用系统的主要功能
谁来维护系统
谁对系统的结果感兴趣
系统需要操作哪些硬件
需要与系统交互的其他系统有哪些 -
如何获取用例?
和用户交互
系统交互的目的是什么?
需要向系统输入什么信息?
希望由系统进行什么处理并从它得到何种结果?
* 如何详述用例?
-
-
类图
-
什么是类图?类图有什么用?
类图:显示出类、接口以及它们之间的静态结构和关系;它用于描述系统的结构化设计。
作用:展示一个工程中每个类所包含的函数和属性,类之间的关系,类的组织方式等 -
类图包含哪些建模元素?
类、接口 包以及它们之间的静态结构和关系
-
类的种类
抽象类 --不能实现的类,是一种抽象
接口 --类似抽象类,所有操作都未实现
关联类
模板类 --可以根据占位符或参数来定义类
主动类
嵌套类 --java中的内置类 -
类之间的关系有哪些?如何表示?
- 组合 是一类“强”的整体与部分的包含关系。成分类别必须依靠合成类别而存在 例如汽车与化油器 用实心菱形和实线表示
- 聚合 是一种has a 的弱关系 如池塘中有一只鸭子 这样的关系 用空心菱形和实线表示
- 依赖 是一种弱化形式的关系,表示一类别依赖于另外的类别
- 关联 当一个类作为另一个类某个方法的参数时,为关联。
- 泛化 --感觉上就像是继承,
- 实现 和泛化一样 用空心三角加实线表示
- 关系之间的强弱:组合>聚合>关联>依赖
而对于两种关联关系(组合和聚合之间的区分,个人觉得维基百科上的例子特别形象:例如,一个大学包含若干个系(如化学系),每个系由若干名教授。如果大学撤销,这些系也就不复存在了,但这些教授仍会继续存在。还需注意,一名教授可以在不同系甚至不同学校兼职,而一个系不能属于两所大学。所以,大学与系之间是组成关系,而系与教授是聚合关系
-
聚合与组合的区别?
两者的差别主要描述了子类的生命周期的不同。组合关系中,一旦父类被销毁子类也会随之销毁;聚合关系中,子类的生命周期与父类独立。
-
派生属性与派生关联?
可以从其它属性和关联计算推演得到的属性和关联 -
类图中的常用版型?类图的抽象层次?
边界类 ,实体类 , 控制类 -
类图的抽象层次?
概念层
说明层
实现层 -
面向对象设计的原则?
- 开闭原则:开:对扩展开放 闭:对修改封闭
- 替换原则:子类可以在任何地方替换父类
- 依赖倒置原则:依赖关系应该是尽量依赖接口(或抽象类),而不是依赖于具体类
- 接口分离原则:使用多个专门的接口比使用单一的总接口要好,使用多个专用接口比使用单一的复合接口更好
-
-
活动图
-
什么是活动图?活动图有什么用?
活动图描述系统从一种活动转换到另一种活动的整个过程
活动图通常对业务过程、工作流和用例实现进行建模 -
活动图中包含哪些建模元素?
- 初始节点 一个黑点,表示活动的开始,只能有一个
- 活动终点 圆圈套黑点,表示活动处理完成
- 活动节点 表示一个活动 用半椭圆表示(区分于状态)
- 转换 当一个活动结束时,控制流就会马上传递给下一个活动节点 一条带箭头的直线
- 分支和监护条件 用菱形表示,它有一个进入转换(箭头从外指向菱形),一个或多个离开转换(箭头从菱形指向外)
在分支的每个离开转换上都会有一个监护条件,用来表示满足什么条件的时候执行该转换 - 分岔与汇合 在UML中,采用同步线对分岔和汇合来对并发事件流建模,同步线是一种水平或垂直的粗线段
- 带泳道 区分操作角色
-
活动图中的分支和分岔?
分支是一个控制流选择某一个方向继续执行,控制流是串行的
而分岔则是控制流的分开 控制流是并行的 -
活动图中的对象流?
-
-
包图
-
什么是包图?包图有什么用?
组织代码
-
包图包含哪些基本建模元素?
包 类 -
什么是包?
在UML中,包是用于把建模元素组织成组的通用机制。
分组事物 是其他建模元素的容器
* 包图的建模原则?
重用等价原则、共同重用原则、共同闭包原则、非循环依赖原则
-
-
对象图
-
什么是对象图?对象图有什么用?
对象图表示一组对象和它们之间的联系
-
对象图中包含哪些建模元素?
对象
链接 -
对象图与类图的比较?
对象是类的实例
对象图组织类 类图组织类
-
-
状态机图
-
什么是状态机图?状态机图有什么用?
状态机图描述状态到状态的控制流程,常用来对系统的动态特征建模
-
状态机图包含哪些建模元素?
-
初态和终态
开始的状态 用实心圆表示 只能有一个
终态 点外有圈 可以有多个 -
源状态和目标状态
两个状态,看名字也能知道这两个状态是要做什么的
-
转换
事件[监护条件]/动作- 触发事件
- 监护条件
- 动作
-
分支
-
-
怎样建模状态机图?
- 寻找主要的状态
- 确定状态之间的转换
- 细化状态内的活动和转换
- 用复合状态展开细节
-
-
交互图
-
交互图包括几类图?分别描述什么,有什么用?
顺序图、通信图、定时图、交互概述图 -
顺序图包含哪些基本建模元素?
--对象、生命线、控制焦点、消息 -
通信图?
通信图描述了系统中对象之间通过消息进行的交互,强调了对象在交互行为中承担的角色
-
顺序图与通信图的比较?
- 顺序图强调消息的时间顺序,通信图强调参加交互的对象的组织,两者可以相互转换
- 顺序图不同于通信图的两个特征:
- 顺序图有对象生命线
- 顺序图有控制焦点
- 通信图不同于顺序图的特征:
- 通信图必须有消息顺序号
-
顺序图与定时图的不同?
-
交互概述图是哪两种图的综合?
-
-
其他图
- 构件图
- 部署图
- 复合结构图
- Profile图
part3 实际作图
下面对着几个图重点建模:
用例图,类图,活动图,状态机图
使用工具Enterprise Architect 8.0
问题背景
随着网络的不断发展,web2.0时代早已全面到来,web2.0最鲜明的特点就是与用户的交互越来越多,这就导致了用户所参与的网站也越来越多
但是,这些网站都有一个共同的特点--需要登录进行操作,这就使得用户的账号密码不断增加,能否使得账号密码的管理更加轻松?比如用手机
登录网站?
需求分析
对于用户:他们需要输入账号之后,用手机确认该请求之后就可以登录了,用户也可以向数据库中添加网站信息(包括地址,账号和密码)
对于网站:他们收到用户请求之后,由服务器向用户的手机发送登录请求,用户如果在规定时间内确认该请求,将登录,否则登录超时
用例图
(这里等简书markdown下可以传图片再增加吧)
Image
网友评论