diff options
Diffstat (limited to 'lib/Class/MakeMethods/Docs/RelatedModules.pod')
| -rw-r--r-- | lib/Class/MakeMethods/Docs/RelatedModules.pod | 962 |
1 files changed, 0 insertions, 962 deletions
diff --git a/lib/Class/MakeMethods/Docs/RelatedModules.pod b/lib/Class/MakeMethods/Docs/RelatedModules.pod deleted file mode 100644 index 93ef930..0000000 --- a/lib/Class/MakeMethods/Docs/RelatedModules.pod +++ /dev/null @@ -1,962 +0,0 @@ -=head1 NAME - -Class::MakeMethods::Docs::RelatedModules - Survey of Class Builders - - -=head1 SYNOPSIS - - http://search.cpan.org/search?mode=module&query=Class - - -=head1 DESCRIPTION - -There are a variety of modules on CPAN dedicated to the purpose of -generating common constructor and accessor methods. Below, I survey -several of these, summarizing some basic features and technical -approaches, and comparing them to Class::MakeMethods and other -modules. - - -=head2 Caution - -B<Please note that these comments are for basic comparison purposes -only and may be incorrect or out of date.> Please consult the -documentation from a current version of each module for more specific -details. Corrections and clarifications would by welcomed by the author at the email address below. - - -=head2 Points of Comparison - -In general, I compared the following characteristics: - -=over 4 - -=item Distribution - -Is it included with Perl, or on CPAN? Is it being actively maintained? - -=item Usage - -How do you go about declaring your class's methods? - -=item Mechanism - -How are they generated and delivered? - -=item Instance type - -Are the objects of your class blessed hashes, or something else? - -=item Core Methods - -Does the module provide a constructor and basic accessors? Are there specialized methods for hash-ref, array-ref, and object-ref accessors? - -=item Extensible - -Can you subclass the package to create new types of methods, or is there some other way to extend it? - -=item Other Methods - -Other types of methods provided. - -=item Emulator - -Does Class::MakeMethods provide a drop-in replacement for this module? - -=item Comments - -Other characteristics or features of note. - -=back - - -=head1 RELATED MODULES - -=head2 accessors - -=over 4 - -=item Distribution - -CPAN. Uploaded Sep 2003. - -=item Comments - -I have not yet reviewed this module in detail. - -=item Example - - package MyObject; - use accessors qw( foo bar baz ); - -=back - -=head2 Attribute::Property - -=over 4 - -=item Distribution - -CPAN. - -=item Comments - -I have not yet reviewed this module in detail. - -=back - - -=head2 Class::Accessor - -=over 4 - -=item Distribution - -CPAN. Last update 4/01. - -=item Usage - -Inherit and call function with declaration arguments - -=item Mechanism - -Generates and installs closures - -=item Instance Type - -Hash. - -=item Subclasses Cleanly - -Cleanly. - -=item Standard Methods - -Scalar accessors. - -=item Extensible - -Yes. - -=item Comments - -Accessor methods call overwritable C<self-E<lt>get(I<key>)> and -C<self-E<lt>set(I<key>, I<value>)> methods. - -Also includes Class::Accessor::Fast, which creates direct hash keys accessors without calling get and set methods. - -=item Emulator - -Yes, but only for the Fast variation; see Class::MakeMethods::Emulator::AccessorFast. - -=item Example - - package MyObject; - @ISA = qw(Class::Accessor); - MyObject->mk_accessors(qw( simple ordered mapping obj_ref )); - -=back - - -=head2 Class::Class - -=over 4 - -=item Distribution - -CPAN. Last update 1/00. - -=item Usage - -Inherit and fill %MEMBERS hash; methods created when first object is created - -=item Mechanism - -Generates and installs closures - -=item Instance Type - -Hash. - -=item Subclasses Cleanly - -Yes. - -=item Standard Methods - -Constructor and various accessors. - -=item Extensible - -No. - -=item Example - -Usage is similar to Class::Struct: - - package MyObject; - use Class::Class; - @ISA = qw(Class::Class); - %MEMBERS = ( - simple => '$', - ordered => '@', - mapping => '%', - obj_ref => 'FooObject' - ); - -=item Other Method Types - -Provides a polymorph() method that is similar to Class::Method's "ClassName:class_name -require". - -=back - - -=head2 Class::Constructor - -=over 4 - -=item Distribution - -CPAN. Last update 11/01. - -=item Usage - -Inherit and call function with declaration arguments - -=item Mechanism - -Generates and installs closures - -=item Instance Type - -Hash. - -=item Subclasses Cleanly - -Cleanly. - -=item Standard Methods - -Hash constructor, with bells. - -=item Extensible - -No. - -=item Emulator - -No, but possible. - -=item Example - - package MyObject; - @ISA = qw(Class::Constructor); - MyObject->mk_constructor( Name => 'new' ); - -=back - - -=head2 Class::Classgen - -=over 4 - -=item Distribution - -CPAN. Last update 12/00. - -=item Usage - -Pre-processor run against declaration files. - -=item Mechanism - -Assembles and saves code file - -=item Instance Type - -Hash. - -=item Subclasses Cleanly - -Yes. (I think.) - -=item Standard Methods - -Constructor and various accessors. - -=item Extensible - -No. (I think.) - -=item Example - - header: - package MyObject; - variables: - $simple - @ordered - %mapping - $obj_ref - -=back - - -=head2 Class::Contract - -=over 4 - -=item Distribution - -CPAN. Last update 5/01. - -=item Usage - -Call function with declaration arguments - -=item Mechanism - -Generates and installs closures - -=item Instance Type - -Scalar reference with external data storage. - -=item Subclasses Cleanly - -Yes. - -=item Standard Methods - -Constructor and various accessors. - -=item Extensible - -Yes. (I think.) - -=item Comments - -Supports pre- and post-conditions, class invariants, and other -software engineering goodies. - -=item Example - - package MyObject; - use Class::Contract; - contract { - ctor 'new'; - attr 'simple' => SCALAR; - attr 'ordered' => ARRAY; - attr 'mapping' => HASH; - attr 'obj_ref' => 'FooObject'; - } - -=back - - -=head2 Class::Data::Inheritable - -=over 4 - -=item Distribution - -CPAN. Last update 4/00. - -=item Usage - -Inherit and call function with declaration arguments - -=item Mechanism - -Generates and installs closures - -=item Instance Type - -Class data, with inheritance. - -=item Subclasses Cleanly - -Yes, specifically. - -=item Standard Methods - -Scalar accessors. - -=item Extensible - -No. - -=item Example - -Usage is similar to Class::Accessor: - - package MyObject; - @ISA = qw(Class::Data::Inheritable); - MyObject->mk_classdata(qw( simple ordered mapping obj_ref )); - -=item Emulator - -Yes, Class::MakeMethods::Emulator::Inheritable, passes original test suite. - -=back - - -=head2 Class::Delegate - -=over 4 - -=item Distribution - -CPAN. Uploaded 12/0. - -=item Comments - -I have not yet reviewed this module in detail. - -=back - -=head2 Class::Delegation - -=over 4 - -=item Distribution - -CPAN. Uploaded 12/01. - -=item Comments - -I have not yet reviewed this module in detail. - -=back - -=head2 Class::Generate - -=over 4 - -=item Distribution - -CPAN. Last update 11/00. - -=item Usage - -Call function with declaration arguments - -=item Mechanism - -Assembles and evals code string, or saves code file. - -=item Instance Type - -Hash. - -=item Subclasses Cleanly - -Yes. - -=item Standard Methods - -Constructor and accessors (scalar, array, hash, object, object array, etc). - -=item Extensible - -Unknown. - -=item Comments - -Handles private/protected limitations, pre and post conditions, -assertions, and more. - -=item Example - -Usage is similar to Class::Struct: - - package MyObject; - use Class::Generate; - class MyObject => [ - simple => '$', - ordered => '@', - mapping => '%', - obj_ref => 'FooObject' - ]; - -=back - -=head2 Class::Hook - -=item Distribution - -CPAN. Uploaded 12/01. - -=item Comments - -I have not yet reviewed this module in detail. - - -=head2 Class::Holon - -=over 4 - -=item Distribution - -CPAN. Experimental/Alpha release 07/2001. - -=item Instance Type - -Hash, array, or flyweight-index. - -=item Subclasses Cleanly - -No. (I think.) - -=item Standard Methods - -Constructor and scalar accessors; flywieght objects also get scalar mutator methods. - -=item Extensible - -No. (I think.) - -=item Comments - -I'm not sure I understand the intent of this module; perhaps future versions will make this clearer.... - -=back - - -=head2 Class::MethodMaker - -=over 4 - -=item Distribution - -CPAN. Last update 1/01. - -=item Usage - -Import, or call function, with declaration arguments - -=item Mechanism - -Generates and installs closures - -=item Instance Type - -Hash, Static. - -=item Subclasses Cleanly - -Yes. - -=item Standard Methods - -Constructor and various accessors. - -=item Extensible - -Yes. - -=item Example - -Usage is similar to Class::MakeMethods: - - package MyObject; - use Class::MethodMaker ( - new => 'new', - get_set => 'simple', - list => 'ordered', - hash => 'mapping', - object => [ 'FooObject' => 'obj_ref' ], - ); - -=item Emulator - -Yes, Class::MakeMethods::Emulator::MethodMaker, passes original test suite. - -=back - - -=head2 Class::MakeMethods - -=over 4 - -=item Distribution - -CPAN. - -=item Usage - -Import, or call function, with declaration arguments; or if desired, make methods on-demand with Autoload, or declare subroutines with a special Attribute. - -=item Mechanism - -Generates and installs closures - -=item Instance Type - -Hash, Array, Scalar, Static, Class data, others. - -=item Subclasses Cleanly - -Yes. - -=item Standard Methods - -Constructor and various accessors. - -=item Extensible - -Yes. - -=item Example - -Usage is similar to Class::MethodMaker: - - package MyObject; - use Class::MakeMethods::Hash ( - new => 'new', - scalar => 'simple', - array => 'ordered', - hash => 'mapping', - object => [ 'obj_ref', { class=>'FooObject' } ], - ); - -=back - - -=head2 Class::Maker - -=over 4 - -=item Distribution - -CPAN. Last update 7/02. - -=item Usage - -Call function with declaration arguments. - -=item Mechanism - -Generates and installs closures (I think). - -=item Instance Type - -Hash (I think). - -=item Subclasses Cleanly - -Unknown. - -=item Standard Methods - -Constructor and various scalar and reference accessors. - -=item Extensible - -Unknown. - -=item Comments - -I haven't yet reviewed this module closely. - -=back - - -=head2 Class::SelfMethods - -=over 4 - -=item Distribution - -CPAN. Last update 2/00. - -=item Usage - -Inherit; methods created via AUTOLOAD - -=item Mechanism - -Generates and installs closures (I think) - -=item Instance Type - -Hash. - -=item Subclasses Cleanly - -Yes. - -=item Standard Methods - -Constructor and scalar/code accessors (see Comments). - -=item Extensible - -No. - -=item Comments - -Individual objects may be assigned a subroutine that will be called as a method on subsequent accesses. If an instance does not have a value for a given accessor, looks for a method defined with a leading underscore. - -=back - - -=head2 Class::Struct - -=over 4 - -=item Distribution - -Included in the standard Perl distribution. Replaces Class::Template. - -=item Usage - -Call function with declaration arguments - -=item Mechanism - -Assembles and evals code string - -=item Instance Type - -Hash or Array - -=item Subclasses Cleanly - -No. - -=item Standard Methods - -Constructor and various accessors. - -=item Extensible - -No. - - package MyObject; - use Class::Struct; - struct( - simple => '$', - ordered => '@', - mapping => '%', - obj_ref => 'FooObject' - ); - -=item Emulator - -Yes, Class::MakeMethods::Emulator::Struct. - -=back - - -=head2 Class::StructTemplate - -=over 4 - -=item Distribution - -CPAN. Last update 12/00. - -No documentation available. - -=item Usage - -Unknown. - -=item Mechanism - -Unknown. - -=back - - -=head2 Class::Template - -=over 4 - -=item Distribution - -CPAN. Out of date. - -=item Usage - -Call function with declaration arguments (I think) - -=item Mechanism - -Assembles and evals code string (I think) - -=item Instance Type - -Hash. - -=item Subclasses Cleanly - -Yes. (I think.) - -=item Standard Methods - -Constructor and various accessors. - -=item Extensible - -No. (I think.) - -=item Example - -Usage is similar to Class::Struct: - - package MyObject; - use Class::Template; - members MyObject { - simple => '$', - ordered => '@', - mapping => '%', - obj_ref => 'FooObject' - }; - -=back - - -=head2 Class::Virtual - -Generates methods that fail with a message indicating that they were not implemented by the subclass. (Cf. 'Template::Universal:croak -abstract'.) - -Also provides a list of abstract methods that have not been implemented by a subclass. - -=over 4 - -=item Distribution - -CPAN. Last update 3/01. - -=item Extensible - -Unknown. - -=item Mechanism - -Uses Class::Data::Inheritable and installs additional closures. - -=back - - -=head2 CodeGen::PerlBean - -=over 4 - -=item Distribution - -CPAN. - -=item Usage - -Call function with declaration arguments. - -=item Mechanism - -Generates and writes source code to a file. - -=item Instance Type - -Hash (I think). - -=item Subclasses Cleanly - -Unknown. - -=item Standard Methods - -Constructor and various scalar and reference accessors. - -=item Extensible - -Unknown. - -=item Comments - -I haven't yet reviewed this module closely. - -=back - - -=head2 HTML::Mason::MethodMaker - -=over 4 - -=item Distribution - -CPAN. - -=item Usage - -Package import with declaration arguments - -=item Mechanism - -Generates and installs closures - -=item Instance Type - -Hash. - -=item Standard Methods - -Scalar accessors. - -=item Extensible - -No. - -=item Example - - use HTML::Mason::MethodMaker ( - read_write => [ qw( simple ordered mapping obj_ref ) ] - ); - -=back - - -=head1 TO DO - -The following modules are relevant but have not yet been cataloged above. - -=head2 Attribute::Property - -=head2 Class::Accessor::Chained - -=head2 Class::Accessor::Lvalue - -=head2 Class::Accessor::Ref - -=head2 Class::AutoClass - -=head2 Class::Builder - -=head2 Class::Member - -=head2 Class::Trigger - - -=head1 SEE ALSO - -See L<Class::MakeMethods> for general information about this distribution. - - -=head1 CREDITS AND COPYRIGHT - -=head2 Developed By - - M. Simon Cavalletto, simonm@cavalletto.org - Evolution Softworks, www.evoscript.org - -=head2 Copyright - -Copyright 2002 Matthew Simon Cavalletto. - -Portions copyright 2000, 2001 Evolution Online Systems, Inc. - -=head2 License - -You may use, modify, and distribute this document under the same terms as Perl. - -=cut |
