Já vimos que as características que consideramos relevantes acerca de um jogador são o seu nome, a sua pontuação e número máximo de pontos que obteve numa só jogada.
Não nos interessa, neste contexto, a altura do jogador, nem o seu NIF, nem se tem irmãos, etc. Noutros contextos poderá até haver interesse em representar também estas informações, mas aqui não.
O universo possível de objetos do tipo Jogador
será então formado por todas as combinações de valores para aquelas características, ou atributos, ou seja, todas as formas possíveis que um jogador pode tomar.
A informação que permite caracterizar um dado objeto e, eventualmente, distingui-lo dos outros, constitui o que se chamam atributos do objeto.
São os valores que os atributos de um dado objeto têm que definem o estado desse objeto.
Porque cada instância da classe, ou objeto, tem os seus próprios valores para os atributos, estes dizem-se atributos de instância (em oposição aos atributos de classe de que falaremos mais adiante).
Vamos então começar
xpublic class Jogador {
private String nome;
private int pontuacao;
private int maximoJogada;
// Ainda nao estah completa
}
Os atributos de instância declaram-se dentro do bloco da classe, fora de qualquer método, pois eles não são locais a nenhum método; eles são acessíveis a partir de qualquer método da classe Jogador
.
Colocamos a palavra private
a preceder a declaração de cada atributo
assim escondemos os pormenores de representação de cada objeto,
a manipulação indevida dos valores dos atributos é assim impossível,
se em vez de private
tivéssemos a palavra public
, então em qualquer classe cliente de Jogador
os atributos poderiam ser alterados diretamente
main
da classe ClienteDeJogador
poderíamos ter a instrução meuJogador.pontuacao = -47;
, que alteraria para -47 o valor do atributo pontuacao
do objeto referenciado pela variável meuJogador
; isto não é desejável...se em vez de private
não tivéssemos colocado nenhuma palavra, então qualquer classe cliente definida no mesmo pacote (package) que a classe Jogador
poderia aceder diretamente aos atributos.
Representamos um objeto:
como um retângulo dividido em tantas linhas quantas o número de atributos que tem;
os nomes dos atributos são apresentados no lado esquerdo de cada linha;
os valores dos atributos representam-se no lado direito de cada linha:
Exemplo:
Anterior: 10.1. O tipo de dados Jogador
Seguinte: 10.3. Construtores