SlideShare une entreprise Scribd logo
1  sur  12
Télécharger pour lire hors ligne
大ざっぱにオブジェクト指向

Perl Beginners #1 Lightning Talk
          @ytnobody
オブジェクト指向プログラミング(OOP)
       って何?
そもそもオブジェクトとは何か
➢   データを持っている。
    ●
        年齢とか名前とか性別とか。。。
➢   メソッドを持っている。
    ●   メソッドというのは、オブジェクトが持っているデータを活用し
        た関数の事
➢
    何らかのクラスに属している
    ●
        上記のメソッドは、このクラスに属することで初めて提供され
        る。
クラスって何なのか
➢   基本的に金型みたいなものです。
➢   データを収める受け口がある。
➢   メソッドの実装がある。
➢
    クラス名がある。
    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;
クラスとオブジェクトの関係って?
➢   クラスにデータを渡して「インスタンス化」してやると、オ
    ブジェクトが出てくる。(ちょうど金型でクッキーの型抜きをしたかのように。)
    use Animal; #Animalクラスを使うことを明示。

    # Animalクラスをインスタンス化。
    my $a = Animal->new(
      name => 'Hamutaro',
         voice => 'Heke!',
    );


    #howlメソッドを実行させる
    $a->howl; # Hamutaro was howl as “Heke!”.
OOP、何がうれしいのか
➢   よく使いそうなクラスをまとめておくことで、それらを再
    利用することができる
➢   結果的に手早い実装が出来るようになっていく
➢   クラスに処理がまとめられているので、割とデバッグし
    やすい
OOPを手軽にしてくれる
 CPANモジュールたち
Class::Accessor::Fast
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;                                           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;
Module::Setup
➢   クラスの雛形(CPAN形式)を作ってくれる
[ytnobody@ytnobody work]$ module-setup Oreore
Creating directory Oreore
Creating Oreore/Makefile.PL
Creating 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 README
drwxrwxr-x 2 ytnobody ytnobody 4096 2月 21 22:27 lib
drwxrwxr-x 2 ytnobody ytnobody 4096 2月 21 22:27 t
drwxrwxr-x 2 ytnobody ytnobody 4096 2月 21 22:27 xt
ほかにもたくさんあるけど
     割愛
まとめ
➢   OOPは実はそこまで難しくない
➢   OOPはお得
    ●
        再利用できるとか
    ●   デバッグしやすいとか
➢   CPANに登録されてるモジュールを使うと楽できる
    ●   大抵は、OOPで利用することで真価を発揮する。
ご清聴

ありがとうございました

Contenu connexe

Tendances

【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクトYuki Okamoto
 
PHP classの教室
PHP classの教室PHP classの教室
PHP classの教室Yusuke Ando
 
Hachiojipm #5 LT資料 [テーマ:最近いいなと思ったもの]
Hachiojipm #5 LT資料 [テーマ:最近いいなと思ったもの] Hachiojipm #5 LT資料 [テーマ:最近いいなと思ったもの]
Hachiojipm #5 LT資料 [テーマ:最近いいなと思ったもの] norry_gogo
 
Ruby 同好会宣言
Ruby 同好会宣言Ruby 同好会宣言
Ruby 同好会宣言Yuya Takeyama
 
PHP Object Injection入門
PHP Object Injection入門PHP Object Injection入門
PHP Object Injection入門Yu Iwama
 
Img select hint_for_h
Img select hint_for_hImg select hint_for_h
Img select hint_for_hJun Chiba
 
Cakephpstudy5 hacks jp
Cakephpstudy5 hacks jpCakephpstudy5 hacks jp
Cakephpstudy5 hacks jpHiroki Shimizu
 
Railsによるurlの描き方
Railsによるurlの描き方Railsによるurlの描き方
Railsによるurlの描き方Jun Fukaya
 
System select hint_for_h2
System select hint_for_h2System select hint_for_h2
System select hint_for_h2Jun Chiba
 
