学无止境,精益求精

十年河东,十年河西,莫欺少年穷

学历代表你的过去,能力代表你的现在,学习代表你的将来

我每次写博基本都是这样开头,除了激励自己,每句话也都挺有道理!

呵呵,今天是阴历2017年我工作的最后一天,后天就可以开车回家了!心情还是蛮不错滴!

闲来无事,写写博客其实蛮好的!

依稀记得前不久阿里巴巴商业项目智能机器人对外招收开发人员。我也很荣幸被法本信息(外包公司,亦是上市的外包公司,据说蛮牛的)的招聘人员看中,并致电给我。

当时接到电话,自己还是蛮兴奋的,虽说是外包公司致电,但毕竟也是阿里巴巴项目。

于是跟招聘人员天南海北阔谈高论了一段时间,不过让我印象比较深的是:招聘人员问我是否能看的懂UML类图,是否会设计模式并举例,是否...等

总之,一般的招聘人员都是了解对方的意愿,目前情况,在职离职等信息。

从外包公司招聘人问我的问题,可以看出阿里对招聘开发人员的技术要求是有一定高度的!不过,很荣幸,我通过了招聘人员的‘人事面试’。

于是耐心的等待正宗阿里巴巴的面试官电话...

三天后,我的电话铃声响起...

那时晚上的八点左右,来电方是一个固定电话,显示的归属地为杭州。

接起电话,对方亮明了他的身份:我是阿里巴巴面试官X某某,你好,是陈XX先生吗?

就这样,一个电话面试开始了...

对方直接开门见山,我的问题不多,就两个!第一个题目是:请您给我解释下委托与事件的关联与区别?

我也随之进行了回答:事件是一种特殊的委托,事件可通过订符号+ 来订阅一个事件,取消一个事件订阅可通过符号 - 来进行,委托和事件都类似于C++中的指针,他们都允许把函数作为参数来进行传递,以及介绍了C#2.0 3.5 4.0 4.5 等框架委托的发展史,也就是说:微软最先推出委托,后来有了匿名表达式,再后来有发展成Lambda表达式,到现在我们熟知的Linq表达式等都和委托有着关联。

第一道面试题回答完毕。

对方:很好,我的第二道面试题是:请您解释下MVC中的路由机制?

我也随之进行了回答:传统的asp也好还是aspx也罢,他们的访问路径都是直接映射了他们的物理路径。在MVC中是通过配置Route文件来映射路径的,主要通过Controller 和 Action 来控制,就是说:来了一个URL,首先去匹配对应的Controller,然后找到对应的Action,如果URL路径中带有参数,最后再去匹配参数。

第二道面试题回答完毕。

随之,他说:您现在居住在苏州是吧,招聘人员说你目前在职对吧,等等

针对这些问题,我知道我回答的他还算满意!

随后,他说如果合适,会电话通知来杭州进行笔试。

漫长的等待,直到今天也没有电话了,看样子我被阿里面试官否决了!

呵呵,这个挺遗憾的!

OK,今天真是鬼扯太多,还是进入咱们今天的话题吧!

当然,这篇文章写得很好,也是依照大话设计模式一书写的,地址为:http://www.uml.org.cn/oobject/201610282.asp

之前看大话设计模式一书时,把UML类图也简单了解了下,但自己并没有深入研究,更不知道大公司这么看中UML类图。

1、问:在UML类图中如何表示一个类?

答:通常用一个三层结构的矩形来表示一个类

如下图:

第一层:类的名称,如果类的名称为斜体,则该类为抽象类

第二层:类的属性,比如人类有年龄、性别、身高,体重等,注意:如果属性前边用 + 号标识,则意味着该属性为共有属性(Public)。用 - 号标识,则该属性为私有属性(Private)。用 # 号标识,则该属性为保护的(Protected)

第三层:类的操作、方法或行为,比如人类可以吃饭,也会睡觉,还会说话等,注意:如果行为前边用 + 号标识(Public)。则意味着该行为为共有属性(Private)。用 - 号标识,则该行为为私有属性(Protected)

2、如果表示类与类之间的继承关系?

答:用空心三角加实线来表示

如下图:

鸟继承动物抽象类

