面向对象程序设计作业2
面向对象程序设计作业2
C与C++
c语言实现步骤
- 读取乘客请求(asktime请求时间,askfloor请求楼层,askspace请求目的地)
- 分析乘客请求,判断电梯当前状况,对乘客的请求进行响应
- 判断电梯是否到达请求楼层或者请求目的地,若到达,电梯停靠,否则继续响应请求
- 若处理完所有请求,结束
C++类图
两者对比
从寒假学习c++ 到现在,从浑浑噩噩跟着要求走,简单使用c++ 的语法但实质思想仍是面向过程,到如今大致明白了面向过程与面向对象的区别,这之间的磕磕碰碰可谓是一次丰富的学习经验。下面说一下自己的认知,若有不对,请多指教。
面向过程:分析出我们要解决一个问题所需要的步骤,然后用代码把这些步骤一步一步实现,如这电梯,我们要先接收乘客的请求,分析请求后去接乘客,送乘客前往目的地,这些步骤都是明确的,然后就要用代码去一步步实现它们。
面向对象:将我们要解决的这个问题从另一个角度分析,将其中的对象独立出来,分析这个问题中这些对象的状态,针对这些对象构造函数去解决问题。如电梯问题,可大致分为乘客和电梯两类,分析电梯在调度过程中乘客和电梯的状态,通过改变它们的状态来解决问题。(其实感觉自己还是有点懵的)
电梯类
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
using namespace std;
class Elevator{
public:
Elevator();
~Elevator();
int nowfloor;//当前电梯位置
int indicator; //当前电梯运行方向
int nowtime;//当前时间
void gotofloor(int askfloor); //接受到达某一层的指令
void stop(int time, int floor); //停靠在当前楼层
void show(int nowfloor); //显示当前所处楼层位置
private:
int sumtime;//乘客到达目的地之前的总等待时间
int nowman;//当前在电梯中乘客的总人数
void ifstop();//判断当前电梯是否需要停靠,如果要,执行stop
};
Elevator::Elevator(){
nowtime = nowfloor = sumtime = nowman = 0;
indicator = 1;
}
Elevator:: ~Elevator(){
}
void Elevator::gotofloor(int askfloor){
nowtime += fabs(nowfloor - askfloor);
nowfloor = askfloor;
}
void Elevator::show(int nowfloor){
cout << "nowfloor:" << nowfloor<< endl;
}
void Elevator::stop(int time, int floor) {
cout << time << " " << floor << endl;
}