Top / Perl / オブジェクト指向

あまり詳しくないのですが、Perlでもオブジェクト指向的なコーディングができます。それの覚え書きです(2004/08/09現在、勉強初日っ)。

クラスの書き方

どうもPerlの言語仕様をライブラリで拡張して、オブジェクト指向対応にしました、的な感触を受けたのですが(私がよく理解してないだけでしょうね)、こんな書き方をするみたいです。

package Class1; # クラス名

sub new { #コンストラクタ
	$pkg    = shift; #クラス名がはいる
	return bless {}, $pkg; #<-Class1インスタンスへの参照を返す、の意味らしい。
}

sub hoge { #メソッド
	return "Hello Perl World.";
}

1; #これは何だろう。。。

これをClass1.pmという名称で保存しておきます。呼出側は、

#!/usr/bin/perl -w

package main;

use Class1;

my $obj = Class1->new;
print $obj->hoge;

とすればインスタンス化、メソッド呼出というクラス的な使い方ができます。

フィールドを宣言とか、フィールドをメソッド内で共有する

Perlではフィールドへのアクセス*1

#Class1クラスの作成
package Class1;

#コンストラクタ
sub new {
	my $class = shift;
	my $self  = {
		X => 10,
		Y => 100
	};    #結局はこのself変数がJavaのthisなので、
	      #この中の変数達がフィールドと考えるのかなぁ?
	return bless $self,
	  $class;    #<-Class1インスタンスへの参照を返す、の意味らしい。
}

#メソッドの宣言
sub hoge {
	my $self = shift;                     #これは自分への参照を取得している
	return "$self->{X} :$self->{Y}\n";    #this.Xとかthis.Yってか?
	                                      #でも""の中なんですけど...
	                                      #追記:Perlってこういうもんなんだって。
}

1;

この記事は

選択肢 投票
おもしろかった 1  
そうでもない 1  

Top / Perl / オブジェクト指向

現在のアクセス:4439


*1 そもそもフィールドかどうかも理解してないけど

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2012-06-02 (土) 15:56:52 (2720d)