第1回-Mooで覚えるオブジェクト指向プログラミング

@nqounetです。

(前文)

もうかなり前ですが、初心者向けにMooを使ったオブジェクト指向プログラミングの記事を書こうとしていて、下書きが残ったままでした。

今回、サイトジェネレータをHugoに変更しましたが、下書きになっていたものを順次解放していこうと思います。

(本文)

Perl鍋やなにわPerlでもそこそこ評判が良かったので、Mooを使ったオブジェクト指向なプログラミングについて書いてみます。

なお、なるべくシンプルな記述にしたいので、厳密には正しくない事も書いています。

Mooについて深く知りたい方は、原典を見ることをオススメします。

blessについて

これまでにPerlのオブジェクト指向について学んだ方は、blessすればOK、みたいに覚えている方が多いと思います。

しかし、改めてPerlでオブジェクト指向プログラミングを楽しむのであれば、blessについては忘れてしまいましょう。

今は、もっと良い方法があります。

Mooを使ってみる

まずは数行のプログラムを書いて動かしてみましょう。

Perlの実行環境が無い場合は、Perl入学式の資料を見ながら環境構築をしてみましょう。

https://github.com/perl-entrance-org/workshop-2015-01/blob/master/slide.md

つまづいたらTwitterなどで「#Perl入学式」というハッシュタグを付けてつぶやいてみると、誰かが助けてくれるかもしれません。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
package MyApp {
    use utf8;
    use Moo;
    has hoge => (is => 'rw');

    sub show {
        my $self = shift;
        print $self->hoge;
    }
};

my $app = MyApp->new;
$app->hoge('ほげ');
$app->show;

上記のコードを「hoge.pl」として保存してから、ターミナルで以下のように入力し、書いたプログラム(コード)を実行してみましょう。

コピペでも良いのですが、自分自身の手で書いてみるとより深く理解できると思います。

まずはコピペで動くのが確認できたら、改めて書いてみて、実行してみてください。

1
2
cpanm Moo
perl hoge.pl

「ほげ」という風に表示されましたか?

よくわからないかもしれませんが、これがオブジェクト指向の第一歩です。

まずは用語を覚えましょう

オブジェクト指向プログラミングでは、いくつかの専門的な用語を使います。

まず「オブジェクト」というのは、「属性」と「機能」を持った「まとまり」の事です。

そして、その「まとまり」は「クラス」で定義します。

「属性」は、「プロパティ(property)」や「メンバ(member)」「アトリビュート(attribute)」などと呼ばれています。 私は「プロパティ」と呼んでいるので、今後はプロパティと書いていきます。

「機能」は、「メソッド(method)」と呼ぶことが多いでしょう。

これらの用語は、何も考えずにそのまま覚えてしまうほうが良いです。日本語だと用語として覚えにくい場合は、カタカナで覚えてしまいましょう。使っていくうちに自然と理解できるようになります。

次回は先ほど書いたコードの説明もしてみたいと思います。

まとめ

  • bless は忘れよう
  • コピペではなく書いて動かしてみよう
  • 用語(オブジェクト、クラス、プロパティ、メソッド)を覚えよう

Comments

comments powered by Disqus