一些常见面试OO design题目总结

本文总结了近期面试中常见的面向对象设计题目,包括电梯系统设计、停车场管理系统以及黑杰克游戏的设计。电梯设计采用三个类,分别负责电梯状态、请求管理和用户交互,调度算法采用电梯扫描法。对于其他题目如停车场和黑杰克游戏,作者并未详细展开,欢迎读者提出建议和设计方案。
摘要由CSDN通过智能技术生成

最近很多公司面试喜欢问一些OO design的题目, 我总结了一些比较高频的题目, 需求不一定准确, 设计的也不一定好, 欢迎提出建议.

 1. 电梯设计

 2. 停车厂设计

 3. 通用卡牌游戏blackjack设计

 4...


1. 电梯设计

需求: 以面向对象的方式设计一个电梯, 包含一些必要的类和函数.

分析: 我的设计分为三个类, 一个是电梯本身的类, 包含一些移动电梯的函数和电梯状态. 另外还有一个update函数会被不停调用, 更新电梯状态. 还有一个请求类, 采用singleton模式, 用于接收用户请求, 和电梯提供给电梯下一个目标楼层, 和删除请求. 还有一个类似user类, 可以使得用户通过这个类提供的接口发出请求.

电梯调度算法采用经典的电梯扫描算法, 在一个方向上完成所有的请求, 然后再改变方向完成另外一个方向的所有请求.

代码如下:

class Elevator
{
public:
    Elevator():direction(0), curFloor(1){}
    void moveUp() { curFloor++; }
    void moveDown() { curFloor--; }
    void stop() { }
    void openDoor() {  }
    void closeDoor() { }
    void update()
    {
        int target = Request::getInstance().getNextFloor(curFloor, direction);     
        if(target =&#
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值