大ざっぱにオブジェクト指向Perl Beginners #1 Lightning Talk          @ytnobody
オブジェクト指向プログラミング(OOP)       って何?
そもそもオブジェクトとは何か➢   データを持っている。    ●        年齢とか名前とか性別とか。。。➢   メソッドを持っている。    ●   メソッドというのは、オブジェクトが持っているデータを活用し        た関数の事➢...
クラスって何なのか➢   基本的に金型みたいなものです。➢   データを収める受け口がある。➢   メソッドの実装がある。➢    クラス名がある。    package Animal; #クラス名はAnimal。    sub new {  ...
クラスとオブジェクトの関係って?➢   クラスにデータを渡して「インスタンス化」してやると、オ    ブジェクトが出てくる。(ちょうど金型でクッキーの型抜きをしたかのように。)    use Animal; #Animalクラスを使うことを明示...
OOP、何がうれしいのか➢   よく使いそうなクラスをまとめておくことで、それらを再    利用することができる➢   結果的に手早い実装が出来るようになっていく➢   クラスに処理がまとめられているので、割とデバッグし    やすい
OOPを手軽にしてくれる CPANモジュールたち
Class::Accessor::Fastpackage Animal; #クラス名はAnimal。sub new {  my ( $class, %args ) = @_;  return bless { %args }, $class;}s...
Module::Setup➢   クラスの雛形(CPAN形式)を作ってくれる[ytnobody@ytnobody work]$ module-setup OreoreCreating directory OreoreCreating Oreor...
ほかにもたくさんあるけど     割愛
まとめ➢   OOPは実はそこまで難しくない➢   OOPはお得    ●        再利用できるとか    ●   デバッグしやすいとか➢   CPANに登録されてるモジュールを使うと楽できる    ●   大抵は、OOPで利用することで...
ご清聴ありがとうございました
Upcoming SlideShare
Loading in …5
×

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

1,846 views

Published on

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

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,846
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
11
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

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

  1. 1. 大ざっぱにオブジェクト指向Perl Beginners #1 Lightning Talk @ytnobody
  2. 2. オブジェクト指向プログラミング(OOP) って何?
  3. 3. そもそもオブジェクトとは何か➢ データを持っている。 ● 年齢とか名前とか性別とか。。。➢ メソッドを持っている。 ● メソッドというのは、オブジェクトが持っているデータを活用し た関数の事➢ 何らかのクラスに属している ● 上記のメソッドは、このクラスに属することで初めて提供され る。
  4. 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. 5. クラスとオブジェクトの関係って?➢ クラスにデータを渡して「インスタンス化」してやると、オ ブジェクトが出てくる。(ちょうど金型でクッキーの型抜きをしたかのように。) use Animal; #Animalクラスを使うことを明示。 # Animalクラスをインスタンス化。 my $a = Animal->new( name => Hamutaro, voice => Heke!, ); #howlメソッドを実行させる $a->howl; # Hamutaro was howl as “Heke!”.
  6. 6. OOP、何がうれしいのか➢ よく使いそうなクラスをまとめておくことで、それらを再 利用することができる➢ 結果的に手早い実装が出来るようになっていく➢ クラスに処理がまとめられているので、割とデバッグし やすい
  7. 7. OOPを手軽にしてくれる CPANモジュールたち
  8. 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. 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. 10. ほかにもたくさんあるけど 割愛
  11. 11. まとめ➢ OOPは実はそこまで難しくない➢ OOPはお得 ● 再利用できるとか ● デバッグしやすいとか➢ CPANに登録されてるモジュールを使うと楽できる ● 大抵は、OOPで利用することで真価を発揮する。
  12. 12. ご清聴ありがとうございました

×