C#クラスとオブジェクト実践チュートリアル:実例で学ぶオブジェクト指向の基礎
C#はC++の強力なオブジェクト指向基盤を継承し、クラスとオブジェクトの組み込みサポートにより、開発者が実世界のエンティティをクリーンで保守しやすいコードでモデル化できるようにしています。
従業員レコードを管理するアプリケーションを考えてみましょう。EmployeeクラスはIDやNameなどのプロパティを保持し、それらのレコードを追加・更新するメソッドを公開します。
このガイドでは以下を学びます:
- クラスとオブジェクトの定義
- Visual Studioでのクラス作成とオブジェクトインスタンス化
- フィールド、プロパティ、メソッドの操作
クラスとオブジェクトとは
クラスはデータ(フィールドまたはプロパティ)と振る舞い(メソッド)をカプセル化する青写真です。オブジェクトはその青写真のインスタンスで、フィールドの具体的な値を保持します。
クラス内では:
- フィールドまたはプロパティがクラスの保持データを記述。
- メソッドがそのデータ上で実行可能な操作を定義。
シンプルな例で説明しましょう。学習モジュールを表すTutorialクラスがあるとします。
このクラスには以下が含まれます:
- TutorialID - 一意の数値識別子。
- TutorialName - チュートリアル名を文字列で保持。
また、2つのメソッドを定義します:
- SetTutorial - インスタンスにIDと名前を割り当て。
- GetTutorial - チュートリアル名を取得。
以下はクラス構造の視覚的表現です。

このクラスのオブジェクトを作成すると、各オブジェクトが独自の値を保持します:

Visual Studioでのクラスとオブジェクト作成
既存のコンソールプロジェクトを開くか、新規作成します。以下の手順でTutorialクラスを追加します:
ステップ1 - 新しいクラスを追加
ソリューションエクスプローラーでプロジェクト(例:DemoApplication)を右クリックし、Add → Classを選択、名前をTutorial.csとします。

ステップ2 - クラス名を指定
ダイアログでTutorial.csと入力し、Addをクリック。Visual Studioがテンプレートファイルを挿入:

追加後、ファイルには基本的なクラススケルトンが含まれます:

Tutorial.csを開き、プレースホルダを以下の実装に置き換えます。
フィールドとメソッドの定義
以下のメンバーを挿入します:
class Tutorial {
int TutorialID;
string TutorialName;
public void SetTutorial(int pID, string pName) {
TutorialID = pID;
TutorialName = pName;
}
public string GetTutorial() {
return TutorialName;
}
static void Main(string[] args) {
Tutorial pTutor = new Tutorial();
pTutor.SetTutorial(1, ".Net");
Console.WriteLine(pTutor.GetTutorial());
Console.ReadKey();
}
}
SetTutorialメソッドは渡されたパラメータをクラスフィールドに割り当て、GetTutorialは格納された名前を返します。Mainメソッドはインスタンス作成、初期化、結果表示をデモンストレートします。
プログラム実行結果:

ご覧の通り、コンソールに.Netと表示され、オブジェクトの状態が正しく設定・取得されたことが確認できます。
重要なポイント
- クラスは関連するデータと振る舞いをグループ化する。
- オブジェクトはそのクラスのインスタンス化されたコピーで、独自のデータを持つ。
- フィールドが状態を保持、メソッドがアクションを実行。
C言語
- C# クラスとオブジェクト:堅牢な OOP の基礎
- C++ do-while文:構文、実践例、ネストしたループ
- C++ポインタをマスター:概念、例、実践的応用
- C++演算子オーバーロード:コード例付き実践ガイド
- C++クラスとオブジェクト:コード例付き実践ガイド
- C++関数を実例で徹底解説:基本から応用まで
- C#抽象クラス実践チュートリアル:コード例で理解する設計パターン
- C#コレクション実践チュートリアル:実例で学ぶ柔軟なデータ管理
- Python type()とisinstance()の理解:実例付き解説
- Javaシングルトンパターン完全解説:安全な実装と活用法
- Javaオブジェクト直列化: オブジェクトの持続化と復元(Serializable/transient/ObjectOutputStream)