• Nenhum resultado encontrado

63Todos os direitos reservados a 3Way Networks

No documento Linguagem Java COMPLETA (páginas 63-65)

Linguagem de Programação Java

Seja um Profissional Aprendendo com Profissionais

www.3way.com.br 55

return result; }

}

public class EstudanteExemplo {

public static void main(String[] args) {

// criar instâncias de objetos para Estudante Estudante annaRegistro = new Estudante(); Estudante beahRegistro = new Estudante(); Estudante crisRegistro = new Estudante();

// modifica estado, atributo nome dos estudantes annaRegistro.nome = "Anna";

beahRegistro.nome = "Beah"; crisRegistro.nome = "Cris";

annaRegistro.endereco = "Brasil"; beahRegistro.endereco = "Filipinas"; crisRegistro.endereco = "EUA"; // alterar notas da anna

annaRegistro.matematicaPontos = 6.5; annaRegistro.portuguesPontos = 8.9; annaRegistro.cienciaPontos = 9.5; // mostrar o nome de anna

System.out.println(annaRegistro.nome); // mostrar a media da anna

System.out.println("Media=" + annaRegistro.getMedia()); }

}

Listagem 7.1 – Criando uma classe

7.1.3 Métodos de Instância e a Referência this

Métodos de instância são compartilhados entre objetos da mesma classe, diferentemente das variáveis de instância onde se tem uma para cada objeto. Deste modo deve haver alguma "mágica" para que o interpretador Java saiba qual referência está invocando um método! E há, a grosso modo, toda invocação de método passa, além dos parâmetros formais, um argumento extra que é a referência do objeto chamador do método. Para entender isso melhor, tomemos o método

setIdade(int i) como exemplo, ao ser invocado os argumentos passados ao método

seriam como em setIdade(refobjeto, 10), onde refobjeto é a referência do objeto chamador. Isto é feito de forma implícita por Java. Não espere que o compilador Java aceite chamadas como esta em seu código. O exemplo é para te dar uma idéia do que acontece.

Suponha que você esteja dentro de um método e queira obter a referência para o objeto corrente, como fazer? Para este propósito podemos usar a palavra chave this. A palavra chave this — que só pode usada dentro de um método - contém a referência para o objeto cujo método está sendo chamado. Você pode tratar esta referência como qualquer outra referência a objeto. Perceba que, se você está chamando um método mA() de uma classe a partir de outro método mB() da mesma classe, você não precisa usar this. Você simplesmente invoca o método. A referência this corrente é automaticamente usada pelo outro método.

A referência this é de grande utilidade em situações onde o nome de uma variável local conflita com o nome da variável de instância. Por exemplo:

Métodos de instância são compartilhados entre objetos da mesma classe, diferentemente das variáveis de instância onde se tem uma para

cada objeto. .

//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.

class Estudante{ int idade;

public void setIdade(int idade){

idade = idade; // Não é uma boa prática }

}

O nome do argumento nesta declaração éidade(linha 3), que tem o mesmo nome do atributo de objeto

idade(linha 2). Já que o argumentoidadeé local ao método, o valor do argumentoidadeserá usado, na instrução: idade = idade;

Neste caso estamos simplesmente associando o valor do argumentoidade para si mesmo! Isto não é o que queremos que aconteça neste código. A fim de corrigir esse equivoco, usamos a referência this para fazer a distinção entre os nomes. Para utilizar a referênciathis, digitamos:

this.<nomeDoAtributo>

O ideal é reescrever o nosso método do seguinte modo:

public void setIdade(int idade){ this.idade = idade;

}

Este método irá atribuir o valor do argumento idade para o atributo de objeto idade do objeto Estudante.

7.1.4 Sobrecarga de Métodos (Overloading)

Nas nossas classes, podemos necessitar de criar métodos que tenham os mesmos nomes, mas que funcionem de maneira diferente dependendo dos argumentos que informamos. Esta capacidade é chamada de SOBRECARGA (ou

overloading em inglês) de métodos.

Sobrecarga de métodos permite que um método com o mesmo nome, entretanto com diferentes tipos ou quantidade de argumentos, possa ter implementações diferentes e retornar valores de diferentes tipos. Ao invés de inventar novos nomes todas as vezes, a sobrecarga de métodos pode ser utilizada quando a mesma operação tem implementações diferentes.

Por exemplo, na nossa classe Estudante, queremos ter um método que mostre as informações sobre o estudante. Entretanto, queremos que o métodoprint

mostre dados diferentes dependendo dos argumentos que lhe informamos.

Por exemplo, quando não enviamos qualquer argumento queremos que o métodoprint mostre o nome, endereço e idade do estudante. Quando passamos um argumento do tipoString, queremos que o método mostre esta String mais o nome e as notas do estudante.

Teremos os seguintes métodos dentro da nossa classeEstudante:

public void print(){

System.out.println("nome:" + nome);

System.out.println("endereco:" + endereco); System.out.println("idade:" + idade);

}

Sobrecarga de métodos permite que um método com o mesmo nome,

entretanto com diferentes tipos ou

quantidade de argumentos, possa ter

implementações diferentes e retornar valores de diferentes

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.

65

No documento Linguagem Java COMPLETA (páginas 63-65)

Documentos relacionados