专栏首页谦谦君子修罗刀程序员面试闪充--UML类图关系

程序员面试闪充--UML类图关系

我们曾借白茶清欢等一个人,曾借花开花落叹宠辱不惊。今天借着类图来了解面向对象又有何不可呢?

小视频传送门:小视频传送门

对象模型中,类图是来描述系统的静态结构,是对模拟客观世界的对象及对象见的联系的映射。

一、类的表示

UML中矩形表示类,用两条横向把矩形分成上、中、下3个区域。分别表示类名,属性和操作。

属性或者方法名称前加上 “+”、“-”或者“#”号则表示了这个属性或者方法的可见性。“+”表示public,“-”表示private私有的,而“#”号则表示protected也就是受保护的。

二、关联的表示

1)单向关联 单向关联用一个带箭头的直线表示。比如说亚当与肋骨,每个亚当类持有一个类型为肋骨类的成员变量类实现。

2)双向关联 所谓双向关联就是双方各自持有对方类型的成员变量,用不带箭头的直线表示。比如说顾客类中维护着一个产品数组,表示一个顾客购买了哪些产品,而在产品类中维护这一个顾客类型的成员变量表示这个产品被哪个顾客所购买。

3)多元关联 多元关联在绘制数据库相关的图形中常见,用一个菱形符号联结相关联的连线。 像图中所示一样,程序猿小哥哥们就会使用开发语言去开发项目呢!

4)受限关联 在UML类图中用一个带有箭头并且指向自身的直线表示。受限关联由两个类及一个限定词组成。限定词是一种特殊属性,用来减少关联的重数。比如说一个文件夹和文件两个类,一个文件只属于一个文件夹,在文件夹的内容中,文件名唯一确定一个文件,一个文件与文件夹及文件名有关。限定词“文件名”把一对多的关联简化为了一对一的关系。

5)自关联 在系统中可能会存在一些类的属性对象类型为该类本身,这种特殊的关联关系就称为自关联。

6)关联的重数 关联的重数可以用关联连线末端的特定符号表示。 “1+”也可以用“*”代替,表示一个或多个。如果没有符号的话就只表示一对一关联。

三、关系的表示

1)聚合关系 UML中聚合关系中用带空心菱形和箭头的直线表示。聚合关系表示has-a的关系,是一种不稳定的包含关系。它最大的特点就是两个类之间有整体和局部的关系,并且就算没有了整体,局部也可以单独存在。就像卡车与引擎的关系,离开了卡车,引擎还是能单独存在。有你,只是锦上添花,没你,我也能光芒万丈。

2)组合关系 组合关系是用带实心的菱形和箭头的直线表示。它与聚合最大的不同之处就是部分脱离了整体便不复存在。 就像大雁与翅膀的关系一样。翅膀不能脱离了大雁而单独存在。

3)依赖关系 依赖关系用带有指向的独立类箭头的虚线表示~~是虚线啊 一个类A只有依靠另一个类B才能发挥作用就称A依赖于B。 比如说司机这个类,必须要依靠一个车对象才能发挥作用,因此就说司机类依赖于车。

4)继承关系 继承关系用带空心三角形的直线表示。当项目中有多个类出现相同部分的实例变量和方法中,我们就考虑用继承的方法。比如说人类与学生类或者老师类都是继承关系。

既然用过继承,相信大家也一定听说过泛化。 泛化表示is-a的关系,是对象之间耦合度最大的一种关系。实际上,泛化关系是继承的反关系,也就是说子类是从父类继承的,而父类则是子类的泛化。

5)实现 实现是一种类与接口的关系,表示类是接口所有特征和行为的实现。在UML类图中用带空心三角形的虚线表示。

以上就是UML图中类与类之间的关系。

四、面试题

问题1:你认为UML重要么?为什么? 分析:(这不废话吗?没作用你会问我?)UML在设计过程中还是有一定作用的,只是不到真正写代码,永远都不可能明确所有细节。 回答:UML当然很重要。写软件就好像建造建筑物一样。系统越复杂,参与编写与配置软件的人员之间的交流也就越重要。而UML则提供了分析师,设计师和程序员之间在软件设计时的通用语言。现在已经成为了面向对象软件分析与设计建模的事实标准。

问题2:UML类图在系统中是用来做什么的? 回答:类图出现在系统中的不同类来描述系统的静态结构,它用来描述不同的类以及它们之间的关系。

问题3:在UML中,类图由哪几部分组成? 回答:类图由三部分组成。第一部分是类名,每个类必须有一个名字。第二部分是类的属性,属性是指类的性质,也就是类的成员变量。包含了可见性、属性名称、类型和默认值等信息。第三部分是类的操作,操作是类的任意一个实例对象都拥有的行为,是类的成员方法。

问题4:请说明一下组合与聚合的区别 回答:其实对于这些比较基础的题目,相信软件工程专业的小伙伴们是对答如流了。聚合与组合都表示整体与部分的关系,只不过在聚合关系中,成员对象可以脱离整体对象独立存在,而在组合关系中,成员对象与整体对象之间具有同生共死的关系,例如头与嘴巴,如果头没了,那么嘴巴自然也不复存在了。