CakePHPで開発する時に統一しておきたいコーディング内容(080316)
CakePHPで開発する時に統一しておきたいコーディング内容(080316)CakePHPで開発する時に統一しておきたいコーディング内容(080316)
CakePHPで開発する時に統一しておきたいコーディング内容(080316)柴田 篤志
 
2012 keynote-2
2012 keynote-22012 keynote-2
2012 keynote-2kmiyako
 
Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話
Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話
Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話azuma satoshi
 
実用裏方 Perl 入門
実用裏方 Perl 入門実用裏方 Perl 入門
実用裏方 Perl 入門keroyonn
 
Mojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてるMojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてるjamadam
 
WordPress のキャッシュ機構
WordPress のキャッシュ機構WordPress のキャッシュ機構
WordPress のキャッシュ機構katanyan
 
Drupal8 DBに保存して読み込む
Drupal8 DBに保存して読み込むDrupal8 DBに保存して読み込む
Drupal8 DBに保存して読み込むiPride Co., Ltd.
 

Tendances (19)

【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト
 
PHP classの教室
PHP classの教室PHP classの教室
PHP classの教室
 
Hachiojipm #5 LT資料 [テーマ:最近いいなと思ったもの]
Hachiojipm #5 LT資料 [テーマ:最近いいなと思ったもの] Hachiojipm #5 LT資料 [テーマ:最近いいなと思ったもの]
Hachiojipm #5 LT資料 [テーマ:最近いいなと思ったもの]
 
Ruby 同好会宣言
Ruby 同好会宣言Ruby 同好会宣言
Ruby 同好会宣言
 
Currying in perl
Currying in perlCurrying in perl
Currying in perl
 
Yahoo!ボックスAPI Hackday資料
Yahoo!ボックスAPI Hackday資料Yahoo!ボックスAPI Hackday資料
Yahoo!ボックスAPI Hackday資料
 
Yahoo!ボックスAPI Hackathon向け資料
Yahoo!ボックスAPI Hackathon向け資料Yahoo!ボックスAPI Hackathon向け資料
Yahoo!ボックスAPI Hackathon向け資料
 
PHP Object Injection入門
PHP Object Injection入門PHP Object Injection入門
PHP Object Injection入門
 
Img select hint_for_h
Img select hint_for_hImg select hint_for_h
Img select hint_for_h
 
Cakephpstudy5 hacks jp
Cakephpstudy5 hacks jpCakephpstudy5 hacks jp
Cakephpstudy5 hacks jp
 
Railsによるurlの描き方
Railsによるurlの描き方Railsによるurlの描き方
Railsによるurlの描き方
 
System select hint_for_h2
System select hint_for_h2System select hint_for_h2
System select hint_for_h2
 
CakePHPで開発する時に統一しておきたいコーディング内容(080316)
CakePHPで開発する時に統一しておきたいコーディング内容(080316)CakePHPで開発する時に統一しておきたいコーディング内容(080316)
CakePHPで開発する時に統一しておきたいコーディング内容(080316)
 
2012 keynote-2
2012 keynote-22012 keynote-2
2012 keynote-2
 
Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話
Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話
Perl暦およそ10年(?)の僕がデータベースを使えるようになるまでの昔話
 
実用裏方 Perl 入門
実用裏方 Perl 入門実用裏方 Perl 入門
実用裏方 Perl 入門
 
Mojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてるMojoliciousをウェブ制作現場で使ってみてる
Mojoliciousをウェブ制作現場で使ってみてる
 
WordPress のキャッシュ機構
WordPress のキャッシュ機構WordPress のキャッシュ機構
WordPress のキャッシュ機構
 
Drupal8 DBに保存して読み込む
Drupal8 DBに保存して読み込むDrupal8 DBに保存して読み込む
Drupal8 DBに保存して読み込む
 

En vedette

Innovación educativa con recursos abiertos
Innovación educativa con recursos abiertosInnovación educativa con recursos abiertos
Innovación educativa con recursos abiertosColegio San Ignacio
 
