面向对象程序设计作业三

Git地址

前言

先来说说,对之前第二次作业的感受,我个人是受益匪浅的,因为是三部电梯同时进行,我放弃了之前暑假写的面向过程的电梯项目,此次在第二次作业的基础上,重新写了一个有了点面向对象味道的电梯,感觉很嗨很痛苦。


遇到的问难和解决方案

  • 我的电梯以时间轴运行,因此时间应该定义在电梯类外,当成全局变量来实现,可是发现,在main.cppElevator.hElevator.cpp中报没有定义的错,定义了后编译又报重复定义,顿时一脸懵逼,百度后发现了extern,总算知道了这个用法了,感动!除此之外,还可以新建一个头文件来存储这个全局变量,不过太麻烦,我就没有着手操作了。
  • 在第二次作业中写了一个Passenger类用来存储乘客的请求,用的是创建动态对象数组来实现的,在main函数电梯类里都需要用到,不能定义两遍,extern也搞不定,一直报如图的错,最后放弃希望,把Passenger类改写成电梯类的类外结构体
  • 写了一个2号电梯类,1号和3号继承自2号,因为对类和对象还不熟悉,在这里被坑了好惨,单步调试了好久才出来。问题是:2号电梯类写了一个方法run(),里面调用了get()put()方法,其中get()put()在1号和3号电梯中重载了,我天真的以为编译器会调用相应类的方法,没想到我调用3号电梯的run(),他却调用2号电梯的put(),比小孩还皮。血的教训,于是把所有类的run()重载了ヾ(゚∀゚ゞ)
    最后一个很简单的问题,文件输入输出的,一开始纳闷怎么输出永远只有一行,是不是码错了,于是使用了ios::app;接着发现输出文档会保存上次输出的结果,感觉也没什么大碍,问了学姐果断.clear()

类图如下↓↓↓


c语言实现思想

用结构体来实现电梯,好像和c++没什么太大区别,是我还没深入使用类吧(●ˇ∀ˇ●)。

原文地址:https://www.cnblogs.com/elis/p/9033318.html