![]() |
|||||
![]() Planilha Web - Planilhas e Calculadoras online para estudantes e profissionais de Engenharia Civil, Engenharia Elétrica e Engenharia Mecânica. |
|||||
|
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: 567 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(): 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(): 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: 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: 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 |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |