[prog] perl interfaces
Caroline Johnston
johnston at biochemistry.ucl.ac.uk
Thu Apr 15 12:28:03 EST 2004
Many thanks,
Have just been looking at Class::Contract and it does appear to do what I
want. Will give it a go.
Cxx.
On Thu, 15 Apr 2004, Jacinta Richardson wrote:
>
> On Thu, 15 Apr 2004, Caroline Johnston wrote:
>
> > compile your code? I know it probably goes against the spirit of perl, but
> > I really want to force people to implement ALL of the methods in the
> > interface.
>
> You could offer a test function. Something like this:
>
> package Foo;
>
> sub testall {
> my $this = shift;
>
> foreach my $funct (qw/virtualfunction1 virtualfunction2
> virtualfunction3) {
> eval {
> $this->$funct();
> };
>
> if($@) {
> print "$funct doesn't appear to be implemented in ".
> ref($self) . "\n";
> }
> }
> }
>
> sub virtualfunction1 {
> croak "Abstract function called.";
> }
>
> Then programmers can easily test that they've done everything at their
> will. Mind you I think Class::Contract or Class::Virtually::Abstract
> probably do this kind of thing better than I can run up in a moment's
> thought.
>
> This doesn't work if the implementation for a subroutine is something like:
>
> sub virtualfunction2 {
> die "Missing all my arguments" unless @_;
> }
>
> > I guess I could cobble together something that would check
> > this, but the whole point of the exercise is to make the code easy to
> > understand and easy to add to, so if there's some standard way of doing
> > it, I'd rather use that.
>
> Try the above mentioned modules.
>
> > PS Is the Damian Conway book useful? Any other OOperl book
> > reccommendations?
>
> Damian's book is the best we've got.
>
> Jacinta
>
> --
> ("`-''-/").___..--''"`-._ | Jacinta Richardson |
> `6_ 6 ) `-. ( ).`-.__.`) | Perl Training Australia |
> (_Y_.)' ._ ) `._ `. ``-..-' | +613 9354 6001 |
> _..`--'_..-_/ /--'_.' ,' | contact at perltraining.com.au |
> (il),-'' (li),' ((!.-' | www.perltraining.com.au |
>
> _______________________________________________
> Programming mailing list
> Programming at linuxchix.org
> http://mailman.linuxchix.org/mailman/listinfo/programming
>
More information about the Programming
mailing list