自从面向对象编程语言在软件开发中成为主流之后,遵循面向对象技术特点的软件设计工作,也一并发展了起来。
面向对象设计
自从面向对象编程语言在软件开发中成为主流之后,遵循面向对象技术特点的软件设计工作,也一并发展了起来。
首先要提出一个问题,就是设计的工作是要做什么/p>
它包括的范围其实是很广泛的,从搜集用户需求,进行业务分析,到绘制系统流程图等。可以说,在动手编写代码之前,程序员要做的都属于设计工作。
就像建造房屋一样,先确定要造的房屋类型,然后是选址,设计样式。最后工程师带领施工队按照设计图纸将房子造出来。
而面向对象技术,因为其封装、继承、多态等特点,在对现实世界建模时,可以方便地以自然思维将事物抽象为计算机可处理的数据。关于面向对象技术的详细说明,可参看往期文章学好面向对象编程语言的关键,在于掌握它们的共通结构与特性 。
要做的事情清楚了,思维工具也有了,接下来就是如何将工作成果表述出来。一个相当有力的工具就是统一建模语言(Unified Modeling Language,简称UML),下一节会对其进行入门级的介绍。
最后会以一个示例讲述在面向对象设计中,如何应用UML来完成建模工作。
UML概述
UML虽然也是一门“语言”,但它其实是一套图形化的符 系统。UML最主要的作用,就是在现实世界与程序代码之间建起一座桥梁。
这就是UML的“统一”所要求的,所以它的各种图形都有着严格的定义。包括形状、连接线的方向、方法与属性的标明等。
遵循统一标准的好处,就是方便了沟通。当设计的各个阶段的成果绘制成UML图保存下来时,那么无论是团队内部协作,还是对外交流,大家都省去了学习符 表示法的时间,可以直接掌握设计意图。
用例图
类图:表示类的规格和类之间的关系。
对象图
时序图:将实例之间的相互作用表示为时间序列。
活动图
通信图:将实例之间的相互作用表示为组织结构。
组件图
部署图:表示硬件、 络等系统的物理结构。
租车业务整体流程
需求定义阶段
从上述业务分析可知,这个线上租车系统可以承担的自动化工作,包括展示车辆信息,处理预订订单,车辆出库,跟踪车辆行驶情况,以及车辆归还入库这些功能。
使用用例图展示客户与服务提供商可以使用的功能。
租车业务类图
从上图可以看到,Car作为系统的基本单元,被其他类聚合使用。关于聚合,这是一种整体与个体之间的关系,即has-a关系。而组合则要更高一级,是包含关系。例如汽车与发动机就是组合关系,因为离开了发动机,汽车就不可用了。
关联关系则比聚合还要弱一级,但需要注意的是,在程序代码中,关联与聚合的语法是一样的,它们的差异是存在于语义上的。这也是UML设计能比代码包含更多信息的优势。
类图表示的是类之间的静态关系,要看到对象实例之间的消息调用,则还要使用时序图。下面分步骤绘制,先看预订流程的时序图。
归还车辆时序图
对象间的交互已经有了,接下来就是具体方法的实现过程。说明方法的执行过程,使用活动图比较适合。下面选取CheckOut方法,对其绘制活动图进行说明。

CheckOut流程活动图
至于其他功能,有兴趣的同学们可以自行绘制。实际项目所产出的UML设计,则会复杂得多,但只要掌握好面向对象设计的理念,以及UML工具的图形细节,那么无论是阅读既有设计,还是自己通过绘图表达设计想法,都能够做到得心应手。
文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览92242 人正在系统学习中 相关资源:vissim电子仿真软件-嵌入式文档类资源-CSDN文库
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!