Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

Resolução

public class Principal {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        DateTimeFormatter formato= DateTimeFormatter.ofPattern("dd/MM/yyyy");
        Reserva reserva= new Reserva();

        System.out.print("Digite a data (dd/MM/yyyy): ");
        LocalDate data=LocalDate.parse(scanner.next(), formato);

        System.out.print("Digite o número de pessoas: ");
        int pessoas=scanner.nextInt();

        reserva.reservar();
        reserva.reservar(data);
        reserva.reservar(data, pessoas);


    }
}
public class Reserva {
    private static final DateTimeFormatter FORMATO = DateTimeFormatter.ofPattern("dd/MM/yyyy");

    public void reservar() {
        System.out.println("Reserva realizada!");
    }

    public void reservar(LocalDate data) {
        System.out.printf("Reserva feita para o dia %s%n", data.format(FORMATO));
    }

    public void reservar(LocalDate data, int pessoas) {
        System.out.printf("Reserva feita para o dia %s para %d pessoas%n", data.format(FORMATO), pessoas);
    }
}
public class ReservaVip extends Reserva {
    @Override
    public void reservar() {
        System.out.println("Reserva vip conofirmada com atendimento exclusivo");
    }
}
1 resposta

Oi, Felipe! Como vai?

Gostei da forma como você aplicou a sobrecarga de métodos na sua resolução, na classe Reserva, criando diferentes possibilidades para realizar a reserva conforme os parâmetros recebidos. Também foi uma boa iniciativa utilizar o DateTimeFormatter para tratar a entrada da data. Como o tema da atividade envolve herança, interfaces e polimorfismo, vale observar que a classe ReservaVip foi criada corretamente com a sobrescrita do método reservar(), mas ela ainda não está sendo utilizada na classe Principal. Experimente criar um objeto de ReservaVip e chamar o método para ver o comportamento do polimorfismo na prática.

Continue praticando, pois pequenos testes como esse ajudam a fixar os conceitos de orientação a objetos.

Dica: crie uma variável do tipo Reserva apontando para uma instância de ReservaVip e chame o método reservar(). Assim, você verá na prática como o polimorfismo faz com que a versão sobrescrita do método seja executada.

Você chegou a testar a classe ReservaVip no Principal para comparar o resultado com a classe Reserva?

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!