30.06.2013 Views

Apostila Java

Apostila Java

Apostila Java

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Encapsulamento e sobrecarga de<br />

métodos<br />

Esta seção apresenta o controle sobre a acessibilidade dos membros de uma classe e a<br />

implementação de classes com comportamento dinâmico através da sobrecarga de<br />

métodos.<br />

Acessibilidade dos membros de uma classe<br />

Considere a criação de uma classe, por exemplo, a classe Avaliacao vista na aula passada. Quando<br />

instanciamos um objeto da classe Avaliacao, seus membros podem acessados por quaisquer outros<br />

objetos presentes na Máquina Virtual <strong>Java</strong> (JVM). Isso é definido pelo modificador public que antecede a<br />

declaração desses membros.<br />

// Acessando os membros da classe carteira de estudante:<br />

Avaliacao notas = new Avaliacao();<br />

// Note que um valor inválido pode ser atribuído<br />

// a um membro público de uma classe<br />

notas.trabalhos[0] = -4.5F; // Nota menor que zero<br />

notas.provas[1] = 20F; // Nota maior que 10<br />

9<br />

Algumas vezes, entretanto, precisamos evitar que valores inválidos ou comportamentos inválidos sejam<br />

atribuídos aos membros de uma classe. No exemplo acima, uma nota jamais poderia ser negativa ou<br />

maior que dez. Como os membros da classe Avaliacao são todos públicos, a consistência desses<br />

membros deve ser garantida externamente ao código da classe, o que torna a consistência dos objetos<br />

dessa classe muito frágil.<br />

Para contornar isso, a Orientação a Objetos define outras formas de acessibilidade aos membros de uma<br />

classe, através dos modificadores final, protected e private. Através desses modificadores, o<br />

programador pode ENCAPSULAR os membros de uma classe, de forma a garantir a sua consistência. O<br />

membro de uma classe pode ser:<br />

o Público – declarado com o modificador public, e acessível por qualquer objeto instanciado na<br />

máquina virtual. Normalmente declaramos públicos apenas alguns métodos de uma classe. Os<br />

membros variáveis são todos declarados privados, salvo raras exceções.<br />

o Privado – declarado com o modificador private, e acessível somente por métodos da de objetos<br />

da própria classe onde o membro foi declarado.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!