NAME

MooseX::ABC - abstract base classes for Moose

VERSION

version 0.03

SYNOPSIS

package Shape;
our $VERSION = '0.03';


use Moose;
use MooseX::ABC;

requires 'draw';

package Circle;
our $VERSION = '0.03';


use Moose;
extends 'Shape';

sub draw {
    # stuff
}

my $shape = Shape->new; # dies
my $circle = Circle->new; # succeeds

package Square;
our $VERSION = '0.03';


use Moose;
extends 'Shape'; # dies, since draw is unimplemented

DESCRIPTION

This module adds basic abstract base class functionality to Moose. Doing use MooseX::ABC turns the using class into an abstract class - it cannot be instantiated. It also allows you to mark certain methods in the class as "required", meaning that if a class inherits from this class without implementing that method, it will die at compile time. Abstract subclasses are exempt from this, however - if you extend a class with another class which uses MooseX::ABC, it will not be required to implement every required method (and it can also add more required methods of its own). Only concrete classes (classes which do not use MooseX::ABC) are required to implement all of their ancestors' required methods.

EXPORTS

requires METHOD_NAMES

Takes a list of methods that classes inheriting from this one must implement. If a class inherits from this class without implementing each method listed here, an error will be thrown when compiling the class.

BUGS

No known bugs.

Please report any bugs through RT: email bug-moosex-abc at rt.cpan.org, or browse to http://rt.cpan.org/NoAuth/ReportBug.html?Queue=MooseX-ABC.

SEE ALSO

Moose, Moose::Role

SUPPORT

You can find this documentation for this module with the perldoc command.

perldoc MooseX::ABC

You can also look for information at:

AUTHOR

Jesse Luehrs <doy at tozt dot net>

COPYRIGHT AND LICENSE

This software is copyright (c) 2009 by Jesse Luehrs.

This is free software; you can redistribute it and/or modify it under the same terms as perl itself.