Você está aqui: Java ::: Desafios e Lista de Exercícios Resolvidos ::: Programação Orientada a Objetos |
Exemplo de interface e polimorfismo em Java - A interface Forma e as classes Retangulo e Circulo - Exercícios Resolvidos de JavaQuantidade de visualizações: 635 vezes |
|
Pergunta/Tarefa: O objetivo deste exercício é demonstrar como podemos usar polimorfismo para manipular dois objetos diferentes a partir de uma interface em comum. Para isso, crie uma interface Forma contendo dois métodos: area() e perimetro(). Em seguida crie as classes Retangulo e Circulo, que implementam a interface Forma e fornecem suas próprias implementações para os métodos area() e perimetro(), ou seja, demonstre que as formas de calcular a área e o perímetro são diferentes entre os dois objetos. Para finalizar, na classe principal da aplicação Java, crie objetos das classe Retangulo e Circulo e use um objeto da interface Forma para representá-los. Atenção: é permitido criar apenas uma variável do tipo Forma para acessar os dois objetos. Ao fazer isso você estará, obrigatoriamente, usando polimorfismo. Sua saída deverá ser parecida com: Base do retângulo: 5 Altura do retângulo: 3 A área do retângulo é: 15.0 O perímetro do retângulo é: 16.0 Raio do círculo: 4 A área do círculo é: 50.26548245743669 O perímetro do círculo é: 25.132741228718345 Veja a resolução comentada deste exercício usando Java: O primeiro passo é a criação da interface Forma, que declara os métodos area() e perimetro(): ----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------
package estudos;
// definição da interface Forma
public interface Forma {
// método que calcula a área
double area();
// método que calcula o perímetro
double perimetro();
}
Em seguida criamos a classe Retangulo, que implementa a interface Forma e fornece sua própria implementação para os métodos area() e perimetro(): ----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------
package estudos;
// definição da classe Retangulo, que implementa
// a interface Form
class Retangulo implements Forma {
private double base;
private double altura;
// construtor da classe Retangulo
public Retangulo(double base, double altura) {
this.base = base;
this.altura = altura;
}
// vamos sobrescrever o método area() definido na
// interface Forma
@Override
public double area() {
return this.base * this.altura;
}
// vamos sobrescrever o método perimetro() definido na
// interface Forma
@Override
public double perimetro() {
return 2 * (this.base + this.altura);
}
}
Em seguida criamos a classe Circulo, que também implementa a interface Forma e sobrescreve os métodos area() e perimetro(), ou seja, fornece sua própria implementação desses métodos: ----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------
package estudos;
// definição da classe Circulo, que implementa a
// interface Forma
class Circulo implements Forma {
private double raio;
// construtor da classe Circulo
public Circulo(double raio) {
this.raio = raio;
}
// vamos sobrescrever o método area() da
// interface Forma
@Override
public double area() {
return Math.PI * this.raio * this.raio;
}
// vamos sobrescrever o método perimetro() da
// interface Forma
@Override
public double perimetro() {
return 2 * Math.PI * this.raio;
}
}
Finalmente nós criamos a classe principal que nos permitirá criar um retângulo e um círculo e mostramos suas áreas e perímetros. Note o uso de uma variável do tipo Forma para acessar os objetos Retangulo e Circulo. Isso é polimorfismo ao vivo e a cores: ----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------
package estudos;
import java.util.Scanner;
public class Estudos {
public static void main(String[] args) {
// uma referência para a interface Forma
Forma forma;
// para ler a entrada do usuário
Scanner entrada = new Scanner(System.in);
// vamos pedir para o usuário informar a base e a
// altura do retângulo
System.out.print("Base do retângulo: ");
double base = Double.parseDouble(entrada.nextLine());
System.out.print("Altura do retângulo: ");
double altura = Double.parseDouble(entrada.nextLine());
// agora criamos um objeto da classe Retangulo. Note que a
// a variável é do tipo da interface Forma
forma = new Retangulo(base, altura);
// e mostramos a área e o perímetro do retângulo
System.out.println("A área do retângulo é: " + forma.area());
System.out.println("O perímetro do retângulo é: " + forma.perimetro());
// vamos pedir para o usuário informar o raio do círculo
System.out.print("\nRaio do círculo: ");
double raio = Double.parseDouble(entrada.nextLine());
// agora criamos um objeto da classe Circulo. Note que a
// a variável é do tipo da interface Forma
forma = new Circulo(raio);
// e mostramos a área e o perímetro do circulo
System.out.println("A área do círculo é: " + forma.area());
System.out.println("O perímetro do círculo é: " + forma.perimetro());
}
}
|
|
|
Mais Desafios de Programação e Exercícios e Algoritmos Resolvidos de Java |
Veja mais Dicas e truques de Java |
Dicas e truques de outras linguagens |
|
Delphi - Delphi para matemática - Como arredondar valores de ponto-flutuante para cima usando a função Ceil() |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |





