Questão 2585341

Tecnologia da Informação · 2023

Questão

ID 2585341

Disciplina: Tecnologia da Informação

Assunto: Padrões Comportamentais

Ano: 2023 Banca: Fundação CESGRANRIO Órgão: Agência de Fomento do Rio de Janeiro


Considere a classe Java abaixo.

public abstract class VendaIngresso {

public void encerraVenda(String espetaculo, String assento) {

double valor = calculaValorIngresso();

confirmaPagamento(valor);

imprimeIngresso();

}

protected void imprimeIngresso() {

// implementação irrelevante para resolver a questão

}

protected void confirmaPagamento(double valor) {

// implementação irrelevante para resolver a questão

}

protected abstract double calculaValorIngresso();

}

Ela contém métodos que implementam o processo de venda de ingressos para espetáculos culturais. Entre eles está o método de encerramento de uma venda, que é composto de três etapas. São elas:

• o cálculo do valor do ingresso;

• a confirmação do pagamento;

• a impressão do ingresso.

As duas últimas etapas independem da natureza de quem está comprando um ingresso, por isso foram implementadas diretamente na classe VendaIngresso. A 1ª etapa, entretanto, não pôde ser implementada nessa classe, pois o valor de um ingresso pode variar de acordo com o tipo de comprador (estudante, idoso, pessoa com deficiência, dentre outros). Por isso, o método calculaValorIngresso é abstrato.

Uma 2ª classe, que implementa a venda de ingressos para estudantes, é mostrada a seguir.

public class VendaIngressoEstudante extends VendaIngresso {

protected double calculaValorIngresso() {

// implementação irrelevante para resolver a questão

}

}

Ela é uma subclasse de VendaIngresso que implementa o cálculo do valor de um ingresso de estudante. Dessa forma, um programa Java que implemente a venda de ingressos para estudantes, baseada nas classes acima, irá conter os seguintes comandos:

VendaIngresso v = new VendaIngressoEstudante();

v.encerraVenda("Máquina Mortífera 20", "L8");

Qual padrão de projeto foi empregado na solução descrita acima?

Alternativas da questão 2585341
Pular para o conteúdo principal