Thread Liskovsches Sommerloch (19 answers)
Opened by rosti at 2025-06-25 09:13

rosti
 2025-06-29 22:09
#197091 #197091
User since
2011-03-19
3617 Artikel
BenutzerIn
[Homepage]
user image
2025-06-29T19:50:43 hlubenow
Tja, deshalb kann ja mehr als nur ein Objekt von einer Klasse instantiiert werden. Wenn man zwei Autos hat, sollten die sich nicht nur einen Tank teilen müssen. Sondern PKW1 bekommt Tank1, und PKW2 bekommt Tank2.
Dann kann man die Tanks auch problemlos an ihre zugehörigen PKW übergeben.


Ja. Aber es löst das Problem nicht.

Besser ist es, das Tank-Objekt gar nicht zu übergeben sondern innerhalb der Klasse PKW zu erstellen:

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
package PKW{
    use strict;
    use warnings;

    # Auto bauen
    sub new{
        my $class = shift;
        bless{ 
            tank => Tank->new( fuel => 100 )
        }, $class;
    }

    # Tankinhalt ändern, delegierte Methode
    sub fuel{
        my $self = shift;
        return $self->{tank}->fuel(@_);
    }
};

1; ##########################################################
package main;

use strict;
use warnings;
use Data::Dumper;

my $pkw = PKW->new();
my $zweitwagen = PKW->new();
$zweitwagen->fuel(0); # Leerfahren

print $pkw->fuel;

Last edited: 2025-06-30 15:24:13 +0200 (CEST)
http://blog.rolfrost.de/

The art of steam.

View full thread Liskovsches Sommerloch