Thread Kritik an OOP (48 answers)
Opened by hlubenow at 2017-07-12 03:18

hlubenow
 2017-07-12 17:25
#186834 #186834
User since
2009-02-22
875 Artikel
BenutzerIn
[default_avatar]
Wow, ich habe eben gerade was bemerkt, da muß ich gerade mal nachfragen:
Mich hat bei den Klassen immer dieses
Code (perl): (dl )
package EineKlasse;

und das
Code (perl): (dl )
package main;

gestört, das die Abschnitte trennt. Viel schöner hätte ich es gefunden, wenn man die Klasse einfach in geschweifte Klammern packen könnte.
Eben hab' ich das bei meinem Beispielprogramm probiert, und das geht!
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
41
42
43
44
45
46
47
#!/usr/bin/perl

use warnings;
use strict;

package Getraenkeautomat {

    sub new {
        my $classname = shift;
        my $self = {bottles_of_cola => 10};
        return bless($self, $classname);
    }

    sub gibMirEineCola {
        my $self = shift;
        if ($self->{bottles_of_cola} > 0) {
            print "Bitteschoen!\n";
            $self->{bottles_of_cola}--;
            print "Noch $self->{bottles_of_cola} Flaschen Cola uebrig.\n";
        }
    }
}

package Man {

    sub new {
        my $classname = shift;
        my $self = {thirst => 0};
        return bless($self, $classname);
    }

    sub sweat {
        my $self = shift;
        my $getraenkeautomat = shift;
        print "Ganz schoene Hitze, ich werde durstiger.\n";
        $self->{thirst}++;
        if ($self->{thirst} > 1) {
            print "Ich brauche eine Cola!\n";
            $getraenkeautomat->gibMirEineCola();
        }
    }
}

my $getraenkeautomat = Getraenkeautomat->new();
my $user = Man->new();
$user->sweat($getraenkeautomat);
$user->sweat($getraenkeautomat);

Leider bin ich mir nicht sicher, was die geschweiften Klammern in Perl wirklich bedeuten. (Das kommt ja in Perl von der Shell, und da sind die geschweiften Klammern auch irgendwie merkwürdig.)
Also: Geht das so, kann man das so machen? Das wäre ja toll!

In "perldoc perlobj" oder "perldoc perlootut" wird das leider nicht so gemacht. Wäre aber doch wirklich schön, oder?
Last edited: 2017-07-12 17:39:10 +0200 (CEST)

View full thread Kritik an OOP