Lectio Divina Dom. XXIII T.O. Ciclo ‘C’. Lc. 14,25-33
Lectio Divina Dom.  XXIII  T.O.  Ciclo ‘C’.   Lc. 14,25-33Lectio Divina Dom.  XXIII  T.O.  Ciclo ‘C’.   Lc. 14,25-33
Lectio Divina Dom. XXIII T.O. Ciclo ‘C’. Lc. 14,25-33Maike Loes
 
Information Technology and people's science organisation
Information Technology and people's science organisationInformation Technology and people's science organisation
Information Technology and people's science organisationVijayakumar Blathur
 
ライブコーディング(?)で学ぶPerlオブジェクト指向
ライブコーディング(?)で学ぶPerlオブジェクト指向ライブコーディング(?)で学ぶPerlオブジェクト指向
ライブコーディング(?)で学ぶPerlオブジェクト指向azuma satoshi
 
Самостоятельное счастье!
Самостоятельное счастье!Самостоятельное счастье!
Самостоятельное счастье!Nataly Bogdanova
 
Giornata Missionaria Mondiale 2013
Giornata Missionaria Mondiale 2013Giornata Missionaria Mondiale 2013
Giornata Missionaria Mondiale 2013Maike Loes
 
Strumento di lavoro
Strumento di lavoroStrumento di lavoro
Strumento di lavoroMaike Loes
 
Anastasi Lecture 2008
Anastasi Lecture 2008Anastasi Lecture 2008
Anastasi Lecture 2008behnke3791
 
Giornata Mondiale del Migrante e del Rifugiato
Giornata Mondiale del Migrante e del RifugiatoGiornata Mondiale del Migrante e del Rifugiato
Giornata Mondiale del Migrante e del RifugiatoMaike Loes
 
Faculty presentation
Faculty presentationFaculty presentation
Faculty presentationstoliros
 
Thao Hoang's Portfolio
Thao Hoang's PortfolioThao Hoang's Portfolio
Thao Hoang's Portfoliosgcha
 

En vedette (20)

Woof, woof – meow!
Woof, woof – meow!Woof, woof – meow!
Woof, woof – meow!
 
Triángulos
TriángulosTriángulos
Triángulos
 
Innovación educativa con recursos abiertos
Innovación educativa con recursos abiertosInnovación educativa con recursos abiertos
Innovación educativa con recursos abiertos
 
Lectio Divina Dom. XXIII T.O. Ciclo ‘C’. Lc. 14,25-33
Lectio Divina Dom.  XXIII  T.O.  Ciclo ‘C’.   Lc. 14,25-33Lectio Divina Dom.  XXIII  T.O.  Ciclo ‘C’.   Lc. 14,25-33
Lectio Divina Dom. XXIII T.O. Ciclo ‘C’. Lc. 14,25-33
 
Information Technology and people's science organisation
Information Technology and people's science organisationInformation Technology and people's science organisation
Information Technology and people's science organisation
 
Crofton house
Crofton houseCrofton house
Crofton house
 
ライブコーディング(?)で学ぶPerlオブジェクト指向
ライブコーディング(?)で学ぶPerlオブジェクト指向ライブコーディング(?)で学ぶPerlオブジェクト指向
ライブコーディング(?)で学ぶPerlオブジェクト指向
 
sab 1
sab 1sab 1
sab 1
 
Самостоятельное счастье!
Самостоятельное счастье!Самостоятельное счастье!
Самостоятельное счастье!
 
Giornata Missionaria Mondiale 2013
Giornata Missionaria Mondiale 2013Giornata Missionaria Mondiale 2013
Giornata Missionaria Mondiale 2013
 
tie-dyeing
tie-dyeingtie-dyeing
tie-dyeing
 
Strumento di lavoro
Strumento di lavoroStrumento di lavoro
Strumento di lavoro
 
In diretta
In direttaIn diretta
In diretta
 
Apple on fire
Apple on fireApple on fire
Apple on fire
 
