zoukankan      html  css  js  c++  java
  • 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;
    }
    
  • 相关阅读:
    NPM 使用介绍
    tight
    c# 选择排序
    AssetBundle Manager and Example Scenes
    非常棒的轨迹插件Better Trails v1.4.6
    【模型】Toon Dragon
    unity实现3D物体上的事件监听处理
    Alley Bird 跳跳鸟源码
    Unity性能优化 – 脚本篇
    欧拉角与万向节死锁
  • 原文地址:https://www.cnblogs.com/ruanjunxi/p/8995283.html
Copyright © 2011-2022 走看看