3、问:类和类之间的依赖关系用什么表示?

答:用带有箭头的虚线来表示

如下图:

如上图所示:动物无论是新陈代谢还是繁殖都需要依赖氧气、水、食物等

依赖关系代码展示(动物依赖氧气和水):

4、问:类和类之间的关联关系用什么表示?

答:用带有箭头的实线来表示

如下图:

企鹅是特殊的鸟,不会飞会游泳,而且随着气候的变化,他们要进行集体迁徒,也就是说,当气候发生变化时,他们就会长途跋涉到另一个地方,因此:企鹅是和气候是有关联的!

人类何尝和钱没有关联,当地上有100W时,想必大多数人都会弯腰捡钱(马云除外)

关联关系代码展示:

企鹅继承鸟类,但企鹅和大雁等都和气候相关,因此,在关联关系中,我们可以把被关联的类对象写成私有的!毕竟并不是所有的鸟都随着气候变化而长途跋涉‘’;

5、问:如何表示类继承/实现接口?

答:用空心三角加虚线来表示

如下图:

大雁都会飞,因此,大雁可以实现飞翔接口

代码如下:

大雁实现 IFly 接口

6、问:如何展示一个接口?

答:展示接口图示有以下两种

顶端有<<interface>>标识的矩形

如下图:

代码如下:

棒棒糖展示法

如下图:

代码如下:

7、问:如何展示类与类之间的聚合关系?

答:用空心的菱形加带有箭头的实线来表示

如下图:

所谓聚合关系,在此说明一下:聚合关系表示一种弱的‘拥有’关系,体现的是 A 对象可以包含 B 对象,但是 B 对象不是 A 对象的一部分。

比如:大雁是群居动物,一个大雁群可以有很多只大雁。类似于这种情况,即可视为他们之间拥有聚合关系。

代码如下:

8、问:如何展示类与类之间的组合关系?

答:用实心的菱形加带有箭头的实线来表示

如下图:

所谓组合关系和聚合关系可理解为:聚合关系多你一个不多,少你一个不少。组合关系是有严格的整体,缺一不可!

因此:大雁群众少一个大雁无伤大雅,但鸟没有了翅膀就不行了!因此,组合关系可理解为严格的整体,缺一不可!

因此,在构建鸟类时,也一定要完成翅膀的构建,

代码如下:、

至此,UML基本类图就说完了!

关于更复杂的类图,大家可自行参考其他资料!

最后,贴出一张完成的类图

看懂上述类图的所有条条框框,类图基本就学会了!

呵呵,下班啦。

拜~

@陈卧龙的博客

评论中有人说我装逼,奈何,我并没有装逼,有图为证:

UML类图应该怎么看?的更多相关文章

  1. 看懂UML类图与时序图

    看懂UML类图和时序图 这里不会将UML的各种元素都提到,我只想讲讲类图中各个类之间的关系: 能看懂类图中各个类之间的线条.箭头代表什么意思后,也就足够应对 日常的工作和交流: 同时,我们应该能将类图 ...

  2. 看懂UML类图和时序图

    看懂UML类图和时序图 这里不会将UML的各种元素都提到,我只想讲讲类图中各个类之间的关系: 能看懂类图中各个类之间的线条.箭头代表什么意思后,也就足够应对 日常的工作和交流: 同时,我们应该能将类图 ...

  3. [转] 看懂UML类图和时序图

    PS: 组合关系:实心,一个类A属于另一个类,或多个类,但是类A不能单独存在去使用,A一般是一种抽象的东西 聚合关系:空心,一个类A可以单独存在使用 不论组合聚合,A的方法都会被直接调用. 看懂UML ...

  4. 【软件设计】UML类图怎么看

    前言 无论使用哪种语言,都离不开面向过程与面向对象两个流派,而类图是面向对象程序设计中至关重要的一种软件表达形式,如何看懂类图,并设计好的软件架构,是我们作为软件工程师必不可少的技能之一. 今天小黑把 ...

  5. 【转】学习设计模式之前你必须掌握的-看懂UML类图

    UML类图是UML(unified modeling language,标准建模语言)五种图示法中静态图的一种-用来描述系统中类的静态结构,不仅定义系统中的类,表示类之间的联系如关联.依赖.聚合等,也 ...

  6. 两张图示轻松看懂 UML 类图

    一个类如何表示 第一格为类名 第二格为类中字段属性 格式:权限 属性名:类型 [ = 默认值 ] 权限:private.public .protected.default,它们分别对应 -.+.#.~ ...

  7. 看懂UML类图笔记

    在学习设计模式的时候,经常会遇到UML类图,所以就找了一些资料,做一些笔记. 从一个示例开始 下面这个类图,类之间的关系是我们需要关注的: 车的类图结构为<<abstract>> ...

  8. UML类图(下):关联、聚合、组合、依赖

    前言 上一篇文章UML类图(上):类.继承.实现,讲了UML类图中类.继承.实现三种关系及其在UML类图中的画法,本文将接着上文的内容,继续讲讲对象之间的其他几种关系,主要就是关联.聚合.组合.依赖, ...

  9. UML类图(上):类、继承和实现

    面向对象设计 对于一个程序员来说,在工作的开始阶段通常都是别人把东西设计好,你来做.伴随着个人的成长,这个过程将慢慢变成自己设计一部分功能来实现,自己实现.如果要自己设计,无论是给自己看,还是给别人看 ...

