第30回 変数が関数(メソッド)を呼び出せればオブジェクト指向

さて、オブジェクト指向を語りだすと長くなるので、(怒れてしまう可能性もあるが)ずばっとオブジェクト指向とはどんなものかというの説明すると、


「変数が関数(メソッド)を呼び出せればオブジェクト指向だ!!」


これにつきる(あくまで今の時点の私の考え)。


JavaScriptだと . (ドット)によりメソッドを呼べる

document.getElementsByTagName('body')


Perlだと、 -> (マイナスと大なり記号による 矢印)でメソッドが呼べる

my $c = Hoge::new();
$c->h();


(※メソッドチェーンとか new Array().map() 的な書き方をすると変数ないじゃん とか言われそうだがそれは置いておいて)

(※あれ? 日本語には変数なくない?? とか色々、ツッコまれそうだが そこも置いておいて)



ただし

ただ変数を通して、メソッドを呼べればいいというものではない。

うまくプログラムをつくるなら、変数からなんでもかんでもメソッドが呼べればいいと言う訳ではない。


ある変数からは、「ファイルのコピー、移動」といったことに関数することができるメソッドだけ呼べるようにする。
ある変数からは、「ファイルの中身を解析する」といったことに関することができるメソッドだけ呼べるようにする。
ある変数からは、「データベースとやりとりする」といったことに関することができるメソッドだけ呼べるようにする。


こういったことによって、その変数を用いればある程度なにができるのか推測がつき、


こういった処理がしたいなら、 ああ!あの変数を使うんだ!


といったようにプログラムを読みやすく開発しやすくする必要がある。
ファイルに関数する処理をまとめた変数から呼び出しているメソッドが、データベースにアクセスしにいってることなどということはまずないのだ。

だから、

ファイルに関することを集めたメソッドが呼び出せる変数->copy();

というのを読んだ瞬間。ある程度、このcopyメソッドができることに推測がつく。
だれも、テーブルのデータを別のテーブルにコピーするだろうとは思わないのだ。


次回は

次回は、Perlオブジェクト指向のプログラムをなにか書いてみようと思います。
(お遊び程度にですが)