オブジェクト指向—オブジェクト指向—
はじめに
この教科書ではC#プログラミングで重要な考えであるオブジェクト指向についてオブジェクト指向の三大要素と合わせて学習していきます。
オブジェクト指向
プログラミングの考え方
プログラミングの考え方は複数あり、言語の特性や実装するものに合わせてどれを採用するか決める必要があります。
Unityで開発を行う場合は「オブジェクト指向」という考え方を利用することが多いです。
C#は「オブジェクト指向言語」として、オブジェクト指向で実装するために必要な機能を言語仕様として取り込んでいます。
これらの考え方は複数を組み合わせて実装することも可能です。
| 考え方 | 概要 |
|---|---|
| 手続き型プログラミング | 処理を手順として上から下へ順次実行する方式。C言語が代表例。 |
| 関数型プログラミング | 関数を主軸に置き、副作用を避ける方式。Haskell、F#が代表例。 |
| アスペクト指向プログラミング | ログ出力、セキュリティなどの横断的関心事を分離して管理する方式。 |
| イベント駆動プログラミング | イベントの発生に応じて処理を実行する方式。GUI アプリケーションやWebアプリケーションで多用。 |
オブジェクト指向とは
オブジェクト指向は「プログラムで表現するものをオブジェクトという単位で設計・構築する考え方」です。
現実世界の「もの」をプログラムで表現するイメージで、データ(変数)と処理(関数)をひとまとめにして管理します。
例えばRPGゲームのプレイヤーを考えると、プレイヤーオブジェクトを構築することになります。
このプレイヤーオブジェクトは「装備」や「武器」といった更に小さいオブジェクトを装備しています。

オブジェクトをC#で表現
先ほどのプレイヤーオブジェクトをC#で実装してみます。
戦闘画面の処理を考えると、プレイヤーには以下のような関数や変数が必要になりそうです。

これをプログラムで表現すると以下のようになります。
csharp1class Player 2{ 3 public string name; 4 public int level; 5 public int hp; 6 public int mp; 7 8 public void PhysicalAttack() { } 9 public void MagicAttack() { } 10}
オブジェクト指向とクラス
C#はオブジェクト指向言語と呼ばれ言語仕様としてオブジェクト指向をサポートしています。
C#でオブジェクトを表現するための機能がクラスに整備されています。
先ほどの例でもプレイヤーオブジェクトを表現するためにPlayerクラスを作成しました。
オブジェクト指向の三大要素
オブジェクト指向を実現するために必要とされる要素が3つあります。
「継承」「カプセル化」「ポリモーフィズム」です。
これらをまとめて「オブジェクト指向の三大要素」といいます。
次の章からはそれぞれの要素について細かく見ていきます。
