今回は「オブジェクト指向」、「クラス」、「インスタンス化」というJavaの核になる部分について説明したいと思います。
◆オブジェクト指向
Javaはオブジェクト指向プログラミング言語です。
オブジェクト(object)とは「物体・対象・目的」といった意味になりますが、実体がない概念的なモノも含めてオブジェクトといいます。
開発においてプログラムをオブジェクトのまとまりと考え、その組み合わせによってソフトウェアを構築していく。
これがオブジェクト指向の考え方です。
簡単に言ってしまえばオブジェクトは「パーツ」や「部品」のことです。
その部品を組み合わせてプログラムを構築していくわけですね。
さらに部品ですので汎用性があり、他へ流用することもできます。
オブジェクト指向においてデータのことを「属性」、機能のことを「操作」と呼びます。
オブジェクトはこの「属性」と「操作」を一つにまとめたもののことをいいます。
◆クラス
ではいよいよクラスの説明に入ります。
クラスは一言でいえば「設計図」です。
複数のオブジェクトにおいて、属性や操作の共通した部分を抽出することを「抽象化」と言います。
抽象化してできた設計図がクラスです。
一体どういうことなのか図をみてみましょう。
図では乗用車、船、飛行機の3種類の乗り物があります。
それぞれ様々な機能がありますが、共通点が赤字で書かれた箇所です。
エンジン ブレーキ この2つが共通しています。
つまり、ここから言えることは、 「乗り物にはエンジンとブレーキがある」 ということです。
図の右下の部分ですね。
この「乗り物」にあたるのが「クラス」です。
この「乗り物クラス」という設計図をもとにオブジェクトを作成するわけです。
◆インスタンス化
設計図であるクラス属性は空っぽな状態です。
そこに具体的な値を入れることを「インスタンス化」といいます。
では図を例にとってみてみましょう。
上の図には車クラスがあります。
車クラスには「形」、「色」、「大きさ」の3つの要素があります。
この要素にそれぞれ具体的な値を入れてあげることがインスタンス化です。
すると車1、車2、車3とオブジェクトが生成され、実行可能な状態となるわけです。
「インスタンス化」をするには基本的に以下の構文を用います。
クラス名 変数名 = new クラス名();
変数の宣言と似てますね。
では実際どのように使われるのかサンプルプログラムをみてみましょう。
class OBJ void metTest() { System.out.println("インスタンス化しました"); } } public class Sample { public static void main(String[] args) { OBJ obj = new OBJ(); // インスタンス化 obj.metTest(); //メソッドの呼び出し } }
実行結果「インスタンス化しました」
ポイントはいくつかあるのですが、順を追って説明していきましょう。
①まずこのサンプルには「OBJクラス」と「Sampleクラス」の2つのクラスがあります。
「OBJクラス」の中にはmetTest()メソッドが定義されてします。
metTets()メソッドの中は「インスタンス化しました」という文字列を出力させるものとなっています。
②7行目からが「Sampleクラス」の記述です。
「Sampleクラス」にはmainメソッドという操作部分の記述が8行目にあります。
mainメソッドはプログラム実行時に最初に呼ばれるメソッドです。
つまりこのmainメソッドの中に実際に実行する処理を書いていくわけです。
③mainメソッドの中ではOBJクラスをもとにobjオブジェクトを作成しています。(インスタンス化)
そしてそのobjオブジェクトのメソッドを呼び出しています。
すると、OBJクラスのmetTestメソッドが呼び出され、「インスタンス化しました」と出力される仕組みとなっています。
オブジェクトのメソッドを呼び出す際には「変数名.メソッド名();」で呼び出します。
◆まとめ
オブジェクト指向・・・属性と操作を一つにまとめたオブジェクトの組み合わせによって開発するという考え方
クラス・・・複数のオブジェクトの特性を抽象化してできた設計図
インスタンス化・・・クラスの属性に具体的な値を入れること
今回はここまでとしたいと思います。