| この問題を解くためには… |
| → 基本編第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の商 |









