この問題を解くためには…
 → 応用編第3日目参照

問題3:継承

prob3-1.(難易度:★)

以下のプログラムに、飛行機クラスAirplaneを継承した戦闘機クラスFighterを指定されたとおりの仕様で追加し、期待された実行結果通りにプログラムが動くように改造しなさい。

プロジェクトProblemex2_1/Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Problemex2_1
{
    class Program
    {
        static void Main(string[] args)
        {
            Fighter f = new Fighter();		//  戦闘機クラス
            Airplane a = new Airplane();	//  飛行機クラス
            //  飛行機が飛行する
            a.Fly();
            //  戦闘機が飛行する
            f.Fly();
            //  戦闘機が戦闘する
            f.Fight();
        }
    }
}

Airplane.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Problemex2_1
{
    class Airplane
    {
	    public void Fly(){
		    Console.WriteLine("飛行する");
	    }
    }
}
期待される実行結果
飛行する← Airplaneクラスのメソッドfoo()メソッドflyによる処理
飛行する← Fighterクラスのメソッドfoo()メソッドflyによる処理
戦闘する← Programクラスの静的メソッドfoo()メソッドによる処理
クラスFighterの仕様(メンバ関数)
メソッド名 戻り値の型 引数 概要
Fight void なし 「戦闘する」と表示し、改行する。

prob2-2.(難易度:★)

以下のプログラムに、基本計算クラスFundClacを継承した新計算クラスNewCalcを指定されたとおりの仕様で追加し、期待された実行結果通りにプログラムが動くように改造しなさい。このさい、必要があれば、FundCalcクラスの必要な部分を改造しなさい。

プロジェクトProblemex2_2/Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Problemex3_2
{
    class Program
    {
        static void Main(string[] args)
        {
            NewCalc n = new NewCalc();
            n.Number1 = 10;   //  一つ目の数を設定
            n.Number2 = 2;    //  二つ目の数を設定
            Console.WriteLine(n.Number1 + " + " + n.Number2 + " = " + n.Add());
            Console.WriteLine(n.Number1 + " - " + n.Number2 + " = " + n.Sub());
            Console.WriteLine(n.Number1 + " * " + n.Number2 + " = " + n.Mul());
            Console.WriteLine(n.Number1 + " / " + n.Number2 + " = " + n.Div());
        }
    }
}
FundCalc.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Problemex3_2
{
    class FundCalc
    {
        private double number1 = 0.0;   //  一つ目の数
        private double number2 = 0.0;   //  二つ目の数
        //  number1のプロパティ
        public double Number1
        {
            set { number1 = value; }
            get { return number1; }
        }
        //  number2のプロパティ
        public double Number2
        {
            set { number2 = value; }
            get { return number2; }
        }
        //  二つの数の和を出力
        public double Add()
        {
            return number1 + number2;
        }
        //  二つの数の差を出力
        public double Sub()
        {
            return number1 - number2;
        }
    }
}
期待される実行結果の例
10 + 2 = 12
10 - 2 = 8
10 * 2 = 20
10 / 2 = 5

NewCalcクラスのヘッダ クラスNewCalcの仕様(メンバ関数)

メソッド名 戻り値の型 引数 概要
Mul double なし フィールドnumber1、number2の積
Div double なし フィールドnumber1、number2の商