プログラミング演習Ⅲ(2023)

【課題1-08】メソッドの定義

プロジェクトタイプC#コンソールアプリ※
プロジェクト名Prac_1_08
ソリューション名PET1
ターゲットフレームワーク.NET 6.0 (長期的なサポート)

※ 「コンソールアプリ(.NET Framework)」ではないので注意せよ!

【課題1-06】で定義したクラスRentalCycle型に,返却時刻からレンタル料金を計算する インスタンスメソッド .CalcFeeAt()を定義せよ. このメソッドの詳細についてはRentalCycle.CalcFeeAt()メソッドの仕様を参照すること.

注意

プログラムの概形は_のようにすること(必ず以下をコピーしProgram.cs全体を上書きすること).

テンプレートコード
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
namespace Prac_1_08
{
    /*******************************/
    /*                             */
    /*           空欄1             */
    /*   RentalCycleクラスの定義   */
    /*                             */
    /*******************************/
    
    class Program
    {
        static void Main(string[] args)
        {
        
            // 長いので省略
            
        }// end of Main()
    }// end of class Program
}// end of namespace

以下のボタンをクリックしてコードをコピーし,Main()メソッドを上書きすること.

正しく実装できた場合,実行結果は_のようになる.

クラスRentalCycleのチェック開始...
  ( 1/13) クラスの定義... OK
  ( 2/13) プロパティ・インデクサの数... OK
  ( 3/13) プロパティIdの定義... OK
  ( 4/13) プロパティCostPerMinuteの定義... OK
  ( 5/13) プロパティBorrowedの定義... OK
  ( 6/13) メソッドCalcFeeAt(DateTime)の定義... OK
  ( 7/13) コンストラクタの数... OK
  ( 8/13) コンストラクタ(引数: string型, int型, DateTime型)の定義... OK
  ( 9/13) コンストラクタ(引数: string型, int型, DateTime型)の動作... OK
  (10/13) CalcFeeAt(DateTime)の動作1... OK
  (11/13) CalcFeeAt(DateTime)の動作2... OK
  (12/13) CalcFeeAt(DateTime)の動作3... OK
  (13/13) CalcFeeAt(DateTime)の動作4... OK
Congratulations! クラスの定義に関する全てのテストをパスしました.
実行結果

RentalCycle.CalcFeeAt()メソッドの仕様

表示するにはここをクリック
  • .CalcFeeAt()メソッド
    • アクセス修飾子:public
    • 引数
      • backTime
        • 型:DateTime
        • 返却時刻を表すDateTime型の値
    • 戻り値
      • 型:int
      • このRentalCycleクラスのインスタンスにおいて,貸出時刻と返却時刻から計算されるレンタル料金.詳細は備考を参照せよ.
    • 備考
      • .CalcFeeAt()メソッドは,貸出時刻(Borrowedプロパティ)と返却時刻(引数backTime)から計算されるレンタル料金を計算し,計算結果を戻り値として返す.
      • レンタル料金は「使用した時間(分)×1分あたりの料金」で計算する.
        • 使用した時間(分)は分未満の時間,つまり 秒を計算に入れない ことに注意せよ.
        • 例えば貸し出した時刻が10時48分0秒で返却した時刻が11時13分33秒であれば,使用した時間は25分33秒(=25.55分)だが,利用時間として計上するのは25分となる.
        • (つまり期間の計算にTimeSpan型を使用するのであれば,.TotalMinutesプロパティの値の 端数を切り捨てて 使用する必要がある,ということである).
      • 以下の場合は異常ケースであるため,エラー値として-1を返す.
        • 返却時刻(引数backTime)が貸出時刻(Borrowedプロパティ)よりも前の日時である.
      • このメソッドはRentalCycleクラスのpublicなインスタンスメソッドとして定義すること.
表示するにはここをクリック : 閉じる

ヒント

  • 実数(double型などの値)はint型にキャストすることで端数を切り捨てることができる.
  • キャストについては以下を参照せよ.
    • プログラミング演習Ⅰ(2022) 第03回講義資料
    • 教科書「なるほどなっとくC#入門」,「3-5.数値の型変換」(P.93~)
Last updated on 2023-10-16
Published on 2023-10-16

Powered by Hugo. Theme by TechDoc. Designed by Thingsym.