Hallihallo
Hab grad ein Verständnisproblem mit der Vererbung in OOP:
ich hab ein Basismodul und verschiedene Readermodule (deren Methoden auch durch
die Instanz des Basismoduls aufgerufen werden können sollen).
Wäre froh, wenn mir da jemand sagen könnte, was ich falsch mache.
Viele Grüsse
Philipp
------
also so:
<snip>
my $bla = new Bilanz::Storage;
my %read = $bla->_read;
</snip>
package Bilanz::Storage;
use strict;
use Bilanz::Event;
use Bilanz::Debug;
use vars qw(@ISA);
sub new {
my ($class, %params) = @_;
my $self = {};
bless ($self, $class);
my $storage = delete $params{-storage};
if ($storage eq 'txt') {
eval('use Bilanz::Storage::txt');
@ISA = ('Bilanz::Storage::txt');
$self = $class -> SUPER::new(%params);
} else {
eval('use Bilanz::Storage::sql');
@ISA = ('Bilanz::Storage::sql');
$self = $class -> SUPER::new(%params);
}
return $self;
}
und spezielle Readermodule für sql, txt, xml, ..., die in das Bilanz::Storage Modul
"eingelegt" werden sollen, sodass man über das Modul Bilanz::Storage auf die Methoden
von Bilanz::Storage::xxx zugreifen kann.
Hier ein Readermodul:
package Bilanz::Storage::txt;
use strict;
use Bilanz::Event;
use Bilanz::Debug;
sub new {
my ($class, %conf) = @_;
my $self = {};
bless ($self, $class);
$self->{Events} = new Bilanz::Event;
$self->{debug} = new Bilanz::Debug(-all => -1);
$self->{-file_konten} = $conf{-file_konten};
$self->{-file_transactions} = $conf{-file_transactions};
$self->{debug}->debug("init of $self");
$self->_read;
return $self;
}
Methoden
sub _read {
# blablabla
}