SlideShare a Scribd company logo
ライブコーディング(?)で学ぶ
  Perl オブジェクト指向
   Perl Beginners #4
     Lightning Talk

      @ytnobody
ネタ的に

時間オーバーの予感
銅鑼ないので

あまり気にしてませんが
オブジェクト指向とはなんぞや
手前味噌ですが、

     Perl Beginners #1 LT
   「大ざっぱにオブジェクト指向」

http://xrl.us/perlbeginners-roughoop

          をご覧ください。
今回はライブコーディングを通して

  Perlのオブジェクト指向を

 知ってもらおうと思っています
よくある例:Animalクラス
●   Cryという変数を持っている
    ●   鳴き声を表現
●   Barkというメソッドを持っている
    ●   Cry変数で指定された鳴き声で鳴くことができる
DEMO: 動物を鳴かせよう
●   Animalクラスを定義
●   Animalオブジェクトを$catに格納
●   $cat に “meow” と鳴かせる
●   Animalオブジェクトを$dogに格納
●   $dog に “bow” と鳴かせる
シンプルだが面倒
●   毎回鳴き声を定義するのが億劫。
●   そもそも俺は猫を定義したいんだ!
●   じゃあどうする?
    ●   「継承」という概念を取り入れよう
継承を取り入れると




              継承




                   Cat クラス
 Animal クラス
DEMO: 猫を鳴かせよう
●   Animalクラスを継承したCatクラスを定義する
    ●   鳴き声は基本”meow”
●   $catにCatオブジェクトを格納する
●   $catに “meow” と鳴かせる
DEMO: 鳥を飛ばそう
●   Animalクラスを派生させて、Birdクラスも定義しよう
    ●   鳴き声は特に指定なし
    ●   Flyメソッドを追加する
        – 鳥だから飛べるはず
●   $birdにBirdオブジェクトを格納する
●   $birdを飛ばす
DEMO:キメラをつくろう
●   CatとBirdの両方を継承する Chimera クラスを定義
●   $chimera に Chimeraオブジェクトを格納
●   $chimeraを飛ばす
●   さらに”meow”と鳴かせる
コウモリを作りたいが・・・
●   コウモリは鳥じゃない
●   でも飛べる
●   どうする・・・
    ●   「飛ぶ」能力だけを他のクラスに分ける
        – Mixinといいます
        – Exporterを使うといいんじゃないですか
●   Animal::Mixin::Fly というクラスに定義してみる
DEMO: コウモリを作る
●   Animal::Mixin::Fly を定義する
●   Batクラスを定義する
    ●   鳴き声は”geeh!”
    ●   Animal::Mixin::Flyをuseするのを忘れないように。。。
●   $bat に Batオブジェクトを格納する
●   $batを飛ばす & 鳴かす
クラスを定義するのに
便利なCPANモジュール
●   Class::Accessor::Fast
    ●   アクセッサと呼ばれるメソッドを簡単に定義できる
●   Mouse
    ●   アクセッサに型指定や読み書きの権限を設定できる
    ●   Mixin(MouseではRoleと呼ぶ)の実装が楽
    ●   自動的にuse strict; use warnings; される
DEMO

こんどはMouseでコウモリを

    つくってみる
まとめ
●   “package Foo::Bar;” でクラスを定義
    ●   1ファイルにつき1クラスが見通しよくていい感じ
●   オブジェクト = bless { some => 'data', ... }, $classname;
    ●   コンストラクタ(newとか)はこれをreturnする関数
●   継承を使うと、親クラスにある機能は全部使える
    ●   親を複数指定してもOK(キメラのように)
●   クラスにないメソッドは呼べません
    ●   Mixinを使うと、あとからメソッドを追加できます
        Exporterでmixinクラスを作る
        –
      – Mouse と Mouse::Roleを使って対応する
●   クラスの最後は真を置くべし!
    ●   1; とか、 'Happy hacking! ('; とか。
        –   普通はだいたい”1;”
ありがとうございました

More Related Content

