January 18, 2004

Class::HPLOO とか Perl6::Classes とか。

[ Perl ]
This is the implemantation of OO-Classes for HPL. This bring a easy way to create PM classes, but with HPL resources/style.

search.cpan.org recent より。Class::HPLOO はJava風にPerlのクラスを定義するシンタックスを提供するクラス。

#!/usr/local/bin/perl
use strict;
use warnings;
use Class::HPLOO;
 
class Animal {
    # constructor
    sub Animal {
        $this->{name} = $_[0]; # instance field
        printf("create animal instance (%s)\n", $this->{name});
    }
 
    # abstract method
    sub bark { die }
}
 
# inherit Animal (not well worked)
class Dog extends Animal {
    sub bark {
	printf("%s: baw wow\n", $this->{name});
    }
}
 
package main;
 
my $doc = new Dog("Pochi");
$doc->bark;

こんな感じで Perl OO が可能になります。(試した感じ、extends Animal でうまく継承できてないみたいだけど)

Perl の OO シンタックスを提供する CPAN モジュールは色々あります。例えば、Error は例外処理を (evalブロックで記述せずに) Java のような try/catch/finally 形式で記述することを可能とします。例外をオブジェクトとして扱うことができるようにもなります。Class::HPLOO と組み合わせるとより Java 風に。嬉しいかどうかは別として。(笑)

あと、こんなのもありました。

Perl6::Classes allows the creation of (somewhat) Perl 6-style classes in Perl 5.

Perl5 に Perl6 スタイルのシンタックスを提供するモジュールだそうな。

この手の話題には以前にも 'Perl OOP におけるクラスの実装方法' でも触れましたけど、ほんと色々あります。でも最近は、原典に立ち返って普通にコンストラクタや getter/setter もコーディングしてたりする。

Posted by naoya at January 18, 2004 06:35 PM | トラックバック (0)  b_entry.gif
トラックバック [0件]
TrackBack URL: http://mt.bloghackers.net/mt/suck-tbspams.cgi/816
コメント [0件]