Prática com Orientação a Objetos em C++ [parte 2]

Nesse artigo é mostrada uma forma de representar a associação entre duas classes no C++. O artigo considera que a definição da classe “empresa” já está codificada (o código é mostrado no artigo Prática com Oridentação a Objetos em C++ [parte 1]) e o esquema considerado é mostrado na figura abaixo.

classesContainerEmpresa

Boa parte da implementação da classe container é básica e similar a implementação da classe empresa, tendo um método construtor e métodos getters e setters, que retornam valores das variáveis e alteram valores das variáveis respectivamente.

O código destaca algumas linhas que são as que realizam a associação entre as duas classes. Pelo multiplidade presente mostrada no modelo, a empresa pode ter vários containers, mas um container é de apenas uma empresa. Para representar essa associação foi criado na linha 6 um ponteiro para um objeto empresa.

A associação então é feita através desse ponteiro que referenciará um objeto do tipo empresa. No método construtor (linha 9), o último parâmetro recebido é um ponteiro para um objeto de empresa e a linha 13 atribui o parâmetro passado ao ponteiro atributo da classe, finalizando a associação.

Agora associado, é possível que um objeto container pode solicitar os métodos públicos de uma empresa. Isso é feito, por exemplo, através do método getEmpresa(). Veja que ele retorna o nome da empresa e que para isso foi utilizado o operador ->, já que essa é a forma de invocar métodos a partir de ponteiros (é utilizado -> ao invés de .).

Para testar a classe é utilizado o código a seguir na função main(). A partir de uma empresa definidas, seu endereço de memória é passado como parâmetro na construção do objeto de container (utilizando o operador & para pegar o endereço de memória) e em seguida retornando o nome da empresa que é proprietária do container.

 

Share

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

This site uses Akismet to reduce spam. Learn how your comment data is processed.