面向对象程序设计作业2

面向对象程序设计作业2

C与C++

c语言实现步骤

  1. 读取乘客请求(asktime请求时间,askfloor请求楼层,askspace请求目的地)
  2. 分析乘客请求,判断电梯当前状况,对乘客的请求进行响应
  3. 判断电梯是否到达请求楼层或者请求目的地,若到达,电梯停靠,否则继续响应请求
  4. 若处理完所有请求,结束

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;
}
posted @ 2018-05-05 00:45  许煌标  阅读(269)  评论(3编辑  收藏  举报