15.
オブジェクト指向とクラス
オブジェクト指向
オブジェクト指向とは
オブジェクトが基本
世の中で起きているさまざまな特徴や機能をまとめた実体をオブジェクトといい、プログラムでデータ操作するための基礎概念です。オブジェクトに「特徴」や「動作」などを持たせてプログラミングする手法をオブジェクト指向プログラミング(OOP) といいます。
オブジェクトで役割分担する
アプリ開発では最初に「どんなオブジェクトが登場するか」を考えることが重要です。ゲームで例えると「キャラクター」「アイテム」「マップ」といったオブジェクトが必要で、それぞれ役割分担をします。オブジェクトの役割が決まったらプログラムファイルに定義していきます。
オブジェクト | 役割 |
---|---|
キャラクター | プレイヤーが主人公として操作する。名前や能力を設定してモンスターとバトルをする。 |
アイテム | 武器や道具などを持つことでキャラクターを拡張する。ショップで売買もできる。 |
マップ | 地形、建物などで構成され、キャラクターが移動する。モンスターが登場する。 |
オブジェクトの定義
まず、登場するオブジェクトにどういった「特徴」や「動作」があるかを定義します。ゲームのキャラクターオブジェクトの場合を考えてみましょう。
キャラクターオブジェクトの例
キャラクターは「名前」「職業」「体力」などの「特徴」に値を設定して定義できます。
特徴
項目 | 英語 | 値 |
---|---|---|
キャラクター名 | name | アリス |
職業 | job | 魔法使い |
体力 | hp | 50 |
動作
「歩く」「話す」「攻撃する」などは、キャラクターの特徴にあわせて「動作」するように定義できます。
項目 | メソッド | 備考 |
---|---|---|
歩く | walk | スピード、方向などでキャラクターを移動する |
話す | talk | 会話の内容、相手などを指定し、イベントを発生させる |
攻撃する | attack | キャラクターの能力、武器などから、相手に攻撃する |
クラスの基本
クラスとは
クラスは一般的に実体をまとめて定義する概念です。プログラミングでのクラスはプロパティやメソッドなどの集合体で、クラスファイルを作成して定義します。
クラス定義
プログラミングのクラス定義にはルールがあります。
- classの前に修飾子を定義
- classの後にクラス名を定義
- { } (中括弧)の中にメンバ変数やメソッドを定義
修飾子 class クラス名 {
}
クラス名はパスカルケース
クラスのファイル名は、先頭と区切りの文字を大文字にする「パスカルケース」が一般的です。
//動物
Animal
//ユーザ
User
//購入商品クラス
UserItem
インスタンス
クラスから作成されたオブジェクトのことをインスタンスといいます。クラス自体はオブジェクトではなく、インスタンスが生成されたはじめてオブジェクトになります。
- オブジェクト:さまざまな実体の概念
- インスタンス:クラスで生成されたオブジェクト
インスタンスの生成
インスタンスは、クラスファイルを「new」して生成します。
クラス名 インスタンス = new クラス名();
クラスの定義
ファイル構成
src/
└── rpg/
├── App.java
└── Character.java

Characterクラス
「rpg」パッケージに、「Character」クラスを作成します。

Character.java
package rpg;
public class Character {
}
メインファイル
「rpg」パッケージに「App.java」クラスを作成し、mainメソッドで Characterクラスを生成します。
ファイル作成
App.java
package rpg;
public class App {
public static void main(String[] args) {
}
}
インスタンス生成
メインメソッドで、Characterインスタンス「wizard」を生成し、コンソール表示しておきます。
App.java
package rpg;
public class App {
public static void main(String[] args) {
Character wizard = new Character();
System.out.println(wizard);
}
}
メインプログラムの実行
Eclipseでメインプログラム「App.java」を実行してみましょう。
結果
Characterインスタンスがオブジェクトの番号のような形で表示されました。クラスに特徴や機能を持たせることで、インスタンスで操作できるようになります。
rpg.Character@xxxxxxx
演習
問題1
つぎのプログラミングの定義は、オブジェクト指向で何といいますか?
public class Animal() {
}
1)クラス
2)インスタンス
3)フィールド(プロパティ)
4)メソッド
問題2
つぎのプログラミングで、オブジェクト指向では「dog」のことを何といいますか?
Animal dog = new Animal();
1)クラス
2)インスタンス
3)フィールド(プロパティ)
4)メソッド
問題3
つぎの表の内容は、オブジェクト指向で何といいますか?
項目 | 英語 | 値 |
---|---|---|
種別 | type | 犬 |
名前 | name | タロー |
鳴き声 | crying | わん! |
1)クラス
2)インスタンス
3)フィールド(プロパティ)
4)メソッド
問題4
つぎの表の内容は、オブジェクト指向で何といいますか?
項目 | 英語 | 備考 |
---|---|---|
走る | run | スピード、方向など |
鳴く | cry | 鳴き声、大きさなど |
1)クラス
2)インスタンス
3)フィールド(プロパティ)
4)メソッド