ライブコーディング(?)で学ぶPerlオブジェクト指向
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

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

on

  • 1,018 views

 

Statistics

Views

Total Views
1,018
Views on SlideShare
1,013
Embed Views
5

Actions

Likes
0
Downloads
1
Comments
0

1 Embed 5

http://firecracker.ytnobody.net 5

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

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

  • 1. ライブコーディング(?)で学ぶ Perl オブジェクト指向 Perl Beginners #4 Lightning Talk @ytnobody
  • 2. ネタ的に時間オーバーの予感
  • 3. 銅鑼ないのであまり気にしてませんが
  • 4. オブジェクト指向とはなんぞや
  • 5. 手前味噌ですが、 Perl Beginners #1 LT 「大ざっぱにオブジェクト指向」http://xrl.us/perlbeginners-roughoop をご覧ください。
  • 6. 今回はライブコーディングを通して Perlのオブジェクト指向を 知ってもらおうと思っています
  • 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; される
  • 17. DEMOこんどはMouseでコウモリを つくってみる
  • 18. まとめ● “package Foo::Bar;” でクラスを定義 ● 1ファイルにつき1クラスが見通しよくていい感じ● オブジェクト = bless { some => data, ... }, $classname; ● コンストラクタ(newとか)はこれをreturnする関数● 継承を使うと、親クラスにある機能は全部使える ● 親を複数指定してもOK(キメラのように)● クラスにないメソッドは呼べません ● Mixinを使うと、あとからメソッドを追加できます Exporterでmixinクラスを作る – – Mouse と Mouse::Roleを使って対応する● クラスの最後は真を置くべし! ● 1; とか、 Happy hacking! (; とか。 – 普通はだいたい”1;”
  • 19. ありがとうございました