Linguagem de Programação Java
Seja um Profissional Aprendendo com Profissionais
www.3way.com.br 88
private double x2; private double y1; private double y2;
public Linha(double x1, double x2, double y1, double y2) { this.x1 = x1;
this.x2 = x2; this.y2 = y2; this.y1 = y1; }
public double tamanho() { double tamanho = Math
.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1)); return tamanho;
}
public boolean maiorQue(Object a, Object b) { double ca = ((Linha) a).tamanho();//casting double cb = ((Linha) b).tamanho();//casting return (ca > cb);
}
public boolean menorQue(Object a, Object b) { double ca = ((Linha) a).tamanho();//casting double cb = ((Linha) b).tamanho();//casting return (ca < cb);
}
public boolean igualA(Object a, Object b) {
double ca = ((Linha) a).tamanho();//casting double cb = ((Linha) b).tamanho();//casting return (ca == cb);
} }
Listagem 7.35 – Implementando interface Relacao na classe Linha
Quando a classe implementa uma interface ela aceita o contrato da interface, então ela têm que implementar todos os métodos definidos na interface, caso contrário o compilador Java emitirá um erro de compilação. Da mesma forma também implementamos a classe MeuInteger:
public class MeuInteger implements Relacao { Integer valor;
public MeuInteger(int valor){ this.valor=valor;
}
private int valor(){
return valor.intValue(); }
public boolean maiorQue(Object a, Object b) { int ca = ((MeuInteger) a).valor();//casting int cb = ((MeuInteger) b).valor();//casting return (ca > cb);
}
public boolean menorQue(Object a, Object b) { int ca = ((MeuInteger) a).valor();//casting int cb = ((MeuInteger) b).valor();//casting return (ca < cb);
//atribuindo valor a variável referência Carro carro1 = new Carro();
carro1.ano = "2001"; carro1.modelo= "fusca"; carro1.cor = "prata";
Figura 2.4 – Layout Memória após inicialização //criando novo alias
Carro carro2 = carro1;
Figura 2.5 – Layout Memória duas variáveis referência para o mesmo objeto
2.3 Membros de Instância
Cada objeto criado deverá ter sua própria instância de variáveis (atributos) definidas pela classe. Os métodos definem o comportamento de um objeto. Isto é importante, pois denota que um método pertence a cada objeto da classe. Porém não devemos confundir isto com a implementação do método, que é compartilhada por todas as instâncias da classe.
2.3.1 Invocação de Métodos
Objetos se comunicam pela troca de mensagens, isto significa que um objeto pode ter que mostrar um comportamento particular invocando uma operação apropriada que foi definida no objeto. Em Java, isto é feito pela
chamada de um método em um objeto usando o operador binário "." (ponto),
devendo especificar a mensagem completa: o objeto que é o recebedor da mensagem, o método a ser invocado e os argumentos para o método (se houver). O método invocado no recebedor pode também enviar informações de volta ao objeto chamador através de um valor de retorno. O método chamado deve ser um que esteja definido pelo objeto.
Os valores das variáveis em um objeto constituem
o seu estado. Dois objetos distintos têm
o mesmo estado se suas variáveis membro têm os
mesmos valores.
public boolean igualA(Object a, Object b) { int ca = ((MeuInteger) a).valor();//casting int cb = ((MeuInteger) b).valor();//casting return (ca == cb);
} }
Listagem 7.36 – Implementando interface Relacao na classe MeuInteger 7.10.4 Relacionamento de uma Interface para uma Classe
Como vimos nas seções anteriores, a classe pode implementar uma interface e para isso, deve prover o código de implementação para todos os métodos definidos na interface.
Outro detalhe a se notar na relação entre uma interface e uma classe, é que a classe pode apenas herdar uma única superclasse, mas pode implementar diversas
interfaces. Um exemplo de uma classe que implementa diversas interfaces:
public class Pessoa implements IPessoa, IVivente, IQualquerUm { // algumas linhas de código
}
Outro exemplo de uma classe que estende de outra superclasse e implementa interfaces:
public class EstudanteComputacao extends Estudante implements IPessoa,IVivente {
// algumas linhas de código }
Uma interface não faz parte de uma hierarquia de classes. Classes não relacionadas podem implementar a mesma interface.
7.10.5 Herança entre Interfaces
Interfaces não são partes de uma hierarquia de classes. Entretanto, interfaces podem ter relacionamentos
entre si. Por exemplo, suponha que tenhamos duas interfaces, IEstudante e IPessoa. Se IEstudante estende IPessoa,
esta herda todos os métodos declarados em IPessoa.
public interface IPessoa { ...
}
public interface IEstudante extends IPessoa { ...
}
Além disto, interfaces podem ter herança múltipla, exemplo:
interface IPessoa{}
interface IQualquerOutroInterface{} interface IEstudante extends
IPessoa,IQualquerOutroInterface { //...
}
Uma classe que implementa uma interface tem que implementar o código
para todos os métodos definidos na
interface.
Interface pode ser utilizada como declaração de um tipo
de váriavel, apesar de não poder ser
Linguagem de Programação Java
Seja um Profissional Aprendendo com Profissionais
www.3way.com.br 12
//atribuindo valor a variável referência Carro carro1 = new Carro();
carro1.ano = "2001"; carro1.modelo= "fusca"; carro1.cor = "prata";
Figura 2.4 – Layout Memória após inicialização //criando novo alias
Carro carro2 = carro1;
Figura 2.5 – Layout Memória duas variáveis referência para o mesmo objeto
2.3 Membros de Instância
Cada objeto criado deverá ter sua própria instância de variáveis (atributos) definidas pela classe. Os métodos definem o comportamento de um objeto. Isto é importante, pois denota que um método pertence a cada objeto da classe. Porém não devemos confundir isto com a implementação do método, que é compartilhada por todas as instâncias da classe.
2.3.1 Invocação de Métodos
Objetos se comunicam pela troca de mensagens, isto significa que um objeto pode ter que mostrar um comportamento particular invocando uma operação apropriada que foi definida no objeto. Em Java, isto é feito pela
chamada de um método em um objeto usando o operador binário "." (ponto),
devendo especificar a mensagem completa: o objeto que é o recebedor da mensagem, o método a ser invocado e os argumentos para o método (se houver). O método invocado no recebedor pode também enviar informações de volta ao objeto chamador através de um valor de retorno. O método chamado deve ser um que esteja definido pelo objeto.
Os valores das variáveis em um objeto constituem
o seu estado. Dois objetos distintos têm
o mesmo estado se suas variáveis membro têm os
mesmos valores.