WinFormアプリで学ぶオブジェクト指向プログラミング – カプセル化の基本
この資料では、初学者向けにC#のWinFormアプリケーションを使用して、オブジェクト指向プログラミング(OOP)のカプセル化の基本概念を学ぶためのサンプルを紹介します。具体的には、ユーザー情報を管理するクラスを作成し、そのデータをフォームに表示することで、カプセル化の役割と重要性を体験します。
1. カプセル化とは
カプセル化は、オブジェクト指向プログラミングの重要な概念であり、データ(フィールド)とその操作(メソッド)を1つの単位としてまとめ、外部からの直接アクセスを制限することを意味します。これにより、データの整合性が保たれ、コードの保守性が向上します。
2. サンプルアプリケーションの概要
このサンプルでは、ユーザーの名前と年齢を管理するクラスを作成し、そのデータをフォームで表示します。フォームは、ユーザーが入力した情報を使って、カプセル化されたクラスのインスタンスを作成し、そのデータをフォーム上に表示します。
3. クラスの実装
UserInfoクラスの実装
public class UserInfo
{
private string name;
private int age;
public string Name
{
get { return name; }
set { name = value; }
}
public int Age
{
get { return age; }
set
{
if (value >= 0)
{
age = value;
}
}
}
public UserInfo(string name, int age)
{
this.name = name;
this.age = age;
}
public string GetInfo()
{
return $"Name: {Name}, Age: {Age}";
}
}
このクラスでは、name
とage
のフィールドをプライベートに設定し、パブリックなプロパティName
とAge
を通じてデータをアクセスおよび変更します。年齢の設定では、負の数が許可されないようにしています。
4. WinFormデザイン
新しくプロジェクトを作成します(EncapsulationDemoApp)
フォーム要素の配置
- テキストボックス (nameInput, ageInput): 名前と年齢を入力するためのフィールド。
- ボタン (showInfoButton): ユーザー情報を表示するためのボタン。
- ラベル (infoLabel): ユーザー情報を表示するためのラベル。
5. フォームコードの実装
Form1のコード
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void showInfoButton_Click(object sender, EventArgs e)
{
string name = nameInput.Text;
if (int.TryParse(ageInput.Text, out int age))
{
UserInfo user = new UserInfo(name, age);
infoLabel.Text = user.GetInfo();
}
else
{
MessageBox.Show("有効な年齢を入力してください。");
}
}
}
このフォームコードでは、ユーザーが入力した名前と年齢を取得し、UserInfo
クラスのインスタンスを作成して、その情報をラベルに表示します。int.TryParse
メソッド内で変数age
を宣言することで、コードをより簡潔にしています。エラーメッセージも日本語で表示されるようにしています。
6. まとめ
このサンプルでは、カプセル化の基本概念を体験するために、ユーザー情報を管理するクラスを作成し、WinFormアプリケーションを通じてそのデータを表示しました。カプセル化により、データの整合性を保つとともに、外部からの不正なアクセスを防ぐ方法を学びました。
7. 演習問題
UserInfo
クラスに新しいプロパティ(例:Email
)を追加し、カプセル化を適用してください。- 年齢が120歳以上の場合にも設定できないようにコードを拡張してください。
ディスカッション
コメント一覧
まだ、コメントがありません