188 MX modules now
[gitmo/moose-presentations.git] / moose-class / slides / outline
index 379453b..c11dea1 100644 (file)
 * required
 * default & builder
 * lazy
+* predicate, clearer
 * init_arg
+* reader & writer
+* attribute inheritance
+* MX attribute naming modules
 
 == Exercises
 
@@ -52,6 +56,7 @@
 ** make first & last name required
 * Go back to Employee
 ** make title default to "Worker"
+** add predicate & clearer for title
 ** add salary_level attribute, number from 1-10
 ** salary, lazy default of salary_level * 1,000, init_arg is undef
 
 ** after for additional state changes
 * around
 ** modifying arguments & return values
-
-== Exercises
-
-= More roles
-
-* methods and attributes
-* method modifiers (and requiring the wrapped method)
-* attributes in roles
-
-== Exercises
-
-= Advanced attributes
-
-* delegation
-* metaclass & traits
+* method modifiers in roles
+** requiring the wrapped method
+* augment/inner
 
 == Exercises
 
 ** Email
 ** class names & role names
 * coercions
+* duck_type
 * attribute isa & does
+* attribute coerce => 1
+* MX::Types
 
 == Exercises
 
-= Introspection
+* Add sane types to all existing attributes in Person, Employee, roles
+* Add an email attribute. Make a new email type that does some minimal validate like /[^@]+\@[\w\-]+(?:\.[\w\-]+)+/
+
+= Advanced attributes
+
+* weak_ref
+* triggers
+* delegation
+* metaclass & traits
 
 == Exercises
 
-= MooseX
+* Make the bank account a proper object and delegate to it for deposit & withdraw
+* Add an overdraft account like in the cookbook
+* Make the overdraft account link bank to accounts which link to it as a weak_ref
+* metaclass & traits?
+
+= Introspection
+
+* List of attributes for a class
+** attribute options
+** associated methods
+* List of methods for a class
+** associated attributes
+** check original_package for source of method (did it come from a role?)
+** $method->isa(...) to determine if it's wrapped/augmented/overridden
+* List of parent classes, subclasses
+
+= Tour of MooseX
+
+* MX::AH
+** delegation for Perl built-ins
+** private accessor with public provides (_options as the attribute, get_option, set_option, options_list)
+** lazy default of an empty reference
+* ::StrictConstructor
+* ::Getopt
+* ::Clone
+* ::Declare
+* ::Workers ?
+* ::NonMoose
+* ::Singleton
+* ::ClassAttribute
+
+= Writing a MooseX Module
 
 == Exercises