Thread OOP, erste Schritte (15 answers)
Opened by hlubenow at 2012-02-21 16:20

hlubenow
 2012-02-21 16:20
#156251 #156251
User since
2009-02-22
875 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich versuche gerade, mich ein bißchen an OOP in Perl heranzutasten.
Meist verwende ich dieses Lampenbeispiel:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!/usr/bin/perl

use warnings;
use strict;

{ package Lamp;
    use warnings;
    use strict;

    sub new {
        my $classname = shift;
        my $self = {status => "off"};
        return bless($self, $classname);
    }

    sub switchOn {
        my $self = shift;
        print "Click. Light.\n";
        $self->{status} = "on";
    }

    sub switchOff {
        my $self = shift;
        print "Click. Darkness.\n";
        $self->{status} = "off";
    }

    sub printStatus {
        my $self = shift;
        print "The lamp is " . $self->{status} . " now.\n";
    }
}

my $lamp = Lamp -> new();
$lamp -> printStatus();
$lamp -> switchOn();
$lamp -> printStatus();
$lamp -> switchOff();
$lamp -> printStatus();
print $lamp->{status}."\n";

Nun habe ich ein paar Fragen:

1. Ist
Code (perl): (dl )
1
2
$self->{status} # bzw.
$lamp->{status}

wirklich die richtige Notation, um an die Attribute heranzukommen oder gibt es noch eine einfachere, kürzere?

2. Wie erhält man von außerhalb Zugriff auf $classname? Wieso erhält das überhaupt einen Wert? Wenn ich Lamp->new() aufrufe, übergebe ich doch gar kein Argument.

3. Könnte man die geschweiften Klammern um das Package auch weglassen?

4. Arbeitet man bei diesem $self wirklich mit einer Referenz auf einen anonymen Hash? Scheint mir ebenfalls eine recht komplizierte Kontstruktion.

5. Oder gibt es vielleicht überhaupt einen Weg, das alles besser zu schreiben?

Oh je ...

6. Setzt ihr überhaupt viel OOP mit Perl ein oder kommt ihr meist ohne aus?
Schreibt ihr z.B. Tk-Anwendungen objektorientiert oder eher nicht?

modedit Editiert von pq: Tag "OOP" hinzugefügt
Last edited: 2012-02-21 16:24:37 +0100 (CET)

View full thread OOP, erste Schritte