Pessoal, eu preciso de ajuda para desenvolver um código em java que resolva esse desafio. Seria de grande ajuda pra mim. Obrigado
Herança Múltipla
8 Respostas
Pessoal, eu preciso de ajuda para desenvolver um código em java que resolva esse desafio. Seria de grande ajuda pra mim. Obrigado
http://www.inf.pucrs.br/manssour/LinguagemC++/HerancaMultipla.pdf
E o que você já fez ? 
E só para deixar claro, não existe Herança Multipla em Java, portanto, terá que buscar outras alternativas.
P.s: não li o problema.
Eu dei uma pesquisada, sei que devo usar Interface, mas nao sei implementar
Olá, não li todo o desafio, mas lhe adianto que no java não existe herança múltipla, não há como um objeto estender de dois ou mais objetos, um objeto pode implementar uma ou mais interfaces mas não estender de duas ou mais classes, se o desafio for necessariamente baseado em herança múltipla não será possível fazer, se você tiver autonomia para chegar ao objetivo do desfio utilizando outros recursos acredito que será possível usando Java.
Já temos uma saída 
Isso significa que algo tu pesquisou, isso é bom.
Mas não vou ler o PDF todo, podes resumidamente, descrever o problema e o que tu já fez ? 
Para exemplificar, considere a definição de uma classe “clock”, cujos objetos armazenam o tempo, e uma
classe “calendar”, cujos objetos armazenam a data. Pode-se então usar a herança múltipla para derivar uma
nova classe “clock_calendar”, cujos objetos armazenam ambos, o tempo e a data.
Eu Já cria a classe clock e a classe calendar, agora falta criar a terceira classe.
O PDF só descreve a implementação de herança múltipla em C++ e seus problemas. Não diz o que o Daniel deseja fazer.
Eu dei uma pesquisada, sei que devo usar Interface, mas nao sei implementar
por exemplo, a interface alutomóvel
public interface Automovel {
void acelerar();
}
implementando-a
public class Gol implements Automovel {
void acelerar(){}
}
public class Saveiro implements Automovel {
void acelerar(){}
}
Você pode utilizar interfaces e composição para simular o que você quer.
Fiz o código abaixo como exemplo:
package teste.gambi;
import java.util.Calendar;
interface InterfaceCalendario {
public void setDia(int dia);
public void setMes(int mes);
public void setAno(int ano);
public int getDia();
public int getMes();
public int getAno();
}
interface InterfaceRelogio {
public void setHora(int hora);
public void setMinuto(int minuto);
public void setSegundo(int segundo);
public int getHora();
public int getMinuto();
public int getSegundo();
}
class RelogioDefault implements InterfaceRelogio{
private int hora, minuto, segundo;
public RelogioDefault() {
super();
Calendar c = Calendar.getInstance();
setHora(c.get(Calendar.HOUR));
setMinuto(c.get(Calendar.MINUTE));
setSegundo(c.get(Calendar.SECOND));
}
public RelogioDefault(Calendar c) {
super();
setHora(c.get(Calendar.HOUR));
setMinuto(c.get(Calendar.MINUTE));
setSegundo(c.get(Calendar.SECOND));
}
@Override
public void setHora(int hora) {
this.hora = hora;
}
@Override
public void setMinuto(int minuto) {
this.minuto = minuto;
}
@Override
public void setSegundo(int segundo) {
this.segundo = segundo;
}
@Override
public int getHora() {
return this.hora;
}
@Override
public int getMinuto() {
return this.minuto;
}
@Override
public int getSegundo() {
return this.segundo;
}
@Override
public String toString() {
return "RelogioDefault [hora=" + hora + ", minuto=" + minuto
+ ", segundo=" + segundo + "]";
}
}
class CalendarioDefault implements InterfaceCalendario {
private int dia, mes, ano;
public CalendarioDefault() {
super();
Calendar c = Calendar.getInstance();
setDia(c.get(Calendar.DATE));
setMes(c.get(Calendar.MONTH));
setAno(c.get(Calendar.YEAR));
}
public CalendarioDefault(Calendar c) {
super();
setDia(c.get(Calendar.DATE));
setMes(c.get(Calendar.MONTH));
setAno(c.get(Calendar.YEAR));
}
@Override
public int getDia() {
return dia;
}
@Override
public void setDia(int dia) {
this.dia = dia;
}
@Override
public int getMes() {
return mes;
}
@Override
public void setMes(int mes) {
this.mes = mes;
}
@Override
public int getAno() {
return ano;
}
@Override
public void setAno(int ano) {
this.ano = ano;
}
@Override
public String toString() {
return "CalendarioDefault [dia=" + dia + ", mes=" + mes + ", ano="
+ ano + "]";
}
}
interface SuperGambiHeranca extends InterfaceRelogio, InterfaceCalendario{
public InterfaceCalendario getCalendarioDelegate();
public InterfaceRelogio getRelogioDelegate();
public void setRelogioDelegate(InterfaceRelogio relogioDelegate);
public void setCalendarioDelegate(InterfaceCalendario calendarioDelegate);
}
public class TesteGambi implements SuperGambiHeranca{
private InterfaceRelogio relogioDelegate;
private InterfaceCalendario calendarioDelegate;
public TesteGambi() {
Calendar c = Calendar.getInstance();
setRelogioDelegate(new RelogioDefault(c));
setCalendarioDelegate(new CalendarioDefault(c));
}
public InterfaceRelogio getRelogioDelegate() {
return relogioDelegate;
}
public void setRelogioDelegate(InterfaceRelogio relogioDelegate) {
this.relogioDelegate = relogioDelegate;
}
public InterfaceCalendario getCalendarioDelegate() {
return calendarioDelegate;
}
public void setCalendarioDelegate(InterfaceCalendario calendarioDelegate) {
this.calendarioDelegate = calendarioDelegate;
}
public void setHora(int hora) {
relogioDelegate.setHora(hora);
}
public void setMinuto(int minuto) {
relogioDelegate.setMinuto(minuto);
}
public void setSegundo(int segundo) {
relogioDelegate.setSegundo(segundo);
}
public int getHora() {
return relogioDelegate.getHora();
}
public int getMinuto() {
return relogioDelegate.getMinuto();
}
public int getSegundo() {
return relogioDelegate.getSegundo();
}
public void setDia(int dia) {
calendarioDelegate.setDia(dia);
}
public void setMes(int mes) {
calendarioDelegate.setMes(mes);
}
public void setAno(int ano) {
calendarioDelegate.setAno(ano);
}
public int getDia() {
return calendarioDelegate.getDia();
}
public int getMes() {
return calendarioDelegate.getMes();
}
public int getAno() {
return calendarioDelegate.getAno();
}
@Override
public String toString() {
return "TesteGambi [relogioDelegate=" + relogioDelegate
+ ", calendarioDelegate=" + calendarioDelegate + "]";
}
public static void main(String[] args) {
SuperGambiHeranca objGambiHeranca = new TesteGambi();
System.out.println(objGambiHeranca.toString());
InterfaceRelogio relogio = (InterfaceRelogio) objGambiHeranca.getRelogioDelegate();
InterfaceCalendario calendario = (InterfaceCalendario) objGambiHeranca.getCalendarioDelegate();
System.out.println(relogio.toString());
System.out.println(calendario.toString());
}
}