Your SlideShare is downloading. ×
  • Like
大ざっぱにオブジェクト指向
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

大ざっぱにオブジェクト指向

  • 1,406 views
Published

Perlのオブジェクト指向について、すごく大ざっぱに解説していくよ!

Perlのオブジェクト指向について、すごく大ざっぱに解説していくよ!

Published in Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
1,406
On SlideShare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
9
Comments
0
Likes
3

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. 大ざっぱにオブジェクト指向Perl Beginners #1 Lightning Talk @ytnobody
  • 2. オブジェクト指向プログラミング(OOP) って何?
  • 3. そもそもオブジェクトとは何か➢ データを持っている。 ● 年齢とか名前とか性別とか。。。➢ メソッドを持っている。 ● メソッドというのは、オブジェクトが持っているデータを活用し た関数の事➢ 何らかのクラスに属している ● 上記のメソッドは、このクラスに属することで初めて提供され る。
  • 4. クラスって何なのか➢ 基本的に金型みたいなものです。➢ データを収める受け口がある。➢ メソッドの実装がある。➢ クラス名がある。 package Animal; #クラス名はAnimal。 sub new { my ( $class, %args ) = @_; return bless { %args }, $class; } sub howl { my ( $self ) = @_; printf %s was howl as “%s”., $self->{name}, $self->{voice}; } 1;
  • 5. クラスとオブジェクトの関係って?➢ クラスにデータを渡して「インスタンス化」してやると、オ ブジェクトが出てくる。(ちょうど金型でクッキーの型抜きをしたかのように。) use Animal; #Animalクラスを使うことを明示。 # Animalクラスをインスタンス化。 my $a = Animal->new( name => Hamutaro, voice => Heke!, ); #howlメソッドを実行させる $a->howl; # Hamutaro was howl as “Heke!”.
  • 6. OOP、何がうれしいのか➢ よく使いそうなクラスをまとめておくことで、それらを再 利用することができる➢ 結果的に手早い実装が出来るようになっていく➢ クラスに処理がまとめられているので、割とデバッグし やすい
  • 7. OOPを手軽にしてくれる CPANモジュールたち
  • 8. Class::Accessor::Fastpackage Animal; #クラス名はAnimal。sub new { my ( $class, %args ) = @_; return bless { %args }, $class;}sub howl { my ( $self ) = @_; printf %s was howl as “%s”., $self->{name}, $self->{voice};}1; package Animal; use parent “Class::Accessor::Fast”; __PACKAGE__->mk_accessors( name, voice ); sub howl { これがこうなる my ( $self ) = @_; printf %s was howl as “%s”., $self->name, $self->voice; } 1;
  • 9. Module::Setup➢ クラスの雛形(CPAN形式)を作ってくれる[ytnobody@ytnobody work]$ module-setup OreoreCreating directory OreoreCreating Oreore/Makefile.PLCreating Oreore/MANIFEST.SKIP### 中略 ###[ytnobody@ytnobody work]$ cd Oreore/[ytnobody@ytnobody Oreore]$ ls -l合計 32-rw-rw-r-- 1 ytnobody ytnobody 104 2月 21 22:27 Changes-rw-rw-r-- 1 ytnobody ytnobody 531 2月 21 22:27 MANIFEST-rw-rw-r-- 1 ytnobody ytnobody 200 2月 21 22:27 MANIFEST.SKIP-rw-rw-r-- 1 ytnobody ytnobody 192 2月 21 22:27 Makefile.PL-rw-rw-r-- 1 ytnobody ytnobody 473 2月 21 22:27 READMEdrwxrwxr-x 2 ytnobody ytnobody 4096 2月 21 22:27 libdrwxrwxr-x 2 ytnobody ytnobody 4096 2月 21 22:27 tdrwxrwxr-x 2 ytnobody ytnobody 4096 2月 21 22:27 xt
  • 10. ほかにもたくさんあるけど 割愛
  • 11. まとめ➢ OOPは実はそこまで難しくない➢ OOPはお得 ● 再利用できるとか ● デバッグしやすいとか➢ CPANに登録されてるモジュールを使うと楽できる ● 大抵は、OOPで利用することで真価を発揮する。
  • 12. ご清聴ありがとうございました