Questão de Programação — Linguagens de programação — FUNDATEC 2025
Programação›Linguagens 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:Considerando 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?
AProduto.calcularDesconto(10);
Bnew Produto().preco = 200; calcularDesconto(10);
CProduto p = new Produto(); p.calcularDesconto(10);
DProduto p = new Produto(); p.preco = 200; p.calcularDesconto(10);
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).
1Instanciar com new
2Configurar atributos
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.