PDF
プロトコル指向に想う世界観 #__swift__
PDF
Swift 2.0 で変わったところ「前編」 #cswift
PDF
リテラルと型の話 #__swift__
PDF
lazy var の特徴を知る #cocoa_kansai #cswift
PDF
I phoneアプリ入門 第5回
PPTX
jvmlang.daitokai 1.0.0 MinCamlJを作ってみた
PPTX
Perlでちょいモテデザインパターン
PDF
Pattern match with case class
プロトコル指向に想う世界観 #__swift__
Swift 2.0 で変わったところ「前編」 #cswift
リテラルと型の話 #__swift__
lazy var の特徴を知る #cocoa_kansai #cswift
I phoneアプリ入門 第5回
jvmlang.daitokai 1.0.0 MinCamlJを作ってみた
Perlでちょいモテデザインパターン
Pattern match with case class

Viewers also liked (20)

PPTX
Microprocesadores[1]
PPSX
GMM 2012 Chiamati a far risplendere la Parola di verità
PDF
Watch my doc!
PPT
Aprile
PPTX
Oa 한글표준화
PPT
Febbraio
PPS
Mantra rus
PDF
Novembre 2011
PDF
Strumento di lavoro
PPSX
Pati alegre (fil eminimizer)
PPTX
Heather
PDF
Guidelines
PDF
Family tree
PPTX
How great thou art
PDF
Io vangelo iii_avvento_anno_b_14 dicembre
DOC
Kozma Szilárd: Nagy Attila Puli, avagy az árnyék én a sorsképlet tükrében
PPTX
Scuola dante alighieri
PPT
Vasse 150910 wayne
Microprocesadores[1]
GMM 2012 Chiamati a far risplendere la Parola di verità
Watch my doc!
Aprile
Oa 한글표준화
Febbraio
Mantra rus
Novembre 2011
Strumento di lavoro
Pati alegre (fil eminimizer)
Heather
Guidelines
Family tree
How great thou art
Io vangelo iii_avvento_anno_b_14 dicembre
Kozma Szilárd: Nagy Attila Puli, avagy az árnyék én a sorsképlet tükrében
Scuola dante alighieri
Vasse 150910 wayne
Ad

Similar to ライブコーディング(?)で学ぶPerlオブジェクト指向 (13)

PDF
大ざっぱにオブジェクト指向
KEY
20年越しで Perl 4 to 5 した話
PPT
Simo Tutrial
PPT
Simo Tutrial
PPTX
Perl logging
PDF
プログラミング言語の理念いろいろ
PPTX
ピカチュウによるPythonオブジェクト入門2
PDF
Perl勉強会#2資料
PDF
"What Does Your Code Smell Like?"で学ぶPerl6
PDF
Alluren of prototype-based OOP
PDF
Perl 6 Object-Oliented Programming
PDF
YAPC::Asia Tokyo 2013 ランチセッション
大ざっぱにオブジェクト指向
20年越しで Perl 4 to 5 した話
Simo Tutrial
Simo Tutrial
Perl logging
プログラミング言語の理念いろいろ
ピカチュウによるPythonオブジェクト入門2
Perl勉強会#2資料
"What Does Your Code Smell Like?"で学ぶPerl6
Alluren of prototype-based OOP
Perl 6 Object-Oliented Programming
YAPC::Asia Tokyo 2013 ランチセッション
Ad

More from azuma satoshi (20)

PPTX
zの力をPerlに持ってきた話 @湘.なんか #2 by わいとん a.k.a. ytnobody
PPTX
Elixirで関数型言語の設計を学ぶ - daimon.ex 2024-09-20
PPTX
湘なんか#1 え!!JavaScriptでパイプラインを? by @ytnobody
PPTX
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
PPTX
finally (not finally)
PPTX
時を駆けるINSERT.pptx
PPTX
できる!サーバレスアーキテクチャ
PDF
印刷に耐えられる品質のQRCodeをPerlで生成したよ! - Mishima.pm #1
PDF
L tthon
PDF
Perlbeginnes 9 lt_ytnobody
PDF
Perlbeginnes 9 opening
PDF
Perlbeginners proposal
ODP
Chibapm01 lt
PDF
入れ子構造を分解する
PDF
YAPC::Asia 2012 CPANに恩返ししよう
PDF
Perlbeginnes 4 keynote
PDF
Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話
PDF
Perlbeginners 3 opening talk
PDF
PSGIへの誘い
PDF
Perlbeginnes 2 keynote
zの力をPerlに持ってきた話 @湘.なんか #2 by わいとん a.k.a. ytnobody
Elixirで関数型言語の設計を学ぶ - daimon.ex 2024-09-20
湘なんか#1 え!!JavaScriptでパイプラインを? by @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
finally (not finally)
時を駆けるINSERT.pptx
できる!サーバレスアーキテクチャ
印刷に耐えられる品質のQRCodeをPerlで生成したよ! - Mishima.pm #1
L tthon
Perlbeginnes 9 lt_ytnobody
Perlbeginnes 9 opening
Perlbeginners proposal
Chibapm01 lt
入れ子構造を分解する
YAPC::Asia 2012 CPANに恩返ししよう
Perlbeginnes 4 keynote
Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話
Perlbeginners 3 opening talk
PSGIへの誘い
Perlbeginnes 2 keynote

