[Dresden-pm] Objektorientierung unter Perl

Thomas Rittsche thomas.rittsche at gmail.com
Do Feb 19 08:04:09 PST 2009


Hallo Mongers,
hatten heute einen Dozenten hier, der uns in Sachen Objektorientiertes
Perl fit machen sollte. Leider ist der schon an einem der ersten
Beispiele gescheitert. Die Aufgabe war, eine Klasse "Auto" anzulegen,
die von einer Klasse "Motor" erbt bzw. abgeleitet ist. Irgendwie ist
da wohl was schief gegangen, am Ende war die Verwirrung perfekt,
keiner wusste mehr, wann wo und warum zu blessen ist... ;)

Mit dem Code unten gabs immer ne Fehlermeldung beim Anlegen einer
Instanz von Auto über

use Auto;
$auto = Auto->new();

Könnt ihr uns mal bitte wieder in die Spur bringen?  Vielen Dank!


Hier mal zwei Codeschnipsel, die Klassen lagen natürlich in eigenen Dateien:

#  ####  Klasse Auto

#!/usr/bin/perl -W

package Auto;
use     Motor;

@ISA = qw(Motor);

sub new {
  my ($class, $data) = @_;
  my $self = {};
  bless $self, $class;
  $self->SUPER::new();
  return $self;
}

1;

#  ####  Klasse Motor

#!/usr/bin/perl -W
package Motor;
sub new{
  my ($class, $data) = @_;
  my $typ = shift;
  my $self = {};
  bless $self, $class;
  $self->{zustand}  = 'aus';
  $self->{oelstand} = 0;
  $self->{typ} = $typ;
  return $self;
}

sub zustand{
  my $self = shift;
  return $self->{zustand} unless @_;
  $self->{zustand} = shift;
  return $self;
}

sub starte {
  my $self = shift;
  print "Gestartet \n";
  return $self;
}

sub DESTROY{
  my $self = shift;
  $self = {};
}

1;


Mehr Informationen über die Mailingliste Dresden-pm