• Nenhum resultado encontrado

99Todos os direitos reservados a 3Way Networks

No documento Linguagem Java COMPLETA (páginas 99-101)

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.

101

No documento Linguagem Java COMPLETA (páginas 99-101)

Documentos relacionados