随机推荐

  1. Java并发编程(十四)Java内存模型

    1.共享内存和消息传递 线程之间的通信机制有两种:共享内存和消息传递:在共享内存的并发模型里,线程之间共享程序的公共状态,线程之间通过写-读内存中的公共状态来隐式进行通信.在消息传递的并发模型里,线程 ...

  2. (后端)Java新人入职——配置环境及安装开发工具(完全)

    转自csdn:执笔记忆的空白 很多新人对于进入新公司,相关工具的安装和环境变量的设定很苦恼.又苦于没有完整的配置开发环境的资料,我这里写一篇操作步骤的案例, 至少让你能把开发工具安装起来,并实用起来, ...

  3. Python:BeautifulSoup移除某些不需要的属性

    很久之前,我看到一个问题,大概是: 他爬了一段html,他获取下了所需的部分(img标签部分),但是不想保留img标签的某些属性, 比如 <img width="147" h ...

  4. python第四十一天---作业:简单FTP

      作业要示: 开发简单的FTP:1. 用户登陆2. 上传/下载文件3. 不同用户家目录不同4. 查看当前目录下文件5. 充分使用面向对象知识 REDMAE 用户登陆 1.查看用户目录文件 2.上传文 ...

  5. 安装office2010提示要安装MSXML6.10.1129.0解决方法

    系统win7 32位 安装office2010出现了错误,提示要安装MSXML6.10.1129.0解决方法 1.下载MSXML6.10.1129.0进行安装 2.若本机已安装过不管用: a.在运行里 ...

  6. centos7搭建SVN+Apache+IF.svnadmin支持https实现web管理SVN

    阅读目录 1. 介绍 2. 软件准备 3. 建立SVN Server仓库 4. 配置安装PHP&IF.SVNadmin 5. 启动服务 1.介绍 公司最近想把Windows server平台的 ...

  7. Shell脚本应用(for、while循环语句和case分支语句)

    1.for:读取不同的变量值,逐个执行同一组命令,直到取值完毕退出,变量值以空格分隔 语法: for  变量值  in  取值列表 do 命令序列 done 2.while:重复测试某个条件,成立则执 ...

  8. Linux 小知识翻译 - 「协议(protocol)」

    对于理解服务器和网络来说,「协议」是不可缺少的概念. 「协议(protocol)」有「规则,规定」的意思. 实际上「协议」的函数很广,在通信领域,「协议」规定了「在通信时,什么样的情况下,以什么样的顺 ...

  9. 17秋 软件工程 团队第五次作业 Alpha Scrum8

    17秋 软件工程 团队第五次作业 Alpha Scrum8 今日完成的任务 世强:部门人员管理界面设计编写: 港晨:设计主页面: 树民:web后端框架与前端对接: 伟航:app前端界面的美工: 陈翔: ...

  10. 分包收集 android 运行的 logcat 日志

    # -*- coding:utf-8 -*- import os import time from common import Common comm = Common() cmd = r'adb l ...