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.
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()));
}
}
}