UML相关知识


一、UML概述

1、什么是UML
    统一建模语言(Unified Modeling Language)。用于说明、可视化、构建和编写一个正在开发的、面向对象的、软件密集系统的开发方法。
UML展现了一系列最佳工程实践,这些最佳实践在对大规模,复杂系统进行建模方面,特别是在软件架构层次已经被验证有效。
    项目开发的说明书(设计图)。
2、UML是做什么的
    帮助建立软件开发过程和各种模型
    主要目的是为了让开发者之间进行有效的交流。
        开发者与设计者之间的交流
        开发者与开发者之间的交流
        开发者与管理者之间的交流
    适合大型项目和大型团队的开发

3、UML的应用领域
    UML的目标是以面向对象的方式来描述任何类型的系统,常用于建立软件的模型。
4、我对UML的看法
    不建议用UML生成代码。
    没有完美的UML图,够用就行,图是死的,人是活的。
    UML主要功能是为了更好的让开发团队与用户之间进行沟通交流。
    先结对学习UML目的以应用、看懂为主(有利于后期工作),以画图为辅。
    但需要长期学习,为后期成为系统分析师、架构师、产品经理、项目经理打下基础。

二、Rational Rose四种视图与UML的8中图形关系

    Rose启动后自动创建四种视图:
        用例视图: Use Case View
            帮助理解和使用系统,这种图展示了系统的参与者和用例是怎么相互作用的,包括了系统中的所有角色。
            用例图:Use Case Digram
            时序图:Sequence Digram
            协作图:Collaboration Digram
            活动图:Activity Digram
            这种视图的主要使用都是用户、分析人员、项目管理人员。
        逻辑视图: Logical View
            逻辑视图关注的是系统如何实现用例中提出的功能,它提供系统的详细图形,描述了组件间如何关联。
            类图:Call Digram
            状态图:Statechart Dirgam
            这种视图的主要使用者是开发人员,开发人员包括:程序员、需求分析师、测试工程师、项目经理。
        构件视图: Component View
            这种视图关注的是代码模板间的关系,通过组件视图可以知道哪些代码是组件,哪些是代码库,哪些是运行组件,会默认有一个Component图表。
            这种视图的主要使用者是负责控制代码、编译、部署应用程序的人员。
        部署视图: Deployment View
            这种视图关注的是系统的实际部署,进程和设备间的实际连接。
            这种视图的使用者是用户和软件的发布人员。

三、用例图:详细表示所有的用例需求,不考虑细节

 1、用例图的作用
        主要用它来描述需求,画图时要从用户的角度出发,主要用于与用户之间的交流。
    2、用例图的要点
        正确反应用户的需求
        每个用例的内部实现
        细节不是本阶段要考虑的问题
    3、用例图包括
        参与者
        用例
        用例之间的关系
    4、如何确定参与者
        谁使用系统
        谁负责启动、关闭系统
        谁查询数据
        谁提供数据
        谁安装、升级系统
    5、什么是用例
        是系统的使用过程,一个用例就是一个功能需求。

四、类图:主要表示类与类之间的关系,不用详细考虑类的属性和方法

    1、类图的主要作用
        主要用来描述类的内部结构和类与类之间的关系。
        类图中不显示暂时性的消息,是面向对象剑魔时的主要组成部分。
    2、类图主要包括
        名称:类名
        属性:类的成员变量
            访问权限
            变量名
            类型
        操作:类的成员函数
            访问权限
            函数名
            参数名
            参数类型
            返回值类型
        职责:说明此类具体负责的任务,解决什么问题
    3、类之间的关系
        继承关系:空心箭头实线来表示继承关系,子类指向父类
            一个类Test继承Base类的属性和行为,并可以增加自己的属性和行为。
        实现关系:空心箭头虚线来表示继承关系,子类指向父类
            一个类Test继承一个抽象类,父类中的函数定义为纯虚函数,子类继承后覆盖所有纯虚函数。
        依赖关系:箭头和虚线来表示依赖关系,依赖者指向被依赖者
            一个类A中使用到类B(类A中的函数的参数或返回值类型是类B),这种关系是一种偶然、临时的,是一种非常弱的关系。
        关联关系:箭头和实线来表示关联关系,依赖者指向被依赖者
            是一种强依赖关系,类A的属性(成员变量)是类B。
        聚合关系:实心菱形和箭头实线来表示聚合关系,菱形指向整体,箭头指向部分。
            聚合关系是一种关联关系的特例,它体现的是整体与部分。
            整体与部分之间是可分离,它们可以具有各自的生命周期。
            从代码层面来讲与关联是一致的。
        组合关系:实心菱形和箭头实线来表示组合关系,菱形指向整体,箭头指向部分。
            组合关系也是一种聚合关系的特例,这种关系比聚合更强,也称为强聚合,同样也体现出整体与部分,但此时的整体与部分是不可分隔的。
            从代码层面来讲与关联是一致的。
        从代码实现层面只有继承、包含、依赖。
    用例图和类表示对象之间消息的发送顺序,值考虑正确情况。

五、时序图:主要表示对象之间消息的发送顺序,只考虑正确情况。

用来表示对象之间的关系,同时强调对象之间的交互。
时序图向用户表示时间随着时间的推移,清晰的可视化轨迹。
时序图用来表示项目中的某个操作中如何进行的,具体的步骤是什么。

六、状态图

用来表示对象的状态变化,用于帮助开发人员理解系统中对象的行为。
主要有状态,生命周期,条件,状态转换,事件和动作。

七、活动图

活动图的本质就是流程图,它描述了系统的活动、判断点和分支。
侧重于操作而不是对象,重点表示逻辑变化。
一个动作的流程图一般包括起点、终点、操作。
泳道:用于多种角色参与一个过程,一个活动只能属于一个泳道。

八、协作图

主要用来描述对象之间的交互关系,强调参与交互的各对象的组织。
需要按照组织对控制流程进行建模时选择画协作图。
协作图与时序图的区别:
    时序图描述了交互过程中的时间顺序,但没有表达对象之间的关系。
    协作图描述了对象间的关系但时间顺序必须从时序图中获得。
合格的协作图和时序图主义相同,可互换,而不丢失信息。

Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint polocy. If reproduced, please indicate source Love丶伊卡洛斯 !
评论
 Previous
C++操作符重载相关知识 C++操作符重载相关知识
一、操作符函数重载什么是操作符函数:在C++中针对类类型的对象的运算符,由于它们肯定不支持真正的运算操作,因此编译器会将它们翻译成函数,这种就叫做操作符函数(运算符函数)。 编译器把运算翻译成运算符函数,可以针对自定义的类类型设计它独有的运
2019-09-05
Next 
我的项目的相关问题 我的项目的相关问题
由于个人编程是,使用的自己的getch.h头文件,导致可能部分项目无法成功通过编译。Linux系统,需要将getch.h添加到user/include下Windows系统,需要将getch.h头文件换为conio.h do
2019-09-04
  TOC