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

AKludgedClass.pm
# AKludgedClass.pm -- Objektattribute als Klassenhashes

package AKludgedClass;

# Wir definieren hier klassenprivate Attributhashes,
# die als Schluessel die Objektzeigerstrings
# und als Werte die zugehoerigen Attribute speichern.
# Wir brauchen einen Hash pro Attribut.
my %names  = ();
my %phones = ();

sub new {
    my $classname = shift;     # Name unserer Klasse.
    my $ptr       = {};        # Irgendeinen Zeiger erzeugen
    bless($ptr, $classname);   # und zu einem Objekt machen.
    $ptr->_init(@_);           # Mit Name und Telefonnummer
                               # initialisieren.
    return $ptr;               # Das war's.
}

sub _init {
    my $obj       = shift;     # Das zu initialisierende Objekt
    my ($na, $ph) = @_;        # Name und Telefonnummer

    $names{$obj}  = $na;
    $phones{$obj} = $ph;
}

sub getPhone {
    my $obj = shift;           # Von welchem Objekt?
    return $phones{$obj};      # Ist ja offensichtlich, oder?
}

sub setName {
    my $obj     = shift;       # Von welchem Objekt?
    my $newname = shift;       # Wie ist der neue Name?

    $names{$obj} = $newname;   # Auch offensichtlich, nicht wahr?
}

# Der Destruktur sorgt dafuer, dass die Attribute des
# zerstoerten Objekts ebenfalls geloescht werden.
sub DESTROY {
    my $obj = shift;           # Das zu loeschende Element

    delete $names{$obj};       # Raus damit!
    delete $phones{$obj};      # Weg damit!
}

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