Presentation1
Presentation1Presentation1
Presentation1
 
Anastasi Lecture 2008
Anastasi Lecture 2008Anastasi Lecture 2008
Anastasi Lecture 2008
 
Giornata Mondiale del Migrante e del Rifugiato
Giornata Mondiale del Migrante e del RifugiatoGiornata Mondiale del Migrante e del Rifugiato
Giornata Mondiale del Migrante e del Rifugiato
 
Faculty presentation
Faculty presentationFaculty presentation
Faculty presentation
 
UX Riga meetup personas
UX Riga meetup personasUX Riga meetup personas
UX Riga meetup personas
 
Thao Hoang's Portfolio
Thao Hoang's PortfolioThao Hoang's Portfolio
Thao Hoang's Portfolio
 

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

【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクトアシアル株式会社
 
EucalyptusのHadoopクラスタとJaqlでBasket解析をしてHiveとの違いを味わってみました
EucalyptusのHadoopクラスタとJaqlでBasket解析をしてHiveとの違いを味わってみましたEucalyptusのHadoopクラスタとJaqlでBasket解析をしてHiveとの違いを味わってみました
EucalyptusのHadoopクラスタとJaqlでBasket解析をしてHiveとの違いを味わってみましたEtsuji Nakai
 
GMO TECHNOLOGY BOOT CAMP2015(PHP編)
GMO TECHNOLOGY BOOT CAMP2015(PHP編)GMO TECHNOLOGY BOOT CAMP2015(PHP編)
GMO TECHNOLOGY BOOT CAMP2015(PHP編)Arata Fujimura
 
Doctrineではじめるsymfony1.2開発
Doctrineではじめるsymfony1.2開発Doctrineではじめるsymfony1.2開発
Doctrineではじめるsymfony1.2開発Katsuhiro Ogawa
 
モダンmod_perl入門 #yapcasia
モダンmod_perl入門 #yapcasiaモダンmod_perl入門 #yapcasia
モダンmod_perl入門 #yapcasia鉄次 尾形
 
Mavenへのはじめの一歩
Mavenへのはじめの一歩Mavenへのはじめの一歩
Mavenへのはじめの一歩祐理 大野
 
Zend Db Table拡張説明資料
Zend Db Table拡張説明資料Zend Db Table拡張説明資料
Zend Db Table拡張説明資料co-hey japan
 
10分でわかるFuelPHP @ 2011/12
10分でわかるFuelPHP @ 2011/1210分でわかるFuelPHP @ 2011/12
10分でわかるFuelPHP @ 2011/12kenjis
 
分散ストリーム処理フレームワーク Apache S4
分散ストリーム処理フレームワーク Apache S4分散ストリーム処理フレームワーク Apache S4
分散ストリーム処理フレームワーク Apache S4AdvancedTechNight
 
Perl 非同期プログラミング
Perl 非同期プログラミングPerl 非同期プログラミング
Perl 非同期プログラミングlestrrat
 

Similaire à 大ざっぱにオブジェクト指向 (12)

【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト
【アシアル塾】PHPオブジェクト指向再入門・第一回クラスとオブジェクト
 
EucalyptusのHadoopクラスタとJaqlでBasket解析をしてHiveとの違いを味わってみました
EucalyptusのHadoopクラスタとJaqlでBasket解析をしてHiveとの違いを味わってみましたEucalyptusのHadoopクラスタとJaqlでBasket解析をしてHiveとの違いを味わってみました
EucalyptusのHadoopクラスタとJaqlでBasket解析をしてHiveとの違いを味わってみました
 
GMO TECHNOLOGY BOOT CAMP2015(PHP編)
GMO TECHNOLOGY BOOT CAMP2015(PHP編)GMO TECHNOLOGY BOOT CAMP2015(PHP編)
GMO TECHNOLOGY BOOT CAMP2015(PHP編)
 
Doctrineではじめるsymfony1.2開発
Doctrineではじめるsymfony1.2開発Doctrineではじめるsymfony1.2開発
Doctrineではじめるsymfony1.2開発
 
