为什么用UML

项目需要,在项目开发实现前期进行框架技术设计(条条大路通罗马通罗马,画图或者写代码都可以,适合就可以!)。

用户的交互我们通常用Axure(原型设计)体现,

框架和功能结构设计则用UML体现,清楚自已使用目的,是否有用仁者见仁智者见智。

A:方便业务设计交流,理清思路,统一的规范描述(代码高层设计和交流的表述,避免不同表达!);

B:建模工具可以把设计直接转换为代码(基本不用,不用把精力放在“把UML用到极致“);

uml网上一搜一大堆,推荐一本书thinking in uml

把几个关键点记录下

 UML类图关系:

泛化(继承)、实现、聚合、组合、关联、依赖

泛化(继承)--用于Interface和Interface之间,或者用于Class和Class之间

实现--指的是一个class类实现interface接口(可以是多个)的功能

关联:一个类是另一个类的成员变量,可以是单向的,也可以是双向的。

依赖:三种表现形式通过形参、通过局部变量、通过静态变量。

关联与依赖区别

用斧子砍树,我和斧子之间就是一种依赖,我和同学就是一种关联。

依赖是一种弱关联,只要一个类用到另一个类,use了一个类,依赖是一种偶然的关系,比较陌生。

关联是类之间的一种关系,例如夫妻这种关系是非常明显的,比较熟悉。

聚合关系是关联关系的一种,是强的关联关系;关联和聚合在语法上无法区分

聚合关系中作为成员变量的类一般使用 set 方法赋值。

强弱排序
泛化(继承)= 实现 > 组合 > 聚合 > 关联 > 依赖

UML基本关系链接表示

  • 车是抽象的,小汽车和三轮车是车的实现关系----▽
  • BMW是小汽车的一种,需要继承继承小汽车,泛化关系(继承)——▽
  • 方向盘和发动机是小汽车一部分,是组合关系——♦
  • 公司由职员组成,公司散了人都还在,聚合关系——♢
  • 身份证代表这个具体人,人有身份证 has a,这是关联关系——>
  • 职员上班要开车或坐公交 或坐地铁,依赖关系-->

三角形为实现和泛化,表示上下关系,其中虚线为实现

菱形为聚合和组合,表示组成从属关系,其中空心为聚合

箭头为关联和依赖,表示平级关系,其中虚线为依赖

UML的基本图

静态图分为:用例图,类图,对象图,包图,构件图,部署图。

动态图分为:状态图,活动图,协作图,序列图

StarUML之一、UML的相关基本概念的更多相关文章

  1. 常用SQL操作(MySQL或PostgreSQL)与相关数据库概念

    本文对常用数据库操作及相关基本概念进行总结:MySQL和PostgreSQL对SQL的支持有所不同,大部分SQL操作还是一样的. 选择要用的数据库(MySQL):use database_name; ...

  2. linux设备驱动归纳总结(二):模块的相关基础概念【转】

    本文转载自:http://blog.chinaunix.net/uid-25014876-id-59415.html linux设备驱动归纳总结(二):模块的相关基础概念 系统平台:Ubuntu 10 ...

  3. linux设备驱动归纳总结(一)内核的相关基础概念【转】

    本文转载自:http://blog.chinaunix.net/uid-25014876-id-59413.html linux设备驱动归纳总结(一):内核的相关基础概念 xxxxxxxxxxxxxx ...

  4. 一、HTML概述 二、web相关的概念 三、HTML的常用标签

    一.HTML概述###<1>概念 HTML:Hypertext Markup Language,超文本 标记语言,用来描述网页的一种语言. 非编程语言,由浏览器直接解释运行. ###< ...

  5. WiFi相关基础概念

    转自:https://blog.csdn.net/lbaihao/article/details/73250798 一.WiFi相关基础概念 1.什么是wifi 我们看一下百度百科是如何定义的: Wi ...

  6. (转载)小白的linux设备驱动归纳总结(一):内核的相关基础概念---学习总结

    1. 学习总结 小白的博客讲的linux内核驱动这一块的东西比较基础,因此想通过学习他的博客,搭配着看书的方式来学习linux内核和驱动.我会依次更新在学习小白的博客的过程的感悟和体会. 2.1 内核 ...

  7. 【Linux开发】linux设备驱动归纳总结(二):模块的相关基础概念

    linux设备驱动归纳总结(二):模块的相关基础概念 系统平台:Ubuntu 10.04 开发平台:S3C2440开发板 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ...

  8. 【Linux开发】linux设备驱动归纳总结(一):内核的相关基础概念

    linux设备驱动归纳总结(一):内核的相关基础概念 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ...

  9. UML学习笔记—基本概念和初始阶段

    chpater1 1.什么是分析和设计 分析:对问题和需求的调查研究 设计:满足需求的概念上的解决方案 做正确的事(分析)和正确地做事(设计) 2.什么是Object-Oriented-Analysi ...

随机推荐

  1. C++中的四个智能指针

    只能指针的行为类似常规指针,重要的区别是它负责自动释放所指向的对象.智能指针定义在memory头文件中. 1. auto_ptr(C++11已经舍弃) 由new expression获得的对象,在au ...

  2. 每天玩转3分钟 MyBatis-Plus - 4. 高级查询(二)(条件构造器)

    每天玩转3分钟 MyBatis-Plus - 1. 配置环境 每天玩转3分钟 MyBatis-Plus - 2. 普通查询 每天玩转3分钟 MyBatis-Plus - 3. 高级查询(一) 每天玩转 ...

  3. windows10卸载虚拟机忘记按照步骤卸载的实际问题

    好久没有写博客了,由于太多事情,工作需要用到虚拟机,结果,虚拟机出问题,,,怎么办???我的办法就是卸载了重新安装一个,结果呢?太心急没有按照不知操作,今天弄了一下午,终于弄好了... 错误原因,用了 ...

  4. Windows 系统安装 Python 3.8 详解

    安装 Python 很简单,但是其中的很多细节未必大家都清楚,趁着给自己安装最新 3.8 版本,把整个过程详细记录下. Python or Anaconda 本节是专门写给一些小白,Python 还没 ...

  5. Linux环境下的network IO

    同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?不同的人在不同的上下文下给出的答案是不同的.所以先限定一下本文的上下文. 本文讨论的背景是Linux环境下的network IO. ...

  6. wget报unable to resolve host address

    Linux系统运行yum安装rpm包的时候提示wget unable to resolve host addresswget:无法解析主机地址.这就能看出是DNS解析的问题. 错误提示 wget: u ...

  7. Python里的装饰器

    装饰器 装饰器是干什么用的? 装饰器可以在不修改某个函数的情况下,给函数添加功能. 形象点来说,从前有一个王叔叔,他一个人住在家里,每天打扫家,看书.于是定义如下一个函数: def uncle_wan ...

  8. Java支付宝PC网站支付功能开发(详细教程)

    一.前言 本案例使用的是Java实现的.使用支付宝的沙盒环境示例.发布需要换成正式环境.这里就不作详细说明了 本代码适合用来做参考,不要直接复制去使用. 没有账号的需要去平台注册一个: 登录支付宝开发 ...

  9. C语言之灵魂 指针学习

    指针是c语言的难点 称之为c语言的灵魂一点也不为过,不过指针用好了能事半功倍,用不好bug满天飞. 一.指针的概念 指针也是变量只不过是特殊的变量,指针的值是另一个变量的地(也就是变量所在的内存地址) ...

  10. tomcat的编码设置

    Connector port="8080" protocol="HTTP/1.1" URIEncoding="UTF-8"          ...