现实中的面向对象设计

实中对事物的处理的方法和软件设计的面向对象的方式是非常的相似的。现在假设我们正采用面向对象的方法为停车场设计一套软件,
1. 你设计的目的是什么?(即明确需求)。为了管理停车场中的空车位,还是统计停车场中各类车的种类,还是协助残障人寻找车位等等。
2. 设计中主要的对象是什么?(车,停车位,整个停车场,停车计时等等;而对这个抽象的概念还有很多的子类(轿车,卡车,残疾助动车);停车位的同样会有残障车位的子类。)
3. 还漏掉了什么东西了吗?我们用什么方式来停车计费呢?是按时间收费还是免费?我们可以添加一个叫Permission的类用来处理不同的付费方式。 Permission类的两个子类可以分别应对付费停车和免费停车。这样的话每个停车位就应该有个方法得到一个Permission对象来决定收费问题。
4. 我们这个设计中又如何来查询某辆是在停车位上?采用怎么样的方法来实现效率会高一些呢?

7.1 设计一个通用的扑克牌的结构体。并解释如何继承该类以实现某些扑克游戏。

7.2 假设有一个呼叫中心,中心的员工有三个等级:新人、技术主管、产品经理。呼叫中心有很多员工,但是只有一个技术主管或者产品经理。呼叫中心有很多的新人, 但只有一个技术主管或者产品经理。新接入的电话首先应该由空闲的新人来负责,如果新人无法处理,这通电话就应该移交给技术主管来处理;如果技术主管无法处 理,那么就应该移交给产品经理来出来。设计一个数据结构来解决该问题。并实现方法getCallHandler()

7.3 采用面向对象的设计方法设计一个音乐盒。

7.4 采用面向对象的方法设计一个象棋游戏。

7.5 设计一个在线阅览室。

7.6 实现一个七巧板游戏;设计一个合适的数据结构并描述一个算法来解七巧板。

7.7 解释你将如何设计一个聊天室服务器;并且说明服务后端所涉及到的模块、类和方法,以及设计可能遇到的最难的问题。

7.8 黑白棋游戏规则如下:
黑白棋的棋子都是一面是黑色一面白色的。假如当白色颜色的棋子被黑色棋子从两端包围的话(左右、上下或者斜线方向),那么白色棋子就被俘虏了然后翻面变成 黑棋;反之亦然。每个选手在没一轮当中必须至少俘虏一个对方的棋子。当任意一个选手没有可下的棋时,游戏结束并且棋子较多的一方获胜。采用面向对象的方法 设计一个黑白棋游戏。

7.9 解释在设计一个基于内存的文件系统时所要用的数据结构和算法。如果有必要,用代码来演示。

7.10 描述如果在C++中设计一个垃圾收集器,你所要用到的数据结构和算法。

posted @ 2012-02-07 12:43  ctou45  阅读(364)  评论(0编辑  收藏  举报