#!/usr/bin/env perl

use strict;
use warnings;
use feature ':5.10';

# Human::Base
use Human::Base;

my $human = new Human::Base('Joe');
   $human->height = 180;
   $human->weight = 90;

my $human1 = $human->clone();
   $human1->name = 'Mike';

say $human->name;
say $human1->name;

# Human::Movable
use Human::Movable;

my $human2 = new Human::Movable('Dick');
   $human2->moveLeft() for 1 .. 3;
   $human2->moveDown() for 1 .. 4;

print $human2->name, '\'s way length: ';
say $human2->getResultWay();

# Human::WithCache
use Human::WithCache;

my $human3 = new Human::WithCache('Michael');
$human3->deposit(30_000);

eval { $human3->withdraw(int rand 1_000) } until $@;

say $human3->avgOut();
