PerlさんPerlくん
[perl][class]クラス作成
最終更新:
atwikimyj
-
view
1.クラスは、パッケージ化されたモジュールの一種である。
2.パッケージ名がクラス名となる。
3.パッケージ内ではnewという名前のsubが必須である
2.パッケージ名がクラス名となる。
3.パッケージ内ではnewという名前のsubが必須である
コンストラクタの作成 コンストラクタは、新しいオブジェクトを作成し、
そのリファレンスを返すメソッドです。クラス作成の順番は次のようになります。
そのリファレンスを返すメソッドです。クラス作成の順番は次のようになります。
- newという名前でメソッドを定義する
- 第1引数のクラス名を受け取る
- bless関数でオブジェクトのリファレンスを返す
具体的には下記のようになります。
sub new{
# 暗黙のうちに引き渡されるクラス名を受け取る
my $class = shift;
# 暗黙のうちに引き渡されるクラス名を受け取る
my $class = shift;
# 無名ハッシュのリファレンスを作成
my $self = {};
# bless したオブジェクトリファレンスを返す
return bless $self, $class;
}
my $self = {};
# bless したオブジェクトリファレンスを返す
return bless $self, $class;
}
blessした変数はクラスのオブジェクトに属することになるので、
普通の変数と区別するためにインスタンスと呼ばれます。ここでは単純に、
「blessの第1引数として指定した変数がインスタンス」とおぼえておいてください。
普通の変数と区別するためにインスタンスと呼ばれます。ここでは単純に、
「blessの第1引数として指定した変数がインスタンス」とおぼえておいてください。
コンストラクタ・・・newメソッドでつくられたもの。クラスの名前を受け取る
インスタンス・・・blessの第一引数で指定された変数。
bless インスタンス(new内で定義された変数のリファレンス),$class名(省略可能)
。
4.パッケージ内のsubがメソッドとなる。
ここで注意したいのは、このsubで普通に戻り値を渡せること。あまりよくないの
だろうけど、、。
もちろんインスタンスの中の変数をいじるのが普通でおすすめ。
インスタンス・・・blessの第一引数で指定された変数。
bless インスタンス(new内で定義された変数のリファレンス),$class名(省略可能)
。
4.パッケージ内のsubがメソッドとなる。
ここで注意したいのは、このsubで普通に戻り値を渡せること。あまりよくないの
だろうけど、、。
もちろんインスタンスの中の変数をいじるのが普通でおすすめ。
5.クラスを使う。
[1]newで新しいオブジェクトを作成する。
[2]オブジェクトから、subを呼び出す。
以上。
[1]newで新しいオブジェクトを作成する。
[2]オブジェクトから、subを呼び出す。
以上。