README.md
READ ME

DESCRIPTION
This class is designed to provide object data encapsulation, a requirement
of object oriented programming, and a reliable object interface. Perl
has no access modifiers so encapsulation is not facilitated by the
language. The Capsule module remedies that deficiency. You need only
inherit from this class to encapsulate your child class data.

I make every attempt to be Perlish in the design of this class, so it is
designed to be easily used. As the SYNOPSIS shows, a functional data
class can be created entirely devoid of implementation.

The class provides a default constructor and automatic set and get
methods called, 'accessors'. The class enforces encapsulation in child
classes using the memory address key method (props to Damian Conway).

Consistent with good object-oriented design, the class provides a
default constructor and no arguments are accepted. Instance variables
are defined in a class level array in the child class and are initialized
to undef.

The class uses AUTOLOAD to provide automatic accessor methods for
instance variables. This is not as evil as it you may think. Only the
accessors will be AUTOLOADed. Non-accessors result in an error. You
can and should provide your own accessor implementations as needed, but
you should follow the naming convention. If you violate the naming
convention, the default accessors will exist anyway and you lose two
important benefits.

First, AUTOLOADed accessors enforce a naming convention and therefore
a consistent interface for all child classes. Set methods must begin
with 'set_'. Get methods must begin with 'get_'. If you chose to name
your accessors differently, this benefit is foregone.

The class level hash approach used to provide encapsulation
unfortunately also provides opacity. Introspective methods like
fetch_attributes(), to_string(), and to_string_all() are provided to
compensate for that.

The class provides a usage() method which dies with the SYNOPSIS,
ARGUMENTS, and OPTIONS from the class POD. Use this when the class is
misused.

COPYRIGHT

Copyright (c) 2004 Todd Shoenfelt. All rights reserved. This program
is free software; you can redistribute it and/or modify it under the
same terms as Perl itself.

PRE-REQUISITES

WeakRef.pm, Pod::Usage.pm, Data::Dumper.pm

HOW TO BUILD IT

There's nothing to build. It's Perl.

HOW TO INSTALL IT

Copy the file under lib/Class.

RECENT CHANGES

N/A. This is the first release.

FUTURE CHANGES

N/A.