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;
}
相關文章
相關標籤/搜索