オブジェクト指向
オブジェクト指向とは
オブジェクトが基本
世の中で起きているさまざまな特徴や機能をまとめた実体をオブジェクトといい、プログラムでデータ操作するための基礎概念です。オブジェクトに「特徴」や「動作」などを持たせてプログラミングする手法をオブジェクト指向プログラミング(OOP) といいます。
オブジェクトで役割分担する
アプリ開発では最初に「どんなオブジェクトが登場するか」を考えることが重要です。ゲームで例えると「キャラクター」「アイテム」「マップ」といったオブジェクトが必要で、それぞれ役割分担をします。オブジェクトの役割が決まったらプログラムファイルに定義していきます。
オブジェクト | 役割 |
---|---|
キャラクター | プレイヤーが主人公として操作する。名前や能力を設定してモンスターとバトルをする。 |
アイテム | 武器や道具などを持つことでキャラクターを拡張する。ショップで売買もできる。 |
マップ | 地形、建物などで構成され、キャラクターが移動する。モンスターが登場する。 |
オブジェクトの定義
キャラクターモデル
まず、登場するオブジェクトにどういった「特徴」や「動作」があるかを定義します。ゲームのキャラクターモデルのケースを考えてみましょう。
特徴
「名前」「職業」「体力」などは、キャラクターの能力である「特徴」に値を設定して定義できます。
項目 | 英語 | 値 |
---|---|---|
キャラクター名 | name | アリス |
職業 | job | 魔法使い |
体力 | hp | 50 |
動作
「歩く」「話す」「攻撃する」などは、キャラクターの特徴にあわせて「動作」するように定義できます。
項目 | メソッド | 備考 |
---|---|---|
歩く | walk | スピード、方向などでキャラクターを移動する |
話す | talk | 会話の内容、相手などを指定し、イベントを発生させる |
攻撃する | attack | キャラクターの能力、武器などから、相手に攻撃する |
クラスの基本
クラスとは
クラスは一般的に実体をまとめて定義する概念です。プログラミングでのクラスはプロパティやメソッドなどの集合体で、クラスファイルを作成して定義します。
クラス定義
プログラミングのクラス定義にはルールがあります。
- class修飾子を定義
- classの後にクラス名を定義
- : で区切る
- インデントでプロパティやメソッド定義
クラス名はパスカルケース
クラスのファイル名は、先頭と区切りの文字を大文字にする「パスカルケース」が一般的です。
インスタンス
クラスから作成されたオブジェクトのことをインスタンスといいます。クラス自体はオブジェクトではなく、インスタンスが生成されたはじめてオブジェクトになります。
- オブジェクト:さまざまな実体の概念
- インスタンス:クラスで生成されたオブジェクト
インスタンスの生成
インスタンスは、クラス名に () をつけて生成します。
クラスの定義
ファイル構成
Personクラス
「Person.py」を作成し、クラスを定義します。
Person.py
インスタンス生成
Characterインスタンス「man」を生成し、コンソール表示します。
createPerson.py
演習
問題1
つぎのプログラミングの定義は、オブジェクト指向で何といいますか?
- クラス
- インスタンス
- フィールド(プロパティ)
- メソッド
問題2
つぎのプログラミングで、オブジェクト指向では「dog」のことを何といいますか?
- クラス
- インスタンス
- フィールド(プロパティ)
- メソッド
問題3
つぎの表の内容は、オブジェクト指向で何といいますか?
項目 | 英語 | 値 |
---|---|---|
種別 | type | 犬 |
名前 | name | タロー |
鳴き声 | crying | わん! |
- クラス
- インスタンス
- フィールド(プロパティ)
- メソッド
問題4
つぎの表の内容は、オブジェクト指向で何といいますか?
項目 | 英語 | 備考 |
---|---|---|
走る | run | スピード、方向など |
鳴く | cry | 鳴き声、大きさなど |
- クラス
- インスタンス
- フィールド(プロパティ)
- メソッド