如何解答面向对象设计问题
来源:互联网 发布:linux的ftp怎么开启 编辑:程序博客网 时间:2024/06/05 23:04
对于面向对象设计问题,要设计的对象可能是真实世界的东西,也可能是某个技术任务,不论如何,我们都能以类似的途径解决。以下解题思路适用于很多问题。
步骤1:处理不明确的地方
面向对象设计(OOD)问题往往会故意放些烟幕弹,意在检验你是武断臆测,还是提出问题以厘清问题。毕竟,开发人员要是没弄清楚自己要开发什么,就直接挽起袖子开始编码,只会浪费公司的财力物力,还可能造成更严重的后果。
碰到面向对象设计问题时,你应该先问清楚,谁是使用者、他们将如何使用。对某些问题,你甚至还有问清楚“5W1H”,也就是Who(谁)、What(什么)、Where(哪里)、When(何时)、Why(为什么)、How(如何)。
举个例子,假设面试官让你描述咖啡机的面向对象设计。这个问题看似简单明了,其实不然。
这台咖啡机可能是一款工业型机器,设计用来放在大餐厅里,每小时要服务几百位顾客,还要制作10种不同口味的咖啡。又或者,它可能是设计给老年人使用的简易咖啡机,只有能制作简单的黑咖啡就行。这些用例将大大影响你的设计。
步骤2:定义核心对象
了解我们要设计的东西后,接下来就该思考系统的“核心对象”了。比如,假设要为一家餐馆进行面向对象设计。那么,核心对象可能包括餐桌(Table)顾客(Guest)、宴席(Party)、订单(Order)、餐点(Meal)、员工(Employee)、服务员(Server)和领班(Host)。
步骤3:分析对象关系
定义核心对象之后,接下来要分析这些对象之间的关系。其中,哪些对象是其它对象的数据成员?哪些对象继承自别的对象?对象之间是多对多的关系,还是一对多的关系?
比如,在处理餐馆问题时,我们可能会想到以下设计。
宴席包括很多顾客。
服务员和领班都继承自员工。
每一张餐桌对应一个宴席,但每个宴席可能拥有多张餐桌。
每家餐馆有一个领班。
分析对象关系一定要非常小心——我们经常会作出错误假设。比如,哪怕是一张餐桌也可能包含多个“宴席”(在热门餐馆里,“拼桌”很常见)。进行设计时,你应该跟面试官探讨一下,了解你的设计要做到多通用。
步骤4:研究对象的动作
到这一步,你的面向对象设计应该初具雏形了。接下来,该想想对象可执行的关键动作,以及对象之间的关联。你可能发现自己遗漏了某些对象,这时就需要补全并更新设计。
例如,一个“宴席”对象(由一群顾客组成)走进了“餐馆”,一位“顾客”找“领班”要求一张“餐桌”。“领班”开始检验“预订”,若找到记录,便将“宴席”对象领到“餐桌”前。否则,“宴席”对象就要排在列表末尾。等到其它“宴席”对象离开后,有“餐桌”空出来,就可以分配给列表中的“宴席”对象。
——摘自《程序员面试金典(第5版)》
- 如何解答面向对象设计问题
- 如何理解面向对象设计
- 如何进行面向对象设计
- 面向对象分析设计中如何进行数据库设计
- C++面向对象作业我之解答
- 面向对象系统分析与设计-----如何开展需求调查
- 如何向妻子解释面向对象设计(OOD)
- 如何向妻子解释面向对象设计(OOD)
- 如何向妻子解释面向对象设计(OOD)
- 如何向妻子解释面向对象设计(OOD)
- 如何向妻子解释面向对象设计(OOD)
- 如何向妻子解释面向对象设计(OOD)
- 如何向妻子解释面向对象设计(OOD)
- 如何向妻子解释面向对象设计(OOD)
- 如何向妻子解释面向对象设计(OOD)
- 如何向妻子解释面向对象设计OOD
- 如何使用C语言实现面向对象的设计
- 如何向妻子解释面向对象设计(OOD)
- 阿里移动容器化框架Atlas的技术演进之路
- 工厂模式
- Android开发的几个小工具
- 滚动悬浮框——js全解
- J2EE常用名词
- 如何解答面向对象设计问题
- Multi-master in PostgreSQL
- java数据类型的默认值
- LeetCode
- 《机器学习实战》学习笔记
- Golang学习笔记 包和项目构成
- 抢占式短作业优先调度算法(SJF)
- Repeated Substring Paterm
- 复数类的运算