Pular para o conteúdo principal

Questão de Programação — Linguagens de programação — FUNDATEC 2025

ProgramaçãoLinguagens de programação
Código
qg477100
Banca
FUNDATEC
Órgão
Prefeitura de Lajeado - RS
Ano
2025
Nível
Superior
Cargo
Analista de Sistemas
Durante o desenvolvimento de um sistema de vendas, um analista implementou a classe abaixo para calcular o valor do desconto aplicado sobre um produto com base em um percentual fornecido:Q36.png 394×100Considerando que um produto custa R$ 200,00 e deseja-se aplicar-lhe um desconto de 10%, qual das alternativas abaixo apresenta a sequência correta de comandos em Java que deve ser utilizada para instanciar um objeto, configurar o preço e obter o valor do desconto?
  1. AProduto.calcularDesconto(10);
  2. Bnew Produto().preco = 200; calcularDesconto(10);
  3. CProduto p = new Produto(); p.calcularDesconto(10);
  4. DProduto p = new Produto(); p.preco = 200; p.calcularDesconto(10);
  5. EcalcularDesconto (200, 10);
Revelar gabarito e comentário

GabaritoD — Produto p = new Produto(); p.preco = 200; p.calcularDesconto(10);

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”.

Java: instanciando objetos e chamando métodos

Gabarito: letra D. Para calcular o desconto de um produto em Java, é preciso primeiro instanciar um objeto da classe Produto com o operador new, depois atribuir o preço ao atributo preco e, por fim, chamar o método calcularDesconto(10) sobre esse objeto — exatamente a sequência Produto p = new Produto(); p.preco = 200; p.calcularDesconto(10);. As demais alternativas erram ao chamar o método como se fosse estático, esquecer de instanciar o objeto ou não configurar o preço antes do cálculo.

Em Java, uma classe é um molde que define atributos (dados) e métodos (comportamentos). Para usar esse molde, é necessário criar uma instância — um objeto concreto — por meio do operador new, que aloca memória e chama o construtor da classe. Sem instanciar, não há objeto para armazenar o preço nem para executar o método de instância. A sintaxe correta é NomeDaClasse nomeDaVariavel = new NomeDaClasse();.

Depois de instanciado, o acesso aos membros do objeto (atributos e métodos) é feito pelo operador ponto .. Assim, p.preco = 200; atribui o valor 200 ao atributo preco do objeto referenciado por p, e p.calcularDesconto(10); invoca o método calcularDesconto sobre esse mesmo objeto, passando 10 como percentual. A ordem importa: o preço precisa estar configurado antes de o método ser chamado, pois o cálculo do desconto depende do valor do preço.

A alternativa correta reflete exatamente esse fluxo: declara a variável p do tipo Produto, instancia um novo objeto com new Produto(), atribui o preço e chama o método. As demais alternativas falham em pelo menos um desses passos essenciais.

NÃO CAIA NESSA!

A banca explora a confusão entre método de instância e método estático. Em Java, um método que não é declarado como static pertence ao objeto, não à classe. Por isso, chamadas como Produto.calcularDesconto(10) (alternativa A) ou calcularDesconto(10) (alternativa B) estão erradas — sem um objeto, não há como executar um método de instância. A alternativa C também erra ao não configurar o preço antes de calcular o desconto, o que provavelmente resultaria em um valor incorreto (ou em uma exceção, dependendo da implementação).

  1. 1Instanciar com new
  2. 2Configurar atributos
  3. 3Chamar método (.)
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

Produto.calcularDesconto(10); tenta chamar o método diretamente pela classe, como se fosse um método estático. Como calcularDesconto é um método de instância (não há indicação de static), essa chamada não é válida — seria necessário um objeto. Além disso, não configura o preço do produto.

Alternativa B — ❌ Incorreta

new Produto().preco = 200; calcularDesconto(10); instancia um objeto e atribui o preço, mas a chamada calcularDesconto(10); está solta, sem referência ao objeto criado. Em Java, um método de instância só pode ser chamado através de um objeto (objeto.metodo()). A sintaxe correta seria new Produto().calcularDesconto(10); — mas, mesmo assim, o preço teria que ser configurado no mesmo objeto.

Alternativa C — ❌ Incorreta

Produto p = new Produto(); p.calcularDesconto(10); instancia o objeto e chama o método corretamente, mas não configura o preço antes do cálculo. Sem p.preco = 200;, o método calcularDesconto não teria o valor do preço para aplicar o percentual — o resultado seria incorreto (provavelmente 0 ou um valor padrão, dependendo da implementação).

Alternativa D — ✅ Correta ⟵ GABARITO

Produto p = new Produto(); p.preco = 200; p.calcularDesconto(10); segue a sequência completa e correta: instancia o objeto, atribui o preço de R$ 200,00 ao atributo preco e chama o método calcularDesconto(10) sobre o objeto p. Com isso, o método tem acesso ao preço configurado e pode calcular o desconto de 10% (R$ 20,00).

Alternativa E — ❌ Incorreta

calcularDesconto(200, 10); chama o método como se fosse uma função global, passando dois argumentos. Em Java, não existem funções globais — todo método pertence a uma classe e, se for de instância, precisa ser chamado através de um objeto. Além disso, a assinatura do método calcularDesconto recebe apenas o percentual, não o preço (o preço é um atributo do objeto).

Gabarito: letra D — a única alternativa que instancia o objeto, configura o preço e chama o método corretamente, na ordem certa.

Link permanente: /questoes/qg477100