note
munchie
Ok, here's TRY 2. I'm almost 100% percent sure this is <em>real</em> object orientation. It's a package called AlienFarm that can make, teach, and give powers to aliens.
(Constructed using the <code>birth</code> method.)<p>
<code>
#! Perl
use strict;
{
package AlienFarm;
sub birth {
my $self=shift;
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time);
my $name=shift;
$mon+=1;
$year+=1900;
my $birth = "$mon $mday, $year";
my $alien = bless {
NAME => "$name",
BIRTH => "$birth",
POWERS => [ ],
BRAINS => ["pre-school", "1st grade", "2nd grade",
"3rd grade", "4th grade", "5th grade",
"6th grade", "7th grade", "8th grade",
"9th grade", "10th grade", "11th grade",
"12th grade", "Harvard Freshman", "Harvard Sophmore",
"Havard Junior", "Harvard Senior", "Employed", "CEO"],
LEVEL => "-1" }, "AlienFarm";
}
sub birthday {
my $decide=shift;
ref $decide ? $decide->{BIRTH} : "an unknown time";
}
sub name {
my $decide=shift;
ref $decide ? $decide->{NAME} : "an unknown name";
}
sub set_power {
my $self=shift;
my $power=shift;
push @{$self->{POWERS}}, $power;
}
sub get_powers {
my $self=shift;
my $num=1;
foreach my $power ( @{$self->{POWERS}} ) {
print "$num) $power\n";
$num++;
}
print "\n";
}
sub teach_lessons {
my $self=shift;
my $level = $self->{LEVEL};
$level+=1;
$self->{LEVEL} = $level;
return "Lesson taught. Level: ". $self->{BRAINS}[$self->{LEVEL}] ."\n";
}
sub schooling {
my $self = shift;
return $self->{BRAINS}[$self->{LEVEL}];
}
}
</code>
<p>> munchie, the number munchin newb<br>
<font color=blue>Llama: The other other white meat!</font><br>
<font size=-1>(you had to be there :-P)</font>
152358
152358