Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
ライブコーディング(?)で学ぶ  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オブジェクト...
DEMO:キメラをつくろう●   CatとBirdの両方を継承する Chimera クラスを定義●   $chimera に Chimeraオブジェクトを格納●   $chimeraを飛ばす●   さらに”meow”と鳴かせる
コウモリを作りたいが・・・●   コウモリは鳥じゃない●   でも飛べる●   どうする・・・    ●   「飛ぶ」能力だけを他のクラスに分ける        – Mixinといいます        – Exporterを使うといいんじゃない...
DEMO: コウモリを作る●   Animal::Mixin::Fly を定義する●   Batクラスを定義する    ●   鳴き声は”geeh!”    ●   Animal::Mixin::Flyをuseするのを忘れないように。。。●  ...
クラスを定義するのに便利なCPANモジュール●   Class::Accessor::Fast    ●   アクセッサと呼ばれるメソッドを簡単に定義できる●   Mouse    ●   アクセッサに型指定や読み書きの権限を設定できる    ...
DEMOこんどはMouseでコウモリを    つくってみる
まとめ●   “package Foo::Bar;” でクラスを定義    ●   1ファイルにつき1クラスが見通しよくていい感じ●   オブジェクト = bless { some => data, ... }, $classname;    ...
ありがとうございました
Upcoming SlideShare
Loading in …5
×

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

1,021 views

Published on

  • Be the first to comment

  • Be the first to like this

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

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

×