More Related Content
PPTX
PDF
lazy var の特徴を知る #cocoa_kansai #cswift PDF
PPTX
jvmlang.daitokai 1.0.0 MinCamlJを作ってみた PDF
Pattern match with case class PDF
PDF
Swift 2.0 で変わったところ「前編」 #cswift PDF
Viewers also liked
PDF
PDF
DOC
Kozma Szilárd: Nagy Attila Puli, avagy az árnyék én a sorsképlet tükrében PPTX
PPTX
PPSX
GMM 2012 Chiamati a far risplendere la Parola di verità PDF
PPTX
PPT
PDF
PPS
PDF
PDF
PPTX
PPSX
Pati alegre (fil eminimizer) PDF
PDF
Io vangelo iii_avvento_anno_b_14 dicembre PPT
PPTX
PPT
Similar to ライブコーディング(?)で学ぶPerlオブジェクト指向
KEY
PPTX
PPTX
PDF
PDF
PDF
Alluren of prototype-based OOP PDF
PDF
PPT
PPT
PDF
Perl 6 Object-Oliented Programming PDF
YAPC::Asia Tokyo 2013 ランチセッション PDF
"What Does Your Code Smell Like?"で学ぶPerl6 More from azuma satoshi
PPTX
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody PPTX
zの力をPerlに持ってきた話 @湘.なんか #2 by わいとん a.k.a. ytnobody PPTX
Elixirで関数型言語の設計を学ぶ - daimon.ex 2024-09-20 PDF
PDF
PPTX
湘なんか#1 え!!JavaScriptでパイプラインを? by @ytnobody PDF
PDF
Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話 PDF
Perlbeginnes 9 lt_ytnobody PDF
YAPC::Asia 2012 CPANに恩返ししよう PPTX
ODP
PPTX
PDF
PDF
Perlbeginners 3 opening talk PDF
PDF
PDF
PDF
印刷に耐えられる品質のQRCodeをPerlで生成したよ! - Mishima.pm #1 PPTX
ライブコーディング(?)で学ぶPerlオブジェクト指向
- 1.
- 2.
- 3.
- 4.
- 5.
手前味噌ですが、
Perl Beginners #1 LT
「大ざっぱにオブジェクト指向」
http://xrl.us/perlbeginners-roughoop
をご覧ください。
- 6.
- 7.
よくある例:Animalクラス
● Cryという変数を持っている
● 鳴き声を表現
● Barkというメソッドを持っている
● Cry変数で指定された鳴き声で鳴くことができる
- 8.
DEMO: 動物を鳴かせよう
● Animalクラスを定義
● Animalオブジェクトを$catに格納
● $cat に “meow” と鳴かせる
● Animalオブジェクトを$dogに格納
● $dog に “bow” と鳴かせる
- 9.
シンプルだが面倒
● 毎回鳴き声を定義するのが億劫。
● そもそも俺は猫を定義したいんだ!
● じゃあどうする?
● 「継承」という概念を取り入れよう
- 10.
- 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.
- 18.
まとめ
● “package Foo::Bar;” でクラスを定義
● 1ファイルにつき1クラスが見通しよくていい感じ
● オブジェクト = bless { some => 'data', ... }, $classname;
● コンストラクタ(newとか)はこれをreturnする関数
● 継承を使うと、親クラスにある機能は全部使える
● 親を複数指定してもOK(キメラのように)
● クラスにないメソッドは呼べません
● Mixinを使うと、あとからメソッドを追加できます
Exporterでmixinクラスを作る
–
– Mouse と Mouse::Roleを使って対応する
● クラスの最後は真を置くべし!
● 1; とか、 'Happy hacking! ('; とか。
– 普通はだいたい”1;”
- 19.