sironekotoroの日記

Perl で楽をしたい

すぐわかる オブジェクト指向 Perl 第11章 オブジェクト クラスの作成

-> は左結合

  • なるほど
  • $space = Triangle->new(3,4,5)->InscribedCircleSpace;
    • この場合には、Triangleメソッドに 3 , 4 , 5 って値を与えて三角形オブジェクトを作成して、その内接円を求める
    • おぉ、なんかかっこいい

!?

一方、クラスは型のことです。
少年漫画「翔丸」(能條純一著、講談社刊)では、さっきまで無軌道に暴れていた怖いお兄さん達が、謎の美少年・翔丸によってナイフで傷を付けられる事によってすっかり型にはめられてしまい、軒並み「翔丸組」の軍門に下ってしまいます。

  • いきなりの能條画伯の登場にビビる
    • 次のページにワンカットもある
  • こんな展開を550ページの本の350ページまで隠しておくとは・・・
  • 翔丸 - Wikipedia

    翔丸』(しょうまる)は、能條純一による日本の漫画。『コミックモーニング』(講談社)において1987年13号から1989年6号に掲載された。当初は不定期掲載、のちに隔週連載。同じく能條の『天の男』や『ゴッドハンド』に見られる「悪のカリスマ」を描いた系統の作品である。

  • 知らないなぁ・・・
    • 絶版本を置いているマンガ図書館Zには無かった。漫画喫茶ならあるかな?

ここでは「翔丸組」がクラスで、翔丸が振るうナイフがコンストラクタと考えられるでしょう

  • わかんねぇ・・・けど、分かるような・・・
  • ナイフでシャってやる事でクラスを作る、的な?

クラスとオブジェクトの関係はよく人形焼きに例えられます。人形焼きというと鯛焼きとかペコちゃん焼きの仲間で、皮とアンコを型に入れて焼くと、中から七福神などの形をしたお菓子が出てきます。
ここで人形焼きを作る機械をコンストラクタ、いっこいっこの人形焼きをオブジェクトというわけです。

オブジェクトは、あるクラスのコンストラクタによって、そのクラスのオブジェクトとして生成される

  • ううん、わかったような。
  • 鯛焼きは、鯛焼き機によって、鯛焼きになる・・・?んん?

# クラスとインスタンスとオブジェクト

クラスもまたオブジェクトである

  • なるほど、先の「鯛焼きは、鯛焼き機によって、鯛焼きになる」で??ってなったのは、こういうことか?

クラスがオブジェクトに与える要素のことをプロパティ(property 属性)といいます

メソッドは、オブジェクトに渡すメッセージであるという言い方をしましたが、メソッドには2つの目的があります。 - プロパティを取得する - プロパティを設定する

  • おっけー、これは分かる。

三角形型の操作も同じ原理です。「三角形さん、あんたを 3 , 4 , 5 という辺の長さで生成するよ」というコンストラクタメソッドの一種で、1つのメッセージ渡し(message passing) です。

  • うん、わかる、納得できる。

bless で classに神の祝福を

  • いろんなところで見てきて、いろんな本で見てきた bless が何をするものなのか、やっとわかった

    • インスタンスメソッドで作ったリファレンスが、どのクラスに属しているかをリファレンスに分からせる・・・
    • ちゃんとした言葉で言えないところに理解力不足を感じる
    • でも、分かった感はある、Perlオブジェクト指向の勉強してはじめて、分かった感がある。
  • ためしに、「続・はじめてのPerl」のOOPのところをさらっと読んでみると、わかる。

    • ただただ本を写経していたけど、今は、その意味が(なんとなく)わかる。
    • ここで、「続・はじめてのPerl」に行きたい気持ちを抑えて、本書を続行する。
    • というか、自作のオブジェクト作ってみたいすぎて

ゲッター、セッター

  • はい、これもイミフな単語でした。
    • はじめて聞いたのは、たしか YAPC::Asia2013 でだった気がする
    • よくそんなんで参加したなと思うが、参加したおかげで今があるので、積極的に参加するべき
  • オブジェクトのプロパティ?「直接いじれば良いじゃん」とか思ってたので反省。

    特に重要なのは、セッターで不法な値を代入したときに croak することです。

唐突に

  • あぁ、そうか、オブジェクトがデータと手続き(操作)を一緒に持ってるって、こういうことか
  • エウレカエウレカ