モダンmod_perl入門 #yapcasia
モダンmod_perl入門 #yapcasiaモダンmod_perl入門 #yapcasia
モダンmod_perl入門 #yapcasia
 
Mavenへのはじめの一歩
Mavenへのはじめの一歩Mavenへのはじめの一歩
Mavenへのはじめの一歩
 
Zend Db Table拡張説明資料
Zend Db Table拡張説明資料Zend Db Table拡張説明資料
Zend Db Table拡張説明資料
 
swooleを試してみた
swooleを試してみたswooleを試してみた
swooleを試してみた
 
10分でわかるFuelPHP @ 2011/12
10分でわかるFuelPHP @ 2011/1210分でわかるFuelPHP @ 2011/12
10分でわかるFuelPHP @ 2011/12
 
分散ストリーム処理フレームワーク Apache S4
分散ストリーム処理フレームワーク Apache S4分散ストリーム処理フレームワーク Apache S4
分散ストリーム処理フレームワーク Apache S4
 
Perl勉強会#2資料
Perl勉強会#2資料Perl勉強会#2資料
Perl勉強会#2資料
 
Perl 非同期プログラミング
Perl 非同期プログラミングPerl 非同期プログラミング
Perl 非同期プログラミング
 

Plus de azuma satoshi

finally (not finally)
finally (not finally)finally (not finally)
finally (not finally)azuma satoshi
 
時を駆けるINSERT.pptx
時を駆けるINSERT.pptx時を駆けるINSERT.pptx
時を駆けるINSERT.pptxazuma satoshi
 
できる!サーバレスアーキテクチャ
できる!サーバレスアーキテクチャできる!サーバレスアーキテクチャ
できる!サーバレスアーキテクチャazuma satoshi
 
印刷に耐えられる品質のQRCodeをPerlで生成したよ! - Mishima.pm #1
印刷に耐えられる品質のQRCodeをPerlで生成したよ! - Mishima.pm #1印刷に耐えられる品質のQRCodeをPerlで生成したよ! - Mishima.pm #1
印刷に耐えられる品質のQRCodeをPerlで生成したよ! - Mishima.pm #1azuma satoshi
 
Perlbeginnes 9 lt_ytnobody
Perlbeginnes 9 lt_ytnobodyPerlbeginnes 9 lt_ytnobody
Perlbeginnes 9 lt_ytnobodyazuma satoshi
 
Perlbeginnes 9 opening
Perlbeginnes 9 openingPerlbeginnes 9 opening
Perlbeginnes 9 openingazuma satoshi
 
Perlbeginners proposal
Perlbeginners proposalPerlbeginners proposal
Perlbeginners proposalazuma satoshi
 
入れ子構造を分解する
入れ子構造を分解する入れ子構造を分解する
入れ子構造を分解するazuma satoshi
 
YAPC::Asia 2012 CPANに恩返ししよう
YAPC::Asia 2012 CPANに恩返ししようYAPC::Asia 2012 CPANに恩返ししよう
YAPC::Asia 2012 CPANに恩返ししようazuma satoshi
 
Perlbeginnes 4 keynote
Perlbeginnes 4 keynotePerlbeginnes 4 keynote
Perlbeginnes 4 keynoteazuma satoshi
 
Perlbeginners 3 opening talk
Perlbeginners 3 opening talkPerlbeginners 3 opening talk
Perlbeginners 3 opening talkazuma satoshi
 
Perlbeginnes 2 keynote
Perlbeginnes 2 keynotePerlbeginnes 2 keynote
Perlbeginnes 2 keynoteazuma satoshi
 
Perl Beginners #1 keynote
Perl Beginners #1 keynotePerl Beginners #1 keynote
Perl Beginners #1 keynoteazuma satoshi
 
Alluren of prototype-based OOP
Alluren of prototype-based OOPAlluren of prototype-based OOP
Alluren of prototype-based OOPazuma satoshi
 

