package CWord; sub new { my $class = shift; my ($string,$cat) =@_; my $self = { "string" => $string, "cat" => $cat}; return bless $self, $class; #bless : verbindet eine Reference mit einer Klasse } sub string { my $self = shift; #ersten Argument ist immer die Klasse return $self->{"string"}; } sub set_word { my $self = shift; $self->{"string"} = shift; $self->{"cat"} = shift; } sub cat { my $self = shift; return $self->{"cat"}; } package CTier; sub new { my $class = shift; my($alter,$geschlecht,$hunger,$position) = @_; my $self = {"alter" => $alter, "geschlecht" => $geschlecht, "hunger" => $hunger, "position" => $position}; return bless $self, $class; } sub Bewege { my $self = shift; $self->{"position"} = shift; my $derHunger = $self->{"hunger"}; $self->{"hunger"} = $derHunger+1; } sub Zeige { my $self = shift; print "Alter: ",$self->{"alter"},"\n"; print "Geschlecht: ",$self->{"geschlecht"},"\n"; print "Hunger: ",$self->{"hunger"},"\n"; print "Position: ",$self->{"position"},"\n"; } sub Friss { my $self = shift; $self->{"hunger"} = 0; } package CFisch; @ISA = ('CTier'); sub LegeEier { print "ich lege jetzt Eier\n"; print "uf war das anstrengend! \n"; $self = shift; my $derHunger = $self->{"hunger"}; $self->{"hunger"} = $derHunger+10; } package main; my $word1 = new CWord ("Haus","nomen"); my $word2 = new CWord ("gehen","verb"); my $tier1 = new CTier (10,"m",0,"hier"); my $tier2 = new CFisch (10,"w",5,"hier"); $tier1->Zeige; $tier1->Bewege("da"); $tier1->Zeige; $tier2->Zeige; $tier2->LegeEier; $tier2->Zeige; print $word1->string, " ", $word1->cat,"\n"; print $word2->string, " ", $word2->cat,"\n"; $word2->set_word("Auto","nomen"); print $word2->string, " ", $word2->cat,"\n";