2018年02月05日

師匠のJava道場~第6回・クラスについて知るのじゃ!(前編)

弟子D:うむ、一か月ぶりだな! 弟子で……ぐはぁっ!!(師匠に蹴り飛ばされる)

師匠T:たわけが。 前回(第三回)の二番煎じはもういいわ。
さて、今月は、オブジェクトとクラスについて説明していくぞ。準備はいいかの?

弟子D:……

師匠T:おや、気絶したのか?

弟子D:ぐうぐう……Zzz

師匠T:起きんかっ!!(弟子に飛び蹴り

~クラスとはなんぞや?

師匠T:まずオブジェクトとは何かについてじゃが、簡単に言うなら、プログラムを構成する部品のことじゃ。オブジェクトには、そのオブジェクトの特性を表す数値(フィールド)と、それを操作するインタフェース(メソッド)が備え付けられておる。

弟子D:ふむふむ。

師匠T:Javaに限らず、ほとんどのオブジェクト指向のプログラミング言語では、このオブジェクトを中心にしてプログラミングを考え、これを組み合わせることでプログラムを作り上げていくのじゃ。

弟子D:なるほど……。そして、詳しいことを学びたかったら……。

師匠T:専門のサイトや書籍を読むべし。

弟子D:はい、師匠。それでクラスとは?

師匠T:うむ。クラスとは、そのオブジェクトの設計図のようなものじゃ。そして、このクラスをもとにして作られたものをインスタンスと呼ぶ。

弟子D:ふむふむ。

師匠T:ガンダムの世界に例えてみよう。ザクの設計図がクラス、そしてそれをもとに実際に作られたザクがインスタンスじゃ。

弟子D:なるほど、よくわかるたとえですね。

師匠T:では次はインスタンス化についてじゃ。いくぞ!

~インスタンス化じゃ!

師匠T:では、まずはインスタンス化の方法について、説明するとしようぞ。と言っても、難しいことはない。こう書けばいいだけじゃ。

----------
クラス名 インスタンス名 = new クラス名();
例:Zaku CharsZaku = new Zaku();
----------

師匠T:この例だと、Zakuクラスのインスタンス、CharsZakuを作る、というわけじゃ。

弟子D:なるほど。

師匠T:なお、時と場合によっては、()の中に引数が入ることもある。それについては、後で語るとしようぞ。

~クラスとの値のやり取りについてじゃ!

師匠T:さて。インスタンスと値のやりとりをする方法じゃが、それには、セッター、ゲッターを使う。

弟子D:セッター? ゲッター?

師匠T:セッターとは、インスタンスのフィールドの値を設定するためのメソッド。ゲッターとは、フィールドの値を取得するためのメソッドじゃ。いわば、これはインスタンスの門番のようなものじゃな。
Javaでは、このようにセッターとゲッターを通してやり取りするのが一般的じゃ。

弟子D:なぜ、そのようなことをするのですか?

師匠T:フィールドの値を、異常な値に書き換えられたことを考えてみるがよい。そのせいで異常な動作をするようになっては一大事。じゃが、セッターやゲッター内で、異常な値のやり取りを通さないようにチェックするようにすれば、その心配はなくなるじゃろう。

弟子D:なるほど。

師匠T:このように、フィールドを直接操作できないようにして、セッターやゲッターを通して値のやり取りを行い、フィールドを守ることをカプセル化という。覚えておくがよい。

~コンストラクタじゃ!

師匠T:さて、次はコンストラクタじゃ。これは、クラスがインスタンス化されたときに、最初に実行されるメソッドじゃ。
そのインスタンスの初期状態を設定するのが主な役割じゃな。

弟子D:ふむふむ。それで、コンストラクタはどう書くのでしょうか?

師匠T:うむ。これも難しいことはない。そのクラス名と同じ名前のメソッドを書けばいいだけじゃ。なお、タイプはpublicで書くこと。

----------
public クラス名()
例:public class1()
----------

師匠T:また、引数を必要とする場合は、このかっこの中に書いておくこと。その場合は、インスタンス化のときにも引数を必要とするぞ。

----------
public class class2 {
public class2(int p1) {
……
}
}

class2 ins1 = new class2(5);
----------

師匠T:なお、コンストラクタも他のメソッドと同じく、オーバーライドすることができる。引数を必要としない場合と、引数を必要とする場合の、両方の呼び出し方がある場合は、これを使うこともあるじゃろう。オーバーライドについては覚えておるか?

弟子D:なんでしたっけ?

師匠T:はぁっ!!(弟子に飛び蹴り)さて、今月はここまで。次回も今回の続き。次回は、アクセス修飾子と、文字列について学び、そして試しにクラスを作ってみようと思う。復習を忘れずにな。

※次の更新は、2月8日。『師匠TのチャレンジARSゲーム!』の予定です。お楽しみに!
posted by 裏編 at 10:23| 師匠のJava道場 | 更新情報をチェックする