Qual é a diferença entre segurando objeto de uma classe e agregá-los?
-
21-08-2019 - |
Pergunta
Não consigo distinguir a diferença entre agregar e segurando. O que significa, em termos de, vamos `s dizer, C ++?
Suponho que quando o objeto da classe A possui (ou instancia) objetos da classe B, que usa para executar algumas funções por si só.
Por exemplo:
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();
}
E a agregação de objeto da classe A seria assim:
class B{
A t;
//...
}
Por favor, me dar um link para um web-site ou para um lugar em um livro onde eu posso encontrar definições claras em termos de linguagem OO o que exatamente cada tipo de relacionamento entre as classes é.
Solução
Segurando outro meio classe que uma classe é associadas com outra classe através de uma relação pai e filho. Por exemplo, um Path tem uma lista de pontos. O caminho é o pai da lista de pontos que é o pai dos pontos individuais.
meios agregando tendo aulas diferentes e colocá-los atrás de uma interface para que eles aparecem como uma classe. Por exemplo, um FileDialog terá vários classe botão, uma classe de entrada de texto, uma classe listview / treeview e assim por diante. Mas, para o resto do sistema, ele só tinha métodos para ser ativar, talvez atribuir um nome de arquivo padrão, e recuperar o resto.
O fato é composto por todas as outras classes é irrelevante para outras classes de usá-lo como um filedialog.However ele funciona através da agregação de todas as classes para executar o comportamento esperado.
Outras dicas
IMO, se eu entendi corretamente, você está pedindo uma definição de Composição vs. Agregação. Agregação ou na exploração é um conjunto de entidades. Composição tem uma restrição mais apertado. Pense em pontuações médias atribuídas ao estudante: quando calculamos uma média, não podemos excluir qualquer item. A composição é semelhante a este. No item pode ser omitido. Agregação por outro lado é mais vagamente definido.
Uma analogia interessante seria a de uma aljava cheia de flechas e um carro. Um estremecimento é uma agregação de setas, tremor podem existir sem setas; Car é uma Composição (Soma de peças). E não vamos argumentar que um carro sem uma roda ainda é um carro:)
Quanto a referências: http://www.bletchleypark.net/algorithms/software /oop.html
É muito sobre propriedade e visibilidade. Há nomes diferentes para essas relações, mas você deve considerar estes dois pontos:
-
Será que o pai tem estrita propriedade sobre a criança, de modo que quando as matrizes pais, a criança deveria morrer também?
-
A criança está visível para outras entidades além do pai?
As respostas a estas perguntas irão ajudá-lo a esclarecer essas relações.