题目
题目

COSC 1437 - 15099 - Introduction to Programming

未知题型

Question textFor this programming question, you will be working with Polymorphism. Given the base abstract class "airplane", the derived classes "passenger" and "cargo", and the container class "airport" (defined in airport.h): #ifndef AIRPORT_H#define AIRPORT_H #include "airplane.h"#include "passenger.h"#include "cargo.h" #include <vector>#include <string> using namespace std; class airport{private: string city; string code; vector<airplane *> airplanes; public: airport(const string &_city, const string &_code); airport(const airport &RHS); airport &operator=(const airport &RHS); ~airport(); void add_airplane(const airplane &plane); void summary() const; void list_airplanes() const;}; #endif Modify the base class airplane and the derived classes passenger and cargo (following the comments in the provided template files), and write the implementation of the member functions summary and list_airplanes. Here is the implementation of the other member functions of the "airport" class: airport::airport(const string &_city, const string &_code){ city = _city; code = _code;} airport::airport(const airport &RHS){ city = RHS.city; code = RHS.code; for (airplane *plane : RHS.airplanes) {  if (plane != nullptr) {  airplane *temp_plane; if (plane->get_type() == 'P') {  temp_plane = new passenger(*((passenger *)plane)); }  else {  temp_plane = new cargo(*((cargo *)plane)); }  airplanes.push_back(temp_plane); }  }} airport &airport::operator=(const airport &RHS){ if (this != &RHS) {  city = RHS.city; code = RHS.code; if (airplanes.size() > 0) // Delete allocated memory {  for (int i = airplanes.size() - 1; i >= 0; i--) {  if (airplanes.at(i) != nullptr) {  delete airplanes.at(i); airplanes.pop_back(); }  }  }  for (airplane *plane : RHS.airplanes) {  if (plane != nullptr) {  airplane *temp_plane; if (plane->get_type() == 'P') {  temp_plane = new passenger(*((passenger *)plane)); }  else {  temp_plane = new cargo(*((cargo *)plane)); }  airplanes.push_back(temp_plane); }  }  }  return *this;} airport::~airport(){ if (airplanes.size() > 0) // Delete allocated memory {  for (int i = airplanes.size() - 1; i >= 0; i--) {  if (airplanes.at(i) != nullptr) {  delete airplanes.at(i); airplanes.pop_back(); }  }  }} void airport::add_airplane(const airplane &plane){ airplane *temp_plane; if (plane.get_type() == 'P') {  temp_plane = new passenger((const passenger &)plane); }  else {  temp_plane = new cargo((const cargo &)plane); }  airplanes.push_back(temp_plane);} HINT: You can use the code from these functions when writing the solution for the requested member functions. NOTES: You can safely assume that the input is always correct. You must use function identifiers based on the specifications of the question when writing your solution. You do not need to write a main function. Solutions that do not compile will receive a 100 % penalty. Hardcoding the output will translate into a 100 % penalty. Answer:(penalty regime: 0 %)// airplane.h #ifndef AIRPLANE_H #define AIRPLANE_H #include <string> #include <iostream> using namespace std; class airplane { private: string manufacturer; string model; string tail_number; public: airplane(const string& _manufacturer, const string& _model, const string& _tail_number) : manufacturer(_manufacturer), model(_model), tail_number(_tail_number) {} virtual char get_type() const = 0; virtual void print() const { cout << "Manufacturer: " << manufacturer << ", Model: " << model << ", Tail number: " << tail_number; } virtual ~airplane() {} }; #endif // passenger.h #ifndef PASSENGER_H #define PASSENGER_H #include "airplane.h" #include <iostream> #include <string> using namespace std; class passenger : public airplane { private: string airline; int n_passengers; public: passenger(const string& _manufacturer, const string& _model, const string& _tail_number, const string& _airline, int _n_passengers) : airplane(_manufacturer, _model, _tail_number), airline(_airline), n_passengers(_n_passengers) {} ~passenger() {} char get_type() const override { return 'P'; } void print() const override { airplane::print(); cout << ", Airline: " << airline << ", # of passengers: " << n_passengers << endl; } }; #endif // cargo.h #ifndef CARGO_H #define CARGO_H #include "airplane.h" #include <iostream> #include <string> using namespace std; class cargo : public airplane { private: string company; int max_capacity; public: cargo(const string& _manufacturer, const string& _model, const string& _tail_number, const string& _company, int _max_capacity) : airplane(_manufacturer, _model, _tail_number), company(_company), max_capacity(_max_ca Code for airplane.h 1234567891011121314151617181920212223242526272829// airplane.h#ifndef AIRPLANE_H#define AIRPLANE_H#include <string>#include <iostream>using namespace std;class airplane {private: string manufacturer; string model; string tail_number;public: airplane(const string& _manufacturer, const string& _model, const string& _tail_number) : manufacturer(_manufacturer), model(_model), tail_number(_tail_number) {} virtual char get_type() const = 0; virtual void print() const { cout << "Manufacturer: " << manufacturer << ", Model: " << model << ", Tail number: " << tail_number; } virtual ~airplane() {}};#endif ההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Code for passenger.h 123456789101112131415161718192021222324252627282930313233343536#ifndef PASSENGER_H#define PASSENGER_H#include "airplane.h"#include <iostream>#include <string>using namespace std;// Implement public inheritance from the airplane class// Call the overloaded constructor of the base class in the class overloaded constructor// Use the virtual qualifier when neededclass passenger // Implement public inheritance from the airplane class { private: string airline; int n_passengers; public: passenger(const string & _manufacturer, const string & _model, const string & _tail_number, const string & _airline, int _n_passengers): // Call the overloaded constructor of the base class here { airline = _airline; n_passengers = _n_passengers; } ~passenger(){} char get_type() const {return 'P';} void print() const { airplane::print(); cout << ", Airline: " << airline << ", # of passengers: " << n_passengers << endl; }};#endif ההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Code for cargo.h 1234567891011121314151617181920212223242526272829303132333435#ifndef CARGO_H#define CARGO_H#include "airplane.h"#include <iostream>using namespace std;// Implement public inheritance from the airplane class// Call the overloaded constructor of the base class in the class overloaded constructor// Use the virtual qualifier when neededclass cargo // Implement public inheritance from the airplane class { private: string company; int max_capacity; public: cargo(const string & _manufacturer, const string & _model, const string & _tail_number, const string & _company, int _max_capacity): // Call the overloaded constructor of the base class here { company = _company; max_capacity = _max_capacity; } ~cargo(){} char get_type() const {return 'C';} void print() const { airplane::print(); cout << ", Company: " << company << ", Max Capacity (tons): " << max_capacity << endl; }};#endif ההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Code for airport.cpp 234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253#include "airport.h"#include <iostream>using namespace std;// Write the implementation of the requested member functions void airport::summary const{ int num_passenger = 0, num_cargo = 0; for (size_t i=0, i < airplanes.size(); ++i) { if (airplane[i]) { if (airplane[i]) get_type() - > == 'P' num_passenger ++; else (airplane[i]) get_type() - > == "C" num_cargo ++; } cout <<"Airport city: " << city << endl; cout <<"Airport code: " << code << endl; cout <<"# Passeneger airplanes:" << num_passenger << endl; cout <<"# Cargo airplanes:" << num_cargo << endl;}void airport::list_airplane() const{ cout <<"Passenger airplanes:" endl; for (size_t i=0 i < airplane.size(); ++1 { if (airplane[i] && airplane[i] - > get_type() == 'P') airplane[i]- > print(); } cout <<"Cargo airplanes:" << endl; for (size_t i=0, i < airplanes.size(); ++1) { if (airplane[i] && airplane[i] - > get_type() == 'C') airplane[i] - > print(); }}// Output messages for the summary function// cout << "Airport city: " << /* variable identifier */ << endl;// cout << "Airport code: " << /* variable identifier */ << endl;// cout << "# Passenger airplanes: " << /* variable identifier */ << endl;// cout << "# Cargo airplanes: " << /* variable identifier */ << endl;// Output messages for the list_airplanes function// cout << "Passenger airplanes: " << endl;// cout << "Cargo airplanes: " << endl;// I need you to modify the give code for airport.cpp ההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX M.util.js_pending('qtype_coderunner/userinterfacewrapper'); require(['qtype_coderunner/userinterfacewrapper'], function(amd) { amd.newUiWrapper("ace", "id_q55064:2_answer-ace_field1"); M.util.js_complete('qtype_coderunner/userinterfacewrapper'); }); M.util.js_pending('qtype_coderunner/userinterfacewrapper'); require(['qtype_coderunner/userinterfacewrapper'], function(amd) { amd.newUiWrapper("ace", "id_q55064:2_answer-ace_field2"); M.util.js_complete('qtype_coderunner/userinterfacewrapper'); }); M.util.js_pending('qtype_coderunner/userinterfacewrapper'); require(['qtype_coderunner/userinterfacewrapper'], function(amd) { amd.newUiWrapper("ace", "id_q55064:2_answer-ace_field3"); M.util.js_complete('qtype_coderunner/userinterfacewrapper'); }); M.util.js_pending('qtype_coderunner/userinterfacewrapper'); require(['qtype_coderunner/userinterfacewrapper'], function(amd) { amd.newUiWrapper("ace", "id_q55064:2_answer-ace_field4"); M.util.js_complete('qtype_coderunner/userinterfacewrapper'); }); Check Question 1

题目图片
查看解析

查看解析

标准答案
Please login to view
思路分析
The provided JSON for this question includes a substantial code prompt and references to multiple source files, but the field for answer_options is empty. Because there are no explicit answer choices to evaluate, I will instead outline a detailed, step-by-step reasoning about how to implement the requested member functions and how to assess typical options that would appear in a correct solution. First, summarize the task at hand in this context: you are to implement the member functions summary and list_airplanes for the airport class, given polymorphic airplane types (passenger and cargo) and the ability to store pointers to airplanes in a vector. The existing airport class already provides a constructor, copy constructor, assignment operator, destructor, and add_airplane, with a working infrastructure for deep copies and proper memory management. The hint indicates you can reuse patterns from the provided code in other functions, and the note says input is correct and no main function is required. Now, consider how a correct implementation would conceptually behave: Option A (typical correct approach for summary......Login to view full explanation

登录即可查看完整答案

我们收录了全球超50000道考试原题与详细解析,现在登录,立即获得答案。

类似问题

更多留学生实用工具

加入我们,立即解锁 海量真题独家解析,让复习快人一步!