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

rosti
 2017-07-21 06:57
#186988 #186988
User since
2011-03-19
3194 Artikel
BenutzerIn
[Homepage]
user image
Aggregation sieht so aus, dass bereits beim Erstellen der Instanz die Kommunikation berücksichtigt wird, die Kommunikation wird stets über eine Methode der eigenen Instanz (hier eine Instanz der Klasse Auto) abgewickelt:

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
# erstelle gleich mal 2 Instanzen
# Fahrzeugführer ID wird durchgereicht
   $pkw = Auto->new(ffid => 1);
   $suv = Auto->new(ffid => 2);

# Wenn der Fahrer gescheckt werden soll, ruft die Auto-Instanz eine eigene Methode
   $pkw->check;
   $suv->check;


# Anwendungsklasse
package Auto;

# Argumente für die Konstruktoren nicht verwandter Klassen werden durchgereicht
# für Debugzwecke wird die gesamte Konfiguration in der eigenen Instanz mitgeschleift
sub new{
   my $class = shift;
   my %cfg = (
      ffid => '', # Fahrzeugführer ID
      # ggf. weitere Defaults
   @_);
   my $self = bless{
      Fahrer   => Fahrer->new( $cfg{ffid} ),
      Polizist => Polizei->new,
      CFG      => \%cfg,
   ), $class;
}

# Delegation in eine eigene Methode
# mit eigener Fehlerbehandlung
sub check{
   my $self = shift;

   my $fuehrerschein = $self->{Fahrer}->fuehrerschein();
   $self->{Polizist}->check( $fuehrerschein) || 
      $self->fehlerbehandlung();
}


Wesentlich ist also, dass innerhalb der eigenen Anwendung keine Instanzen nicht verwandter Klassen erstellt werden, weil das bereits im Konstruktor erfolgt. Somit werden auch keine Instanzen übergeben sondern nur die relevanten Daten, im Beispiel die ID des Fahrzeugführers womit das Fahrzeugführerobjekt in der Lage ist, sämtliche Daten des Führerscheins zu liefern. Letzere werden dann an das Polizeiobjekt übergeben. Die gesamte Kommunikation findes also in einer eigenen Methode bzw. in Methoden der eigenen Anwendungsklasse statt.


Edit: http://rolfrost.de/aggregation.html
Last edited: 2017-07-21 08:26:52 +0200 (CEST)

View full thread Kritik an OOP