Menu
Coddy logo textTech

まとめ - カスタムリスト

CoddyのC#ジャーニー「オブジェクト指向プログラミング」セクションの一部 — レッスン 40/70。

challenge icon

チャレンジ

簡単

演算子のオーバーロード、インデクサー、ToString() のオーバーライド、そして拡張メソッドといった、この章で学んだすべての高度な機能を組み合わせた CustomList クラスを構築しましょう。自然で直感的に使用できるコレクションを作成します。

コードは以下の3つのファイルに分けて構成します:

  • CustomList.cs: Collections 名前空間に CustomList クラスを作成します。このクラスは内部の整数配列をラップし、直感的なアクセスパターンを提供します。リストには以下の機能を持たせてください:
    • 項目を格納するためのプライベートな整数配列と、格納されている項目数を追跡する Count プロパティ(プライベートセッター付き)
    • 容量(整数)を受け取り、内部配列をそのサイズで初期化するコンストラクター
    • 次の利用可能な位置に項目を追加する Add(int item) メソッド(空きがある場合)
    • 位置によって項目の取得と設定を可能にするインデクサー this[int index]
    • 2つの CustomList を結合して、両方のすべての項目を含む新しいリストを作成するオーバーロードされた + 演算子(新しいリストの容量は、両方のカウントの合計にする必要があります)
    • 項目を [item1, item2, item3] の形式で返すオーバーライドされた ToString() メソッド。空のスロットではなく、Count までの項目のみを含めてください。
  • ListExtensions.cs: Collections 名前空間に静的クラス ListExtensions を作成し、CustomList 用の拡張メソッドを定義します:
    • Sum() - リスト内のすべての項目(Count まで)の合計を返します。
  • Program.cs: メインファイルで、2つの CustomList を作成し、それぞれに項目を追加します。その後、すべての機能が連携して動作することを示してください。インデクサーを使用して項目にアクセスし、+ 演算子でリストを結合し、ToString() を使用して出力し、拡張メソッドを使用して合計を計算します。

6つの入力が与えられます:

  • 最初のリストに追加する3つの整数
  • 2番目のリストに追加する3つの整数

最初のリストを容量5で、2番目のリストを容量3で作成します。それぞれのリストに対応する3つの入力値を追加してください。

出力を以下の形式で表示してください:

List 1: {ToString()}
List 2: {ToString()}
List 1[0]: {first item}
Combined: {ToString() of combined list}
Combined sum: {Sum()}

例えば、入力が 10, 20, 30, 5, 15, 25 の場合、出力は以下のようになります:

List 1: [10, 20, 30]
List 2: [5, 15, 25]
List 1[0]: 10
Combined: [10, 20, 30, 5, 15, 25]
Combined sum: 105

インデクサーによる配列のようなアクセス、+ 演算子による自然なリストの結合、ToString() による読みやすい出力、そして拡張メソッドによる便利な機能の追加など、すべての要素がどのように連携しているかに注目してください。これが、適切に設計されたクラスの使い心地です!

自分で試してみよう

using System;
using Collections;

class Program
{
    public static void Main(string[] args)
    {
        // 6つの整数を読み込む
        int a1 = Convert.ToInt32(Console.ReadLine());
        int a2 = Convert.ToInt32(Console.ReadLine());
        int a3 = Convert.ToInt32(Console.ReadLine());
        int b1 = Convert.ToInt32(Console.ReadLine());
        int b2 = Convert.ToInt32(Console.ReadLine());
        int b3 = Convert.ToInt32(Console.ReadLine());

        // TODO: 容量5の最初の CustomList を作成する
        // TODO: 最初のリストに a1, a2, a3 を追加する

        // TODO: 容量3の2番目の CustomList を作成する
        // TODO: 2番目のリストに b1, b2, b3 を追加する

        // TODO: ToString() を使用してリスト1を出力する
        // TODO: ToString() を使用してリスト2を出力する
        // TODO: インデクサーを使用して List 1[0] を出力する
        // TODO: + 演算子を使用してリストを結合し、結果を出力する
        // TODO: Sum() 拡張メソッドを使用して結合されたリストの合計を出力する
    }
}

オブジェクト指向プログラミングのすべてのレッスン