Coletânea Python do ZERO às Redes Neurais Artificiais
Agregação e Composição de Classes
Começando o entendimento pela sua lógica, anteriormente vimos o que basicamente é a associação de classes, onde temos mais de uma classe, elas podem compartilhar métodos e atributos entre si ao serem instanciadas, porém uma pode ser executada independentemente da outra.
Já quando falamos em agregação e composição, o laço entre essas classes e suas estruturas passa a ser tão forte que uma depende da outra.
Raciocine que quando estamos realizando a composição de uma classe, uma classe tomará posse dos objetos das outras classes, de modo que se algo corromper essa classe principal, as outras param de funcionar também.
Para esse exemplo, inicialmente criamos uma classe de nome Cliente, ela possui seu método construtor que recebe um nome, uma idade e um ou mais telefones para contato, isto porque como objeto de classe fone inicialmente recebe uma lista em branco.
Em seguida é criado um método de classe responsável por alimentar essa lista com números de telefone.
Porém, repare no diferencial, em self.fone, estamos adicionando dados instanciando como parâmetro outra classe, nesse caso a classe Contato com toda sua estrutura declarada anteriormente.
Como dito anteriormente, este laço, instanciando uma classe dentro de outra classe é um laço forte onde, se houver qualquer exceção no código, tudo irá parar de funcionar uma vez que tudo está interligado operando em conjunto.
Seguindo com o exemplo, é criada uma variável de nome cliente1 que instancia Cliente passando como atributos de classe Fernando, 32.
Em seguida é chamada a função addFone( ) passando como parâmetros 33221766 e 991357258.
Por fim, por meio do comando print( ) pedimos que sejam exibidos os dados de cliente1.nome de cliente1.listaFone( ).
Neste caso o retorno é, como esperado, os dados demonstrados na imagem acima.