Galera, já tendo as fórmulas em mãos, como eu posso colocar métodos que calculam a diagonal do quadrado e do retângulo na classe Diagonal que é uma interface??
public abstract class Poligono extends Figura {
private int base;
private int altura;
public Poligono(int base, int altura) {
this.base = base;
this.altura = altura;
}
@Override
public double area() {
return 0;
}
public int getBase() {
return base;
}
public void setBase(int base) {
this.base = base;
}
public int getAltura() {
return altura;
}
public void setAltura(int altura) {
this.altura = altura;
}
public abstract int base();
public abstract int altura();
}
`public class Quadrado extends Poligono {`
public Quadrado(int altura, int base) {
super(altura, base);
}
@Override
public int base() {
return 0;
}
@Override
public int altura() {
return 0;
}
}
public interface Diagonal {
static double dSquare = 0;
static double dRecta = 0;
}
Você não vai colocar na interface Diagonal. Você vai implementar essa interface nas classes Quadrado e Retangulo e, a partir daí, vai fazer com que cada uma dessas classes implemente de modo específico as funcionalidades definidas na interface Diagonal.
e. Os polígonos Retangulo e Quadrado devem implementar a interface Diagonal,
que deve ter um método que calcula a diagonal.
Está desta forma no exercício, pede para que eu faça o método que calcula a diagonal na Interface Diagonal, só não entendi como vou fazer isso direto na Interface diagonal… ficou mais claro??
Muito bom! Eu só acho que você pode tirar esses métodos: altura() e base()
Agora as classes Quadrado e Retangulo tem as suas proprias formulas para calcular a diagonal.
Vamos ao conceito de polimorfismo.
Polimorfismo é nada mais nada menos que, um objeto ter várias formas, como assim?
Exemplo:
public interface Impressora{
public void imprimir();
}
public class ImpressoraZebra implements Impressora {
public void imprimir() {
System.out.println("Imprimindo pela Zebra");
}
}
public class ImpressoraTérmica implements Impressora{
public void imprimir() {
System.out.println("Imprimindo pela Térmica");
}
}
Nosso sistema utiliza duas impressoras como pode ver acima, a Zebra e a Térmica.
Ao invés de termos um método para cada tipo de impressora no nosso serviço, podemos utilizar o polimorfismo e com isso executar a impressão de qualquer impressora
public void imprimir(Impressora impressora) {
impressora.imprimir();
}
ImpressoraZebra impressora = new ImpressoraZebra();
//ImpressoraTermica impressora = new ImpressoraTermica();
imprimir(impressora);
As várias formas que eu citei anteriormente, esta no parâmetro, pois como a nossa Impressora Zebra ou a Térmica implementa Impressora, ela se comporta como uma Impressora e com isso podemos passa-la em qualquer lugar que precisa de uma Impressora.
Agora tente aplicar as mesmas técnicas, só que para as suas classes
É possível fazer isso com classes herdadas também, ao invés de só interfaces
EDIT: Talvez utilizar a impressora como interface não tenha sido a melhor coisa a se fazer, mas o fundamento é o mesmo
Perfeito cara, obrigado pelo tempo e dedicação de me explicar, pode ter certeza que peguei o conceito agora.
Tá quase pronto aqui, só vou fazer um ArrayList e terminar o exercício, muuuuito obrigado mano, sucessooo!