ライブコーディング(?)で学ぶPerlオブジェクト指向

  • 1. ライブコーディング(?)で学ぶ Perl オブジェクト指向 Perl Beginners #4 Lightning Talk @ytnobody
  • 5. 手前味噌ですが、 Perl Beginners #1 LT 「大ざっぱにオブジェクト指向」 http://xrl.us/perlbeginners-roughoop をご覧ください。
  • 7. よくある例:Animalクラス ● Cryという変数を持っている ● 鳴き声を表現 ● Barkというメソッドを持っている ● Cry変数で指定された鳴き声で鳴くことができる
  • 8. DEMO: 動物を鳴かせよう ● Animalクラスを定義 ● Animalオブジェクトを$catに格納 ● $cat に “meow” と鳴かせる ● Animalオブジェクトを$dogに格納 ● $dog に “bow” と鳴かせる
  • 9. シンプルだが面倒 ● 毎回鳴き声を定義するのが億劫。 ● そもそも俺は猫を定義したいんだ! ● じゃあどうする? ● 「継承」という概念を取り入れよう
  • 10. 継承を取り入れると 継承 Cat クラス Animal クラス
  • 11. DEMO: 猫を鳴かせよう ● Animalクラスを継承したCatクラスを定義する ● 鳴き声は基本”meow” ● $catにCatオブジェクトを格納する ● $catに “meow” と鳴かせる
  • 12. DEMO: 鳥を飛ばそう ● Animalクラスを派生させて、Birdクラスも定義しよう ● 鳴き声は特に指定なし ● Flyメソッドを追加する – 鳥だから飛べるはず ● $birdにBirdオブジェクトを格納する ● $birdを飛ばす
  • 13. DEMO:キメラをつくろう ● CatとBirdの両方を継承する Chimera クラスを定義 ● $chimera に Chimeraオブジェクトを格納 ● $chimeraを飛ばす ● さらに”meow”と鳴かせる
  • 14. コウモリを作りたいが・・・ ● コウモリは鳥じゃない ● でも飛べる ● どうする・・・ ● 「飛ぶ」能力だけを他のクラスに分ける – Mixinといいます – Exporterを使うといいんじゃないですか ● Animal::Mixin::Fly というクラスに定義してみる
  • 15. DEMO: コウモリを作る ● Animal::Mixin::Fly を定義する ● Batクラスを定義する ● 鳴き声は”geeh!” ● Animal::Mixin::Flyをuseするのを忘れないように。。。 ● $bat に Batオブジェクトを格納する ● $batを飛ばす & 鳴かす
  • 16. クラスを定義するのに 便利なCPANモジュール ● Class::Accessor::Fast ● アクセッサと呼ばれるメソッドを簡単に定義できる ● Mouse ● アクセッサに型指定や読み書きの権限を設定できる ● Mixin(MouseではRoleと呼ぶ)の実装が楽 ● 自動的にuse strict; use warnings; される
  • 18. まとめ ● “package Foo::Bar;” でクラスを定義 ● 1ファイルにつき1クラスが見通しよくていい感じ ● オブジェクト = bless { some => 'data', ... }, $classname; ● コンストラクタ(newとか)はこれをreturnする関数 ● 継承を使うと、親クラスにある機能は全部使える ● 親を複数指定してもOK(キメラのように) ● クラスにないメソッドは呼べません ● Mixinを使うと、あとからメソッドを追加できます Exporterでmixinクラスを作る – – Mouse と Mouse::Roleを使って対応する ● クラスの最後は真を置くべし! ● 1; とか、 'Happy hacking! ('; とか。 – 普通はだいたい”1;”