演習課題「アクセッサをプロパティに置き換えよう」
右のコードエリアにはメインとなるPracticeクラスと、冒険者のAdventurerクラスが定義されています。
Adventurerクラスでは、
staticフィールドであるcountとそれを読み出すGetCountメソッドを用いて、
冒険者の総人数を取得できるようになっています。
このGetCountメソッドをCountプロパティに置き換えてください。
なお、PracticeクラスのMainメソッドはすでにCountプロパティを利用するよう修正済みです。
期待する出力値
冒険者は魔王を攻撃した
残りMP115
ウィザードは魔王を攻撃した
残りMP544
クルセイダーは魔王を攻撃した
残りMP45
プリーストは魔王を攻撃した
残りMP475
冒険者の総人数は4人
#09:プロパティを理解しよう
C#のプロパティについて学習します。クラスのフィールドとプロパティは呼び出し方は同じですが、実装や仕組みの違いについて学習しましょう。
プロパティとは、プライベートフィールドの読み書きおよび計算をする際に利用する機能です。
プライベートフィールドは、クラスの外からアクセスできないため、そのフィールドにアクセスするパブリックのメソッドやプロパティが必要となります。
オブジェクト志向のカプセル化を実現するために、フィールドはプライベートにすることが多いです。
オブジェクト指向とは - C# によるプログラミング入門 | ++C++; // 未確認飛行 C
https://ufcpp.net/study/csharp/oo_about.html
C#でカプセル化を使ったオブジェクト指向設計の実装方法を解説!!|ピーコックアンダーソン C#&SQLServer
https://anderson02.com/cs/object/object3/
// プロパティを理解しよう
using System;
public class Lesson07
{
    public static void Main()
    {
        var apple = new Item(120, 15);
        var total = apple.GetTotalPrice();
        Console.WriteLine("合計金額は" + total + "円です");
        var orange = new Item(85, 32);
        Console.WriteLine("合計金額は" + orange.GetTotalPrice() + "円です");
        Console.WriteLine("アイテムは" + Item.Count + "種類です");
    }
}
public class Item
{
    private int price;
    private int quantity;
    public static int Count { get; private set; }
    public Item(int price, int quantity)
    {
        this.price = price;
        this.quantity = quantity;
        Count += 1;
    }
    public int GetTotalPrice()
    {
        return price * quantity;
    }
}
プロパティ - C# によるプログラミング入門 | ++C++; // 未確認飛行 C
https://ufcpp.net/study/csharp/oo_property.html
【C#】「プロパティ」getとsetを使ってデータを保護する - Cプロ
https://cprogram.net/c-sharp-property/
プロパティ - C# プログラミング ガイド | Microsoft Docs
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/classes-and-structs/properties
アクセサーのアクセシビリティの制限 - C# プログラミング ガイド | Microsoft Docs
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/classes-and-structs/restricting-accessor-accessibility
自動実装するプロパティ - C# プログラミング ガイド | Microsoft Docs
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/classes-and-structs/auto-implemented-properties
value コンテキスト キーワード - C# リファレンス | Microsoft Docs
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/keywords/value
既定値の一覧表 - C# リファレンス | Microsoft Docs
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/keywords/default-values-table