¿Cuál es la diferencia entre sostener objeto de una clase y la agregación de ellos?

StackOverflow https://stackoverflow.com/questions/368618

  •  21-08-2019
  •  | 
  •  

Pregunta

No puedo distinguir la diferencia entre la agregación y la celebración. ¿Qué significa en términos de, dicen que `s, C ++?
Supongo que cuando el objeto de la clase A tiene (o instancia) objetos de la clase B, se lo utiliza para realizar algunas funciones por sí mismo.
Por ejemplo:

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();
}

Y la agregación de objetos de la clase A sería la siguiente:

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

Por favor, dame un enlace a un sitio web oa un lugar en un libro donde puedo encontrar definiciones claras en términos de lenguaje orientado a objetos exactamente lo que cada tipo de relación entre las clases es.

¿Fue útil?

Solución

La celebración de otra clase significa que una clase se asocia con otra clase a través de una relación padre-hijo. Por ejemplo, una trayectoria tiene una lista de puntos. El camino es el padre de la lista de puntos que es el padre de los puntos individuales.

agregadores significa tomar diferentes clases y ponerlos detrás de una interfaz para que aparezcan como una clase. Por ejemplo, un FileDialog tendrá varias clase de botón, una clase de introducción de texto, una clase de vista de lista / vista de árbol y así sucesivamente. Sin embargo, para el resto del sistema que acaba de tener métodos que activar, tal vez asignar un nombre de archivo predeterminado, y recuperar el resto.

El hecho de que se compone de todas las otras clases es irrelevante para otras clases que lo utilizan como un filedialog.However funciona mediante la agregación de todas las clases para realizar el comportamiento esperado.

Otros consejos

OMI, si he entendido bien, usted está pidiendo una definición de la composición frente a la agregación. La agregación o la explotación sea una colección de entidades. Composición tiene una restricción más estricta. Pensamos en las notas medias concedidas a los estudiantes: cuando se calcula un promedio, no podemos excluir cualquier artículo. La composición es similar a este. Ningún artículo se puede perder a cabo. Agregación en el otro lado está más vagamente definido.

Una analogía interesante sería la de un carcaj lleno de flechas y un coche. Un carcaj es una agregación de flechas, estremecimiento puede existir sin flechas; Coche es una composición (suma de las partes). Y no nos argumentan que un coche sin ruedas sigue siendo un coche:)

En cuanto a las referencias: http://www.bletchleypark.net/algorithms/software /oop.html

Es mucho acerca de la propiedad y la visibilidad. Hay diferentes nombres para estas relaciones, pero se debe tener en cuenta estos dos puntos:

  • ¿El padre tiene la propiedad estricto sobre el niño, de tal manera que cuando el padre muere, el niño debería morir también?

  • Es el niño visible para otras entidades además de la matriz?

Las respuestas a estas preguntas le ayudará a aclarar estas relaciones.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top