Exercícios Resolvidos de Ponteiros com classes e objetos

Ver Teoria

Enunciado

Considere a classe P e s s o a abaixo:

Escreva um programa em C++ que receba um valor n de entrada e, em seguida:

  • Aloque espaço dinamicamente na memória para criar um array de P e s s o a de n elementos.
  • Preencha o array criado com valores digitados pelo usuário;
  • Imprima o array preenchido na tela
  • Libere o espaço de memória alocado.

Passo 1

E aí, tranquilidade? Essa questão vai ser um pouco grandinha, mas você vai ver que é tranquila.

Antes de mais nada, observando a classe P e s s o a do enunciado vemos que temos uma variável do tipo s t r i n g . Então vai ser necessário adicionar o cabeçalho < s t r i n g >

Agora vamos falar um pouco sobre a questão. Ela quer que a gente crie um array dinâmico que armazena objetos da classe P e s s o a , imprima o conteúdo do array dinâmico, e depois apague o array dinâmico.

Pra facilitar a nossa vida, vai ser legal que a gente mexa um pouco na classe P e s s o a e adicione alguns métodos pra facilitar a nossa vida na hora de preencher e imprimir os atributos da classe.

Depois que a classe tiver adaptada, a gente vai pedir o valor de n pro usuário, e criar um array dinâmico com o tamanho n . E usando loops vamos preencher e imprimir cada um dos objetos armazenados no array

Passo 2

Ok, com o cabeçalho do código já feito, vamos adicionar a classe do enunciado ao nosso programa:

Show. Agora vamos mudar para o contexto público, e dentro dele vamos criar um método que nos ajude na hora de preencher essa classe.

Vamos criar o método p r e e n c h e P e s s o a , é bem simples, esse método vai usar o c o u t e c i n para pedir que o usuário preencha valores, e armazenar os valores inseridos nos atributos adequados. Esse método não precisa receber nenhum parâmetro, e não retornará nada, portanto será v o i d :

Ainda no espaço público, vamos criar um outro método que vai nos ajudar a imprimir o conteúdo da classe, chamado i m p r i m e P e s s o a que vai imprimir cada um dos atributos junto com uma mensagem adequada:

E pronto. Com isso a gente pode concluir a classe e partir pra m a i n (   )

Passo 3

Dentro da m a i n (   ) vamos começar declarando uma variável n e um ponteiro para P e s s o a chamado v e c P e s s o a .

E em seguida perguntamos pro usuário o valor de n :

E com o valor de n obtido podemos alocar dinamicamente um espaço na memória, com a seguinte sintaxe:

p o n t e i r o = n e w   n o m e C l a s s e [   t a m a n h o   ]

Ou seja, usaremos o operador n e w para alocar n espaços do tipo P e s s o a na memória, e guardar o endereço de memória desse espaço no ponteiro v e c P e s s o a :

E assim, a memória foi alocada dinamicamente.

Passo 4

Agora vamos preencher cada uma das pessoas.

Pra isso vamos usar um loop para acessar cada uma das posições do array v e c P e s s o a , e usando o operador ponto . vamos poder acessar os métodos contidos dentro do objeto. Ou seja, poderemos usar o método p r e e n c h e P e s s o a (   )

Iniciamos um loop que vai de 0 até n de um em um:

E em cada iteração vamos acessar a posição i de v e c P e s s o a e utilizar o método p r e e n c h e P e s s o a

E finalizamos o loop.

Passo 5

Para imprimir o conteúdo de cada um dos objetos vamos fazer a mesma coisa. Vamos acessar cada um dos elementos do array e utilizar o método i m p r i m e P e s s o a

Iniciamos um loop que vai de 0 até n de um em um:

E em cada iteração vamos acessar a posição i de v e c P e s s o a e utilizar o método i m p r i m e P e s s o a

E finalizamos o loop.

Passo 6

Show de bola! O vector dinâmico foi criado, preenchido e impresso!

Por último, mas não menos importante, a gente sempre tem que deletar elementos criados dinamicamente. Então vamos usar o operador d e l e t e   [   ] para deletar o array dinâmico:

E depois de deletar podemos finalizar o programa com segurança!

Resposta