Atividade em Java

então amigos, tô começando com java porém peguei uma questão que fiquei meio perdido, será que alguém pode me ajudar nessa questão?

Crie uma classe abstrata chamada CartaoWeb. Essa classe representa todos os tipos de cartões web contendo apenas um atributo:
destinatario (String). Nessa classe você deverá também declarar o método abstrato retornarMensagem(String remetente).

  • Crie três classes filhas (sub-classes) da classe CartaoWeb:
    a) DiaDosNamorados
    b) Natal
    c) Aniversario.
  • Cada uma dessas classes deve conter um método construtor que receba o nome do destinatário do cartão. Cada classe também deve
    implementar o método retornarMensagem(String remetente), retornando uma mensagem ao usuário com o nome do destinatário, um
    texto que seja específico para a data de comemorativa do cartão, acrescido do remetente ao final da mensagem. Por exemplo, essa
    poderia ser uma mensagem de um cartão de dia dos namorados:
    “Querida Maria,
    Feliz Dia dos Namorados!
    Espero que esse tenha sido o único cartão do dia dos namorados que tenha ganhado nessa data!” De todo meu coração,
    João”
  • No método main da classe Principal, crie um único array de CartaoWeb. Insira de forma alternada, instâncias dos 3 tipos de cartões
    neste array. Em seguida, use um laço de repetição para exibir as mensagens dos cartões, chamando o método
    mostrarMensagem(String remetente) dos objetos, utilizando como argumento o seu nome para remetente. Utilize os métodos da classe
    JOptionPane para interação com o usuário.

desde já agradeço

Qual a sua dúvida? Faz perguntas ao invés de colar o texto do exercício, assim fica mais fácil de entender e te ajudar!

Por exemplo: “como implementar uma classe abstrata?”, “como implementar herança?”, “como sobrescrever um método?”, etc.

3 curtidas

Para começar, esse exercício está confuso, ora indica o método é retornarMensagem(String remetente), ora que é mostrarMensagem(String remetente). Além disso é mau formulado, por que se deve passar primeiro todos os destinatários, para só então (no laço), passar o remetentes. Bom de qualquer maneira, dá para pensar da seguinte forma:

1 - Cartão Web

public abstract class CartaoWeb  {
	private String destinatario;
	
	/*
	* Métodos de cartão webs
	*/
	protected abstract String retornarMensagem(String remetente);
	
	/*
	* Métodos acessórios e modificadores
	*/
	public void setDestinatario(String destinatario){
		this.destinatario = destinatario;
	}
	
	public String getDestinatario(){
		return destinatario;
	}
}

2 - Cartão do Dia dos Namorados

public class DiaDosNamorados extends CartaoWeb {
	public DiaDosNamorados(String destinatario){
		setDestinatario(destinatario);
	}
	
	protected String retornarMensagem(String remetente){
		return "\n" + getDestinatario() + ", meu amor, " 
			+ "juntos estamos escrevendo a história de amor mais linda de todas.\n" 
			+ "Te amo muito! Feliz Dia dos Namorados!!!\n" 
			+ "Assinado: " + remetente + ".\n";
	}
}

3 - Cartão de Natal

public class Natal extends CartaoWeb {
	public Natal(String destinatario){
		setDestinatario(destinatario);
	}
	
	protected String retornarMensagem(String remetente){
		return "\nFeliz Natal " + getDestinatario() 
			+ " para você e toda a sua família. São os votos mais sinceros de " 
			+ remetente + ".\n";
	}
}

4 - Cartão de Aniversário

public class Aniversario extends CartaoWeb {
	public Aniversario(String destinatario){
		setDestinatario(destinatario);
	}
	
	protected String retornarMensagem(String remetente){
		return "\nFeliz aniversário " + getDestinatario() 
			+ "! Que sua vida seja repleta de felicidade e que seus " 
			+ " sonhos se tornem realidade. Conte sempre comigo. " 
			+ " \nDe:" +  remetente + ".\n";
	}
}

5 - Principal

import javax.swing.JOptionPane;

public class Principal {
	private String lerDestinatario(){
		return JOptionPane.showInputDialog(null, "Destinatário: ", 
			"Cartão Web", JOptionPane.QUESTION_MESSAGE);
	}
	
	private String lerRementente(){
		//String tipo = obj.toString();
		return JOptionPane.showInputDialog(null, "Remetente: ", 
			"Cartão Web", JOptionPane.QUESTION_MESSAGE);
	}
	
	public static void main(String[] args){
		Principal principal = new Principal();
		CartaoWeb[] cartoes = new CartaoWeb[5];
		
		DiaDosNamorados xodo1 = new DiaDosNamorados(principal.lerDestinatario());
		Natal natal1 = new Natal(principal.lerDestinatario());
		Aniversario aniversario = new Aniversario(principal.lerDestinatario());
		Natal natal2 = new Natal(principal.lerDestinatario());
		DiaDosNamorados xodo2 = new DiaDosNamorados(principal.lerDestinatario());
		
		cartoes[0] = xodo1;
		cartoes[1] = natal1;
		cartoes[2] = aniversario;
		cartoes[3] = natal2;
		cartoes[4] = xodo2;
		
		for(short cartao = 0; cartao < cartoes.length; cartao++){
			if(cartoes[cartao] != null)
				System.out.println(cartoes[cartao]
					.retornarMensagem(principal.lerRementente()));
		}
	}
}
1 curtida

Cara, muito obrigado pela ajuda!