Plus de azuma satoshi (19)

finally (not finally)
finally (not finally)finally (not finally)
finally (not finally)
 
時を駆けるINSERT.pptx
時を駆けるINSERT.pptx時を駆けるINSERT.pptx
時を駆けるINSERT.pptx
 
できる!サーバレスアーキテクチャ
できる!サーバレスアーキテクチャできる!サーバレスアーキテクチャ
できる!サーバレスアーキテクチャ
 
印刷に耐えられる品質のQRCodeをPerlで生成したよ! - Mishima.pm #1
印刷に耐えられる品質のQRCodeをPerlで生成したよ! - Mishima.pm #1印刷に耐えられる品質のQRCodeをPerlで生成したよ! - Mishima.pm #1
印刷に耐えられる品質のQRCodeをPerlで生成したよ! - Mishima.pm #1
 
L tthon
L tthonL tthon
L tthon
 
Perlbeginnes 9 lt_ytnobody
Perlbeginnes 9 lt_ytnobodyPerlbeginnes 9 lt_ytnobody
Perlbeginnes 9 lt_ytnobody
 
Perlbeginnes 9 opening
Perlbeginnes 9 openingPerlbeginnes 9 opening
Perlbeginnes 9 opening
 
Perlbeginners proposal
Perlbeginners proposalPerlbeginners proposal
Perlbeginners proposal
 
Chibapm01 lt
Chibapm01 ltChibapm01 lt
Chibapm01 lt
 
入れ子構造を分解する
入れ子構造を分解する入れ子構造を分解する
入れ子構造を分解する
 
YAPC::Asia 2012 CPANに恩返ししよう
YAPC::Asia 2012 CPANに恩返ししようYAPC::Asia 2012 CPANに恩返ししよう
YAPC::Asia 2012 CPANに恩返ししよう
 
Perlbeginnes 4 keynote
Perlbeginnes 4 keynotePerlbeginnes 4 keynote
Perlbeginnes 4 keynote
 
Perlbeginners 3 opening talk
Perlbeginners 3 opening talkPerlbeginners 3 opening talk
Perlbeginners 3 opening talk
 
PSGIへの誘い
PSGIへの誘いPSGIへの誘い
PSGIへの誘い
 
Perlbeginnes 2 keynote
Perlbeginnes 2 keynotePerlbeginnes 2 keynote
Perlbeginnes 2 keynote
 
Hachiojipm 14 LT
Hachiojipm 14 LTHachiojipm 14 LT
Hachiojipm 14 LT
 
Perl Beginners #1 keynote
Perl Beginners #1 keynotePerl Beginners #1 keynote
Perl Beginners #1 keynote
 
Hachioji.pm #13 LT
Hachioji.pm #13 LTHachioji.pm #13 LT
Hachioji.pm #13 LT
 
Alluren of prototype-based OOP
Alluren of prototype-based OOPAlluren of prototype-based OOP
Alluren of prototype-based OOP
 

Dernier

論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 

Dernier (9)

論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 

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

  • 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、何がうれしいのか ➢ よく使いそうなクラスをまとめておくことで、それらを再 利用することができる ➢ 結果的に手早い実装が出来るようになっていく ➢ クラスに処理がまとめられているので、割とデバッグし やすい
  • 8. Class::Accessor::Fast 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; 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 Oreore Creating directory Oreore Creating Oreore/Makefile.PL Creating 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 README drwxrwxr-x 2 ytnobody ytnobody 4096 2月 21 22:27 lib drwxrwxr-x 2 ytnobody ytnobody 4096 2月 21 22:27 t drwxrwxr-x 2 ytnobody ytnobody 4096 2月 21 22:27 xt
  • 11. まとめ ➢ OOPは実はそこまで難しくない ➢ OOPはお得 ● 再利用できるとか ● デバッグしやすいとか ➢ CPANに登録されてるモジュールを使うと楽できる ● 大抵は、OOPで利用することで真価を発揮する。