IFCE – Campus Cedro
Integrado em Informática Programação Orientada a Objetos
Prof. Eng. Derig Almeida Vidal
Mestre em Computação Aplicada, Engenheiro de Produção e Tecnólogo em Automática
Aula 10
Métodos Construtores e Polimorfismo
Prof. Derig Almeida Vidal IFCE - Cedro
Sumário
• Métodos Construtores
• Exemplos
• Polimorfismo
• Exemplos
• Exercícios
• Bibliografia
Métodos Construtores
• Os métodos construtores são criados para garantir
que os objetos serão inicializados de forma correta.
• Pode haver, numa mesma classe, vários métodos
construtores, entretanto, é necessário que cada um
tenha uma quantidade diferente de parâmetros ou
que os tipos de parâmetros sejam diferentes.
Métodos Construtores
• O construtor tem o mesmo nome da classe e é
sempre executado quando o objeto é criado.
• Um método construtor default é o método sem
parâmetros.
• O método construtor não retorna valor e não pode
ser chamado diretamente.
Prof. Derig Almeida Vidal IFCE - Cedro
Exemplo 01 – Classe sem construtor
public class Livro0 { private String titulo; private int pag; private float preco;
public void mostrarDados() {
System.out.println("Título = " + titulo + "\nPáginas = " + pag + "\nPreço = " + preco);
}
public static void main(String args[]) { Livro0 liv = new Livro0(); liv.mostrarDados(); }
}
Prof. Derig Almeida Vidal IFCE - Cedro
Exemplo 02 – Classe com construtor
public class Livro0 { private String titulo; private int pag; private float preco;
public Livro0() {
titulo = "OO com Java"; pag = 459;
preco = (float)312.56; }
public void mostrarDados() {
System.out.println("Título = " + titulo + "\nPáginas = " + pag + "\nPreço = " + preco);
}
Prof. Derig Almeida Vidal IFCE - Cedro
Exemplo 02 – Classe com construtor
public static void main(String args[]) { Livro0 liv = new Livro0(); liv.mostrarDados(); }
}
Prof. Derig Almeida Vidal IFCE - Cedro
Métodos Construtores
• Nota-se que a diferença entre eles é que no
primeiro exemplo não foi definido um método
construtor. Assim, o construtor executado é o
default, onde os atributos são inicializados com
zero para tipos de dados numéricos e vazio para
caracteres.
• A saída de dados do primeiro exemplo é:
– Título =
– Páginas = 0
– Preço = 0.0
Prof. Derig Almeida Vidal IFCE - Cedro
Métodos Construtores
• No segundo exemplo, o método construtor foi
definido e será executado quando for
instanciada a classe. Ou seja, os atributos serão
inicializados com os valores definidos no método
construtor.
• A saída de dados do segundo exemplo é:
– Título = OO com Java
– Páginas = 459
– Preço = 312.56
Prof. Derig Almeida Vidal IFCE - Cedro
Polimorfismo
• Polimorfismo é a capacidade de um objeto enviar
uma mensagem genérica para muitos outros
objetos; ou seja, um mesmo nome de método é
usado em diferentes classes ou usado na mesma
classe com quantidade de parâmetros diferentes
ou tipos de parâmetros diferentes.
• Quando o método polimórfico estiver na mesma
classe, o objeto saberá qual método executar pela
quantidade de parâmetros passados na chamada,
porque é necessário especificar os parâmetros a
serem utilizados.
Polimorfismo
• Logicamente, métodos polimórficos possuem
implementações diferentes.
• Ao criar o objeto, o método construtor a ser
executado dependerá da quantidade de
parâmetros passados na criação.
Exemplo 03 – Polimorfismo
public class Retangulo { private float base, alt; public Retangulo() {
base = 5; alt = 20; }
public Retangulo(float b, float a) { base = b; alt = a; }
public void mostrarArea() {
System.out.println("\nÁrea = " + base * alt); }
public static void main(String args[]) {
Retangulo ret1 = new Retangulo(10,2); Retangulo ret2 = new Retangulo(); ret1.mostrarArea();
Prof. Derig Almeida Vidal IFCE - Cedro
Exemplo 04 – Polimorfismo
public class Conta {
private String nConta, nAgencia; private float saldo;
private int numCheque; public Conta() {
nConta = "1034-5"; nAgencia = "234-X"; saldo = 100000; numCheque = 85534; }
public void mostrarCheque() {
System.out.println("\nNº Cheque: " + numCheque); }
public void imprimirCheque() { numCheque = numCheque + 20; }
public void imprimirCheque( int qtd ) { numCheque = numCheque + qtd;
} Prof. Derig Almeida Vidal
IFCE - Cedro
Exemplo 04 – Polimorfismo
public static void main(String args[]) { Conta cta = new Conta();
cta.imprimirCheque(); cta.mostrarCheque(); cta.imprimirCheque(10); cta.mostrarCheque(); } }
Prof. Derig Almeida Vidal IFCE - Cedro
Polimorfismo
• Havendo métodos polimórficos em classes
diferentes; o objeto saberá qual método executar,
porque ele executará o método de sua classe.
• Observando o exemplo a seguir, nota-se que existe
dois métodos polimórficos mostrarArea(), um na
classe Reta e outro na classe Para.
Prof. Derig Almeida Vidal IFCE - Cedro
Exemplo 05 – Polimorfismo
import javax.swing.JOptionPane; class Reta {
private float base, altura; public Reta() { base = Float.parseFloat( JOptionPane.showInputDialog("Base: ")); altura = Float.parseFloat( JOptionPane.showInputDialog("Altura: ")); }
public void mostrarArea() {
JOptionPane.showMessageDialog(null, "Área do Retângulo = " + (base * altura)); }
Prof. Derig Almeida Vidal IFCE - Cedro
Exemplo 05 – Polimorfismo
class Para {
private float altura, largura, compr; public Para() { altura = Float.parseFloat( JOptionPane.showInputDialog("Altura: ")); largura = Float.parseFloat( JOptionPane.showInputDialog("Largura: ")); compr = Float.parseFloat( JOptionPane.showInputDialog("Comprimento: ")); }
public void mostrarArea() { float area = 2 * (altura * largura + altura * compr + largura * compr); JOptionPane.showMessageDialog(null, "Área do Paralelepipedo = " + area); }
} Prof. Derig Almeida Vidal
IFCE - Cedro
Exemplo 05 – Polimorfismo
public class Poli01 {
public static void main (String args[]) { Reta reta1 = new Reta();
Para para1 = new Para();
reta1.mostrarArea();
para1.mostrarArea(); }
}
Exercício
1. O que será apresentado pelo programa abaixo?
class CA {
public CA() { System.out.println("ASTRA"); } public void MA1() { System.out.println("CORSA"); } public void MA2() { System.out.println("VECTRA"); } } class CB {
public CB() { System.out.println("POLO"); } public void MB1() { System.out.println("GOL"); } public void MA2() { System.out.println("GOLF"); } } public class JavaOO_0201 {
public static void main(String args[]) { CA a = new CA(); CB b = new CB();
a.MA1(); a.MA2(); b.MB1(); b.MA2(); }
Exercício
2. O que será apresentado pelo programa abaixo?
class COR {
public COR() { System.out.println("PRETO"); } public COR(int x) { System.out.println("ROSA"); }
public void COLORIR() { System.out.println("BRANCO");} } class CORES {
public CORES() { System.out.println("AMARELO"); } public void COLORIR() { System.out.println("AZUL"); } } public class JavaOO_0202 {
public static void main(String args[]) {
CORES a = new CORES(); COR b = new COR(1); a.COLORIR(); COR c = new COR(); c.COLORIR(); b.COLORIR();
Prof. Derig Almeida Vidal IFCE - Cedro
Exercício
3. Dadas as seguintes classes, o que será
apresentado pelo programa abaixo?
class COR { class Uni {
public Uni() { System.out.println("ZERO"); } public Uni(int x) { System.out.println("UM"); } public void write() { System.out.println("DOIS"); } public void read() { System.out.println("TRES"); } }
class Dez {
public Dez(int y) { System.out.println("ONZE"); } public Dez(String z) { System.out.println("DOZE"); } public void write() {System.out.println("DEZESSETE");} public void read() { System.out.println("DUZENTOS"); } }
Prof. Derig Almeida Vidal IFCE - Cedro
Exercício
3. Continuação:
public class JavaOO_0203 {
public static void main(String args[]) { Uni uni1 = new Uni();
Uni uni2 = new Uni(1); Dez dez2 = new Dez(10); Dez dez3 = new Dez("10"); uni1.write(); dez2.read(); uni2.read(); dez3.write(); } }
Prof. Derig Almeida Vidal IFCE - Cedro
Exercício
4. Com base nas classes Uni e Dez do exercício
anterior, o que será apresentado pelo programa
abaixo?
public class JavaOO_0204 {
public static void main(String args[]) { Dez dez1 = new Dez(10);
Uni uni1 = new Uni(); Uni uni2 = new Uni(1); Dez dez2 = new Dez("10"); dez2.write(); uni2.read(); uni1.write(); dez1.read(); } }
Prof. Derig Almeida Vidal IFCE - Cedro
Exercício
5. Dadas as seguintes classes, o que será
apresentado pelo programa abaixo?
class Circulo { protected int raio;
public Circulo(int r) { raio = r; } public Circulo() {
raio = 0; mostrar(); }
public void circular(int v1, int v2) { raio = v1 + v2;
mostrar(); }
public void mostrar() {
System.out.println("Círculo = " + raio); } }
Prof. Derig Almeida Vidal IFCE - Cedro
Exercício
5. Continuação
class Esfera { protected int raio;
public Esfera(int r) { raio = r * 4;
mostrar(); }
public void circular(int v1) { raio = v1 * 5;
mostrar(); }
public void desenhar() {
System.out.println("desenhando"); } public void mostrar() {
System.out.println("Esfera = " + raio); } }
Prof. Derig Almeida Vidal IFCE - Cedro
Exercício
5. Continuação
public class JavaOO_0205 {
public static void main(String args[]) { Circulo circulo1 = new Circulo(); circulo1.circular(10,20);
Esfera esfera2 = new Esfera(83); esfera2.circular(3);
Circulo circulo2 = new Circulo(9); circulo2.circular(3,5); esfera2.desenhar(); esfera2.circular(7); circulo2.circular(4,6); } }
Exercício
6. Com base nas classes Circulo e Esfera do
exercício anterior, o que será apresentado pelo
programa abaixo?
public class JavaOO_0206 {
public static void main(String args[]) { Esfera esfera1 = new Esfera(8); esfera1.circular(5);
Circulo circulo1 = new Circulo(); circulo1.circular(4,8);
Circulo circulo2 = new Circulo(10); circulo2.circular(15,7);
esfera1.circular(7); circulo1.circular(2,9); esfera1.desenhar();