Pular para o conteúdo principal

Questão de Programação — Programação Orientada a Objetos — Avança SP 2024

ProgramaçãoProgramação Orientada a Objetos
Código
qg085764
Banca
Avança SP
Órgão
Prefeitura de Caçapava - SP
Ano
2024
Nível
Médio
Cargo
Técnico em Informática
Considere as seguintes afirmações sobre a inicialização de objetos em CSharp:I. A inicialização de objetos permite a atribuição de valores a propriedades ou campos no momento da criação do objeto.II. A sintaxe de inicialização de objetos reduz a necessidade de construtores sobrecarregados para diferentes combinações de parâmetros.III. É possível inicializar objetos aninhados e coleções com a sintaxe de inicialização de objetos.Qual das seguintes alternativas está correta?
  1. AApenas I e II são verdadeiras.
  2. BApenas I e III são verdadeiras.
  3. CApenas II e III são verdadeiras.
  4. DI, II e III são verdadeiras.
  5. ENenhuma das afirmações é verdadeira.
Revelar gabarito e comentário

GabaritoD — I, II e III são verdadeiras.

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Inicialização de objetos em C#

Gabarito: letra D. As três afirmações sobre inicialização de objetos em C# são verdadeiras: a inicialização de objetos permite atribuir valores a propriedades ou campos no momento da criação do objeto (I), reduz a necessidade de construtores sobrecarregados para diferentes combinações de parâmetros (II) e suporta a inicialização de objetos aninhados e coleções (III). Esse recurso é uma sintaxe da linguagem C# que simplifica a criação e configuração de objetos, conforme a documentação oficial da Microsoft.

A inicialização de objetos é um recurso da linguagem C# que permite definir valores iniciais para propriedades ou campos públicos de um objeto diretamente na expressão de criação, usando a sintaxe new Tipo { Propriedade = valor }. Ela foi introduzida no C# 3.0 e é amplamente utilizada para tornar o código mais conciso e legível. Em vez de escrever várias linhas para instanciar um objeto e depois atribuir cada propriedade, você pode fazer tudo em uma única expressão.

O principal benefício é a redução da necessidade de construtores sobrecarregados. Sem a inicialização de objetos, para criar um objeto com diferentes combinações de valores, seria necessário definir vários construtores, cada um aceitando um conjunto diferente de parâmetros. Com a inicialização de objetos, você pode usar um construtor padrão (sem parâmetros) e configurar apenas as propriedades desejadas, eliminando a necessidade de múltiplas sobrecargas. Isso torna o código mais flexível e fácil de manter.

Além disso, a sintaxe de inicialização de objetos suporta a inicialização de objetos aninhados e coleções. Por exemplo, você pode inicializar uma propriedade que é um objeto complexo usando a sintaxe new Tipo { Propriedade = new SubTipo { ... } }, ou inicializar uma coleção com elementos usando new Tipo { Lista = { item1, item2 } }. Isso permite criar estruturas de dados complexas de forma declarativa e legível.

É importante distinguir a inicialização de objetos de outros conceitos relacionados, como construtores e propriedades. Enquanto os construtores são métodos especiais chamados na criação do objeto para inicializar seu estado, a inicialização de objetos é uma sintaxe que atua após a chamada do construtor, atribuindo valores às propriedades ou campos acessíveis. Ela não substitui a necessidade de construtores em todos os casos, mas complementa, oferecendo uma alternativa mais simples para configuração inicial.

A pegadinha que a banca pode explorar é confundir a inicialização de objetos com a criação de objetos via construtores ou com a sintaxe de coleções. No entanto, nesta questão, todas as afirmações estão corretas, e a resposta é a letra D. Vamos analisar cada item.

Item I — ✅ Correto

A afirmação I está correta. A inicialização de objetos permite atribuir valores a propriedades ou campos no momento da criação do objeto. Isso é exatamente o que a sintaxe new Tipo { Propriedade = valor } faz: após o construtor ser executado, as propriedades ou campos especificados são definidos com os valores fornecidos, tudo na mesma expressão de criação.

Item II — ✅ Correto

A afirmação II está correta. A sintaxe de inicialização de objetos reduz a necessidade de construtores sobrecarregados. Em vez de criar vários construtores para diferentes combinações de parâmetros, você pode usar um construtor padrão e inicializar apenas as propriedades desejadas. Isso simplifica o código e evita a proliferação de sobrecargas.

Item III — ✅ Correto

A afirmação III está correta. É possível inicializar objetos aninhados e coleções com a sintaxe de inicialização de objetos. Por exemplo, você pode inicializar uma propriedade que é um objeto com new Tipo { Sub = new SubTipo { ... } } e uma coleção com new Tipo { Lista = { item1, item2 } }. Essa capacidade torna a sintaxe ainda mais poderosa para construir estruturas complexas de forma declarativa.

Conclusão: Todos os itens I, II e III são verdadeiros, portanto a alternativa correta é a letra D.

Gabarito: letra D

Link permanente: /questoes/qg085764