Mais conteúdo relacionado
Semelhante a 大ざっぱにオブジェクト指向 (12)
Mais de azuma satoshi (19)
大ざっぱにオブジェクト指向
- 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で利用することで真価を発揮する。