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

rosti
 2017-07-13 10:59
#186843 #186843
User since
2011-03-19
3470 Artikel
BenutzerIn
[Homepage]
user image
Dein $getraenkeautomat ist ein globales Objekt. Wenn Du es ohnehin brauchst, nimm es doch gleich mit als Eigenschaft:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
package Man;

  # aggregation
    sub new {
        my $classname = shift;
        my $self = {
          thirst  => 0,
          COLABOT => Getraenkeautomat->new
        };
        return bless($self, $classname);
    }


und delegiere gibMirEineCola als eine eigene Methode:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
package Man;

# delegation
# die Methode einer nicht verwandten Klasse wird zu einer
# eigenen Methode gemacht
sub gibMirEineCola{
   my $self = shift;
   return $self->{COLABOT}->gibMirEineCola(@_);
}


Später delegieren geht natürlich auch, siehe factory. Fehlersuche und Debuggen wird erleichtert, ein Dump auf das $user-Objekt genügt um auch die Eigenschaften des COLABOT zu zeigen. MfG

View full thread Kritik an OOP