この問題を解くためには… |
→ 基本編第6日目参照 |
---|
問題6:継承
prob6-1.(難易度★)
以下のプログラムに、飛行機クラスAirplaneを継承した戦闘機クラスFighterを指定されたとおりの仕様で追加し、期待された実行結果通りにプログラムが動くように改造しなさい。
prob6-1:airplane.h#ifndef _AIRPLANE_H_ #define _AIRPLANE_H_ // 飛行機クラス class Airplane{ public: // 飛行する void fly(); }; #endif // _AIRPLANE_H_
#include "airplane.h" #include <iostream> using namespace std; void Airplane::fly(){ cout << "飛行する" << endl; }
#include <iostream> #include "fighter.h" using namespace std; int main(){ Fighter f; // 戦闘機クラス Airplane a; // 飛行機クラス // 飛行機が飛行する a.fly(); // 戦闘機が飛行する f.fly(); // 戦闘機が戦闘する f.fight(); return 0; }
飛行する← Airplaneクラスのfly()メソッドによる処理
飛行する← Fighterクラスのfly()メソッドによる処理
戦闘する← Fighterクラスのfly()メソッドによる処理
飛行する← Fighterクラスのfly()メソッドによる処理
戦闘する← Fighterクラスのfly()メソッドによる処理
Fighterクラスのヘッダファイルは、fighter.h、ソースファイルは、fighter.cppとすること。
クラスFighterの仕様(メンバ関数)関数名 | 戻り値の型 | 引数 | 概要 |
---|---|---|---|
fight | void | なし | 「戦闘する」と表示し、改行する。 |
prob6-2.(難易度★)
以下のプログラムに、基本計算クラスFundClacを継承した新計算クラスNewCalcを指定されたとおりの仕様で追加し、期待された実行結果通りにプログラムが動くように改造しなさい。このさい、必要があれば、FundCalcクラスの必要な部分を改造しなさい。
prob6-2:fundcalc.h#ifndef _FUNDCALC_H_ #define _FUNDCALC_H_ class FundCalc{ private: double m_number1; // 一つ目の数 double m_number2; // 二つ目の数 public: // コンストラクタ FundCalc(); // 一つ目の数を設定 void setNumber1(double number); // 二つ目の数を設定 void setNumber2(double number); // 一つ目の数を設定 double getNumber1(); // 二つ目の数を設定 double getNumber2(); // 二つの数の和を出力 double add(); // 二つの数の差を出力 double sub(); }; #endif // _FUNDCALC_H_
#include "fundcalc.h" FundCalc::FundCalc() : m_number1(0), m_number2(0) { } // 一つ目の数を設定 void FundCalc::setNumber1(double number) { m_number1 = number; } // 二つ目の数を設定 void FundCalc::setNumber2(double number) { m_number2 = number; } // 一つ目の数を設定 double FundCalc::getNumber1() { return m_number1; } // 二つ目の数を設定 double FundCalc::getNumber2() { return m_number2; } // 二つの数の和を出力 double FundCalc::add() { return m_number1 + m_number2; } // 二つの数の差を出力 double FundCalc::sub() { return m_number1 - m_number2; }
#include <iostream> #include "newcalc.h" using namespace std; int main(){ NewCalc n; n.setNumber1(10); // 一つ目の数を設定 n.setNumber2(2); // 二つ目の数を設定 cout << n.getNumber1() << " + " << n.getNumber2() << " = " << n.add() << endl; cout << n.getNumber1() << " - " << n.getNumber2() << " = " << n.sub() << endl; cout << n.getNumber1() << " * " << n.getNumber2() << " = " << n.mul() << endl; cout << n.getNumber1() << " / " << n.getNumber2() << " = " << n.div() << endl; return 0; }
10 + 2 = 12
10 - 2 = 8
10 * 2 = 20
10 / 2 = 5
10 - 2 = 8
10 * 2 = 20
10 / 2 = 5
NewCalcクラスのヘッダファイルは、newcalc.h、ソースファイルは、newcalc.cppとすること。
クラスNewCalcの仕様(メンバ関数)関数名 | 戻り値の型 | 引数 | 概要 |
---|---|---|---|
mul | double | なし | メンバ変数m_number1、m_number2の積 |
div | double | なし | メンバ変数m_number1、m_number2の商 |