面向对象设计自从面向对象编程语言在软件开发中成为主流之后,遵循面向对象技术特点的软件设计工作,也一并发展了起来 。
首先要提出一个问题,就是设计的工作是要做什么?
文章插图
它包括的范围其实是很广泛的,从搜集用户需求,进行业务分析,到绘制系统流程图等 。可以说,在动手编写代码之前,程序员要做的都属于设计工作 。
就像建造房屋一样,先确定要造的房屋类型,然后是选址,设计样式 。最后工程师带领施工队按照设计图纸将房子造出来 。
而面向对象技术,因为其封装、继承、多态等特点,在对现实世界建模时,可以方便地以自然思维将事物抽象为计算机可处理的数据 。关于面向对象技术的详细说明,可参看往期文章学好面向对象编程语言的关键,在于掌握它们的共通结构与特性 。
要做的事情清楚了,思维工具也有了,接下来就是如何将工作成果表述出来 。一个相当有力的工具就是统一建模语言(Unified Modeling Language,简称UML),下一节会对其进行入门级的介绍 。
最后会以一个示例讲述在面向对象设计中,如何应用UML来完成建模工作 。
UML概述UML虽然也是一门“语言”,但它其实是一套图形化的符号系统 。UML最主要的作用,就是在现实世界与程序代码之间建起一座桥梁 。
这就是UML的“统一”所要求的,所以它的各种图形都有着严格的定义 。包括形状、连接线的方向、方法与属性的标明等 。
遵循统一标准的好处,就是方便了沟通 。当设计的各个阶段的成果绘制成UML图保存下来时,那么无论是团队内部协作,还是对外交流,大家都省去了学习符号表示法的时间,可以直接掌握设计意图 。
文章插图
UML 2 定义了13种图形,我们可以了解一下,对于重要的图形,会给出图示 。所有图形采用bouml工具绘制 。
用例图:表示系统提供的功能和使用者之间的关系 。
文章插图
用例图
类图:表示类的规格和类之间的关系 。
文章插图
类图
对象图:表示实例之间的关系 。
文章插图
对象图
时序图:将实例之间的相互作用表示为时间序列 。
文章插图
时序图
活动图:表示一系列处理中的控制流程 。
文章插图
活动图
通信图:将实例之间的相互作用表示为组织结构 。
文章插图
通信图
状态机图:表示实例的状态变化 。
文章插图
状态机图
组件图:表示文件和数据库、进程和线程等软件的实现结构 。
文章插图
组件图
部署图:表示硬件、网络等系统的物理结构 。
文章插图
部署图
复合结构图:表示具有整体-部分结构的类的运行时结构 。
包图:表示包之间的关系 。
交互概览图:将根据不同条件执行不同动作的时序图放到活动图中进行表示 。
定时图:采用带数字刻度的时间轴来表示实例之间的状态迁移和相互作用 。
建模什么是统一说了,用到的图形语言也说了,最后就得说一说怎么建模了 。我们进行面向对象的设计工作,终归是要让计算机来帮助我们处理那些繁琐、重复性的工作 。
那么,接下来我们就以一个租车业务为示例,使用UML工具进行设计过程吧 。我们模仿实现一个线上租车应用,为了简化讨论,只提及最关键的几个功能点 。
业务分析阶段
用户想要租一辆车开,第一步是要先挑选合适的车 。例如是城市代步,还是郊游远行等 。选好车之后,就是预约下单 。用户办理好手续,将车开走使用,最后完成归还手续 。
那么,对以上场景分析之后,可以通过活动图把整体流程画出来 。
推荐阅读
- 设计师|鉴赏美玉,珠宝玉石设计师—王艺航
- 面向AI应用分布式执行框架
- 客厅隔断墙装修如何设计
- 小米|折痕更浅更轻薄!小米Mix新折叠旗舰爆料:采用全新铰链设计
- 美式装修要如何设计
- 室内墙绘的设计要点是什么
- 火车|黄黄高铁今日开通运营:设计时速350公里、武汉到杭州仅需3小时
- iPhone|对比苹果13!iPhone 14 Pro新外形曝光:边角设计更圆 打孔屏扎眼
- UI设计师与平面设计师的区别是什么
- C++面向对象继承与多态