古语有云:非学无以广才,非志无以成学。视频的最后祝大家Study well(hard) and make progress every day.

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 程序员面试闪充--Block

    1、介绍 Block是OC中非常重要的一种技术手段 ? 2、从c函数和oc函数的区别来定义block C函数写法:int add(int num1, int n...

    谦谦君子修罗刀
  • 程序员面试闪充——面试技巧

    面试,相亲,销售的过程都很类似,抽象一下,它们的本质是什么?我认为是:展示自我和挖掘对方需求的过程。 虽然说简历是工作的敲门砖,非常重要,但面试同样是决定你是否...

    java思维导图
  • 程序员面试闪充 -- KVC&KVO

    一、键值编码KVC kvc&kvo视频讲解 1、介绍 由于oc的语言特性,使得开发者根本不必进行任何操作就可以进行属性的动态读写,这种方式就是Key Valu...

    谦谦君子修罗刀
  • 程序员面试闪充--简历书写

    对于职场来说,简历就如同门面。若是没想好,出了差错,耽误些时日倒不打紧,便是这简历入不了HR的眼,费力伤神还不能觅得好去处,这数年来勤学苦练的大好光阴,岂不辜负...

    谦谦君子修罗刀
  • 程序员面试闪充 -- 性能优化

    CPU 和GPU 关于绘图和动画有两种处理方式CPU(中央处理器)和GPU(图形处理器),CPU的工作都在软件层面,而GPU的在硬件层面。 总的来说,可以使用...

    谦谦君子修罗刀
  • 程序员面试闪充--Cocoapods的详解

    在开发iOS应用时,会经常使用到很多第三方开源类库,比如JSONKit,AFNetWorking等等。可能某个类库又用到其他类库,所以要使用它,必须得另外下载其...

    谦谦君子修罗刀
  • 程序员面试闪充--iOS密码学

    但凡一个有点追求的iOS开发,总得会点加密技术,要不然用户信息就有可能被其他人获取用来做一些对我们不利的事情。 视频地址: 密码学 一、base64 base6...

    谦谦君子修罗刀
  • 程序员面试闪充--版本管理之SVN

    在软件开发过程中,通常一个软件项目要靠多人合作完成的。而在此过程中的修修改改一定会存在一些不可避免的问题。可能一不小心就闹出个大乱子呢。 一、源代码管理的问题 ...

    谦谦君子修罗刀
  • 007尝试使用UML图

    尝试使用uml图来帮助自己快速的构建稳健的程序 uml对理清自己的思路,应该是很有帮助的了

    上善若水.夏
  • 领域驱动设计,让程序员心中有码(三)

      如果说软件工程是在虚拟的世界描绘出人类对于这世界一切大千万物的美好想象,那么也许UML思想应该是这虚拟世界的古老哲学。他就像卢梭在法国大革命前,描述在《社会...

    MavenTalker
  • 2019-5-30-UML基础

    在面向对象的软件分析及设计中,UML是一种产品、架构、开发、测试之间高效、可视化的沟通工具。UML的体系庞大,部分图形的学习曲线较为陡峭,导致在实际使用中容易出...

    黄腾霄
  • UML学习归纳整理

    之前在学校比较系统的学习过统一建模语言UML,但长时间没使用遗忘了许多,最近因工作需要,所以对UML重新学习和梳理一下。UML可帮助我们做软件需求分析和软件设计...

    wblearn
  • 统一建模语言-UML

    伪cs专业,也是无语,还要经常作图。 貌似计算机期刊文章,系统设计需要它。 什么是UML? 百度百科 Unified Modeling Language ...

    热心的社会主义接班人
  • UML类图(上):类、继承和实现

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

    lyb-geek
  • 再学UML-Bug管理系统UML2.0建模实例(三)

      随着软件项目规模和复杂性的增大,有效跟踪和管理项目中存在的缺陷Bug变得越来越重要。每一个软件企业都需要妥善处理软件中的缺陷,这将直接关系到软件过程质量与软...

    小老鼠
  • UML类图还看不懂?来看看这版乡村爱情类图,一把学会!

    最开始听到这个词是有个小伙伴在我的一篇HashMap源码分析文章下的留言:“哥们,你这叫内卷!”。这篇文章深度解释了扰动函数、负载因子以及相关数学方式的结果验证...

    小傅哥
  • 即便是SQL Guy, 也无法逃离UML

    这两天重温数据建模,发现一篇好论文《基于UML的高校教务管理系统的分析、设计与实现》

    Lenis
  • UML建模图实战笔记(全)

    UML:Unified Modeling Language(统一建模语言),使用UML进行建模的作用有哪些那:

    加多
  • .NET应用架构设计—面向对象分析与设计四色原型模式(彩色建模、领域无关模型)(概念版)

    阅读目录: 1.背景介绍 2.问自己,UML对你来说有意义吗?它帮助过你对系统进行分析、建模吗? 3.一直以来其实我们被一个缝隙隔开了,使我们对OOAD遥不...

    王清培

扫码关注云+社区

领取腾讯云代金券