Farid Hajji: Perl - Einführung, Anwendungen, Referenz
2., aktualisierte und erweiterte Auflage
Addison-Wesley Longman, ISBN 3-8273-1535-2
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 |
|