www.farid-hajji.net banner

Farid Hajji

Perl: Einführung, Anwendungen, Referenz (2/e) [Support-Site]

Farid Hajji: Perl - Einführung, Anwendungen, Referenz
2., aktualisierte und erweiterte Auflage
Addison-Wesley Longman, ISBN 3-8273-1535-2

Beispielprogramm

ABadlyHackedUpClass.pm
# ABadlyHackedUpClass.pm -- Datenelemente als Klassenarrays
#                     VORSICHT: Speicherlecks bei der
#                               Zerstoerung von Objekten.

package ABadlyHackedUpClass;

# Klassenprivate Parallelarrays zur Speicherung von Objektattributen:
my @names   = (); # Namen der Objekte
my @phones  = (); # Telefonnummern der Objekte
my $maxpos  = 0;  # Naechste freie Position in @names und @phones.
my %obj2pos = (); # Objektzeiger(string) -> Position in @names, @phones

sub new {
    my $classname = shift;
    my $ptr       = {};         # Irgendeinen anonymen Zeiger
    bless($ptr, $classname);    # zu einem Objekt machen,
    $ptr->_initObject(@_);      # mit Name und Phone initialisieren.
    return $ptr;                # Das war's!
}

sub _initObject {
    my $obj = shift;            # Objektzeiger
    my ($name, $phone) = @_;    # Initialisierungswerte
    push(@names, $name);        # ab in die Attributarrays!
    push(@phones, $phone);      # Genauso!
    $obj2pos{$obj} = $maxpos++; # Neue freie Position aktualisieren.
}

sub getName {
    my $obj = shift;                 # Von welchem Objekt?
    return $names[$obj2pos{$obj}];   # Aha, das wollten wir wissen!
}

sub setPhone {
    my $obj = shift;                 # Von welchem Objekt?
    my $newphone = shift;            # Welche neue Nummer?

    $phones[$obj2pos{$obj}] = $newphone;   # Alles klar!
}

# Und so weiter...

1;
   

[Prev] [Up] [Relevant Chapter] [Next]

[Alte Quelle]


Last modified: $Date: 2006/05/18 12:55:49 $
FH. Search :: Sitemap :: Disclaimer :: Copyright :: Privacy
FreeBSD Logo