Na orientação a objetos, construtores e destrutores são méto...

Próximas questões
Com base no mesmo assunto
Q39608 Programação
Na orientação a objetos, construtores e destrutores são métodos especiais responsáveis pela criação e destruição de objetos. Nesse aspecto, considere:

I. Em DELPHI, uma chamada do tipo MeuVeiculo := TVeiculo.Create; invocará o construtor padrão TObject.

II. Em DELPHI, linhas de código do tipo MeuVeiculo.Destroy; e MeuVeiculo : = nil; libera a memória que foi alocada para o objeto MeuVeiculo, como também limpa a referência a ele.

III. Em JAVA, se nenhum construtor for explicitamente definido pelo programador da classe, um construtor padrão é incluído para a classe pelo compilador Java.

IV. Java possui uma gerência automática de memória, ou seja, quando um objeto não é mais referenciado pelo programa, é automaticamente destruído.

Está correto o que se afirma e
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa correta: E - I, II, III e IV.

A questão aborda os conceitos centrais da programação orientada a objetos (POO) com foco nos construtores e destrutores em duas linguagens de programação: Delphi e Java. Para resolver esta questão, é necessário entender o funcionamento desses métodos nas respectivas linguagens.

I. Em Delphi, ao criar um objeto com TVeiculo.Create, estamos chamando um construtor da classe TVeiculo. Se não houver um construtor explícito na classe TVeiculo, o Delphi chama o construtor padrão da classe base, que é TObject. Isso está correto.

II. O código MeuVeiculo.Destroy no Delphi é usado para destruir um objeto explicitamente. No entanto, é boa prática usar a instrução Free no lugar de Destroy, pois Free verifica se o objeto é diferente de nil antes de chamar Destroy. Atribuir nil a um ponteiro de objeto serve para evitar acessar memória que já foi liberada, o que poderia causar erros. Esta afirmação também está correta.

III. No Java, se uma classe não tiver um construtor definido pelo programador, o compilador fornecerá um construtor padrão sem parâmetros que não faz nada, exceto invocar o construtor da superclasse. Assim, esta afirmação é verdadeira.

IV. Java tem um sistema de gerenciamento de memória chamado coletor de lixo (garbage collector). Quando um objeto não é mais referenciado, ou seja, nenhum outro objeto ou variável mantém uma referência a ele, o coletor de lixo pode, eventualmente, liberar a memória ocupada por ele. Portanto, essa afirmação é correta.

Com base nessas explicações, todas as afirmações I, II, III e IV são verdadeiras, o que torna a alternativa E a resposta correta.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

Posso afirmar que As duas opções que tratam de JAVA (III e IV) estão corretas.
Opção III: você não precisa criar construtores para toda classe, quando você não cria construtores, um construtor padrão é criado automaticamente.
Opção IV: refere-se a garbage collection. a GC limpa automaticamente objetos sem vinculos.

Não conheco DELPHI, por isso nao posso comentar as outras afirmaçoes.
Sobre o item III: Java é compilado ou é interpretado? pois a assertiva fala que quem cria o construtor automaticamente é o compilador, mas acredito que quem faça isso é o interpretador java não?

@DanJuh CasalConcurseiro, em Java, o código fonte é compilado para bytecode e o bytecode é interpretado pela máquina virtual Java. Logo, é correto afirmar que o compilador cria automaticamente um construtor default caso nenhum seja informado.

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo