Frage

Ich kann den Unterschied zwischen Aggregation und Halten unterscheiden. Was bedeutet es, in Bezug auf, lass uns sagen, C ++?
Ich nehme an, wenn das Objekt der Klasse A hält (oder instanziiert) Objekte der Klasse B, verwendet er es einige Funktionen, die von selbst auszuführen.
Zum Beispiel:

class A {
 int state;
 public: 
  A(int s): state(s) {}
  int inc() { return state++; }
};
class B {
  int app;
  string s;
public:
  B(): app(0), s("") {}
  B(int A, const string& str): app(A), s(str) {}
  void f(int p);
  ~B() { app = 0; s = ""; }
};
void B::f(int p)
{
   A mA(p);
   app = mA.inc();
}

Und die Aggregation von Objekt der Klasse A würde so aussehen:

class B{
 A t;
 //...
}

Bitte geben Sie mir einen Link zu einer Web-Site oder an einen Ort, in einem Buch, in dem ich klare Definitionen in Bezug auf der OO-Sprache finden kann, was genau jede Art von Beziehung zwischen den Klassen ist.

War es hilfreich?

Lösung

eine andere Klasse halten bedeutet, dass eine Klasse mit einer anderen Klasse durch eine Eltern-Kind-Beziehung verbunden ist. Zum Beispiel hat ein Pfad eine Liste von Punkten. Der Weg ist der Elternteil der Liste der Punkte, die die Eltern der einzelnen Punkte sind.

Aggregieren bedeutet verschiedene Klassen zu nehmen und sie hinter einer Schnittstelle setzen, so dass sie als eine Klasse erscheinen. Zum Beispiel kann ein File-Dialog wird mehrere Schaltflächenklasse hat, eine Texteingabe-Klasse, einen Listview / treeview Klasse und so weiter. Aber mit dem Rest des Systems Methoden es musste einfach sein aktivieren, vielleicht einen Standarddateinamen zuweisen, und den Rest abzurufen.

Die Tatsache, dass es von allen anderen Klassen besteht, ist unerheblich für andere Klassen, die es als filedialog.However mit es funktioniert, indem alle Klassen aggregiert das erwartete Verhalten auszuführen.

Andere Tipps

IMO, wenn ich das richtig verstanden, Sie sind für eine Definition der Zusammensetzung gegenüber Aggregation zu fragen. Aggregation oder Halt ist eine Sammlung von Objekten. Zusammensetzung hat eine engere Beschränkung. Denken Sie an durchschnittlich vergebenen Noten zu Schüler: Wenn wir einen Durchschnitt berechnen wir kein Element ausschließen. Zusammensetzung ist ähnlich. Kein Artikel kann verpasst. Aggregation auf der anderen Seite ist mehr lose definiert.

Eine interessante Analogie wäre, dass von einem Köcher voller Pfeile und ein Auto sein. Ein Köcher ist eine Aggregation von Pfeilen, Köcher kann, ohne Pfeile existieren; Auto ist eine Zusammensetzung (Summe der Teile). Und argumentieren läßt nicht, dass ein Auto ohne Rad ist immer noch ein Auto:)

Wie für Referenzen: http://www.bletchleypark.net/algorithms/software /oop.html

Es ist sehr viel über das Eigentum und die Sichtbarkeit. Es gibt verschiedene Namen für diese Beziehungen, aber Sie sollten diese beiden Punkte beachten:

  • Ist die Eltern streng Besitz über das Kind haben, so dass, wenn das Elternteil stirbt, sollte das Kind stirbt auch?

  • Ist das Kind sichtbar für andere Einheiten neben der Mutter?

Die Antworten auf diese Fragen helfen Ihnen, diese Beziehungen zu klären.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top