2017级面向对象程序设计 作业二

以下均以扫描方式为例,即电梯只会在最底层和最高层选择掉头,路途中遇到路径方向相同的乘客将他带上电梯。

文字描述面向过程实现的步骤:

一. 定义有关电梯的变量,如:1.电梯当前所在楼层.,2. 电梯内的人数,3. 电梯当前前进的方向,等等。再定义有关乘客的变量,如:请求时刻 ,所在楼层,去往楼层,还可以包括其当前的状态——请求状态,乘坐状态,结束状态。
二 .接收到第一个请求时, 电梯开始工作,从底层开始。
1.上一层。
2.判断是否到达顶层或底层,是则改变方向。
3.判断是否有人符合上电梯条件或下电梯条件,是则拉他上,否则继续前进。
4.判断请求是否已经完成,是则结束,否则继续循环。

对象类图


面向过程 我认为就是需要先整体分析出解决该问题所需要的步骤,然后一步一步去实现它。就以电梯来说,电梯首先接受请求信号,然后打开门,带上乘客,关上门,往上爬,到达目的地,开门,乘客下电梯,关门。一个请求结束。面向过程程序设计方法需要程序员在一开始就全面的,自上而下的设计整个程序的架构,因此要求程序设计者对问题域有全面的了解。这并不适合多个程序员一起工作。
面向对象 我认为就是把一个事件分为多个对象来实现。对象就是一个事物,在编码时先将对象抽象出来,然后构造你所需要的解决环境,在这个环境中将对象和解决方法联系起来。仍以电梯为例,包括:1.乘客,获得所有的输入请求。2.电梯,更新电梯状态 。3.判断结束系统。
可以看出,面向对象按照功能将整个过程划分。面向对象划分的对象便于多个程序员同时对各个部分进行进行更改,比较符合人们追求的效率。

class Elevator
{
private:
    int currentFloor;   // 电梯当前楼层 
    int direction;    // 1 代表向上  ,0 代表向下
public:
    Elevator(int dir = 1, int floor = 0 ,int pp= 0);  // 电梯初始向上走 ,且电梯在第0层
    ~Elevator();
    int population;
    void changeDirection(int dir)   // 改变电梯运行方向
    {
        direction = dir;
    }
    void move(int dir)  // 电梯的移动
    {
        if (dir)  currentFloor++;
        else currentFloor--;
    }
    int getCurrentFloor()  // 电梯当前楼层
    {
        return currentFloor;
    }
    int getDirection()
    {
        return direction;
    }
};
Elevator::Elevator(int dir, int floor, int pp)
{
    direction = dir;
    currentFloor = floor;
    population = pp;
}
Elevator::~Elevator()
{
    cout << "析构函数"<<endl;
}

猜你喜欢

转载自www.cnblogs.com/ruanjunxi/p/8995283.html