1.1.1.
ATRIBUTOS
No programa anterior, não observamos a criação de nenhum objeto, apenas a declaração da classe HelloInternet que continha o método main. O nosso programa funcionou, porque o método main não precisa de um objeto específico para ser invocado. Este exemplo declara uma classe (Circulo) e em seguida cria um objeto deste tipo em main e altera o conteúdo desta variável. Uma classe é parecida com um record de Pascal, a nossa representa um círculo com os atributos raio e x , y, que são coordenadas cartesianas. Note que este objeto não possui métodos ainda. A classe círculo é especificada em um arATRIBUquivo separado do arquivo da classe que contém o método main (início do programa), um arquivo neste texto é representado pelo retângulo envolvendo um trecho de código, até o tópico ENCAPSULAMENTO DE CLASSES COM PACKAGES cada classe será especificada em um arquivo. É importante entender este exemplo, quando você estudar interfaces gráficas, poderá usar a classe círculo pré-definida na linguagem para desenhar círculos que se movem na tela. Embora não tenhamos explicado com detalhes os tipos básicos da linguagem, usaremos neste exemplo o tipo float (real), e nas explicações o tipo String e o tipo int (inteiro). No final deste tópico forneceremos uma explicação detalhada sobre tipos.
//Classe
principal, Arquivo Principal.Java public class Principal { public static void main(String args[]) {
Circulo
umcirc; //declaracao de uma variavel circulo no metodo main.
umcirc=new Circulo();
//alocacao dessa variavel
System.out.println("("+umcirc.x+","+umcirc.y+","+umcirc.raio+")"); umcirc.x=umcirc.x+17;
System.out.println("("+umcirc.x+","+umcirc.y+","+umcirc.raio+")"); } }
Porque
os matemáticos não gostam de C, C++, Java
e Basic: A declaração umcirc.x=umcirc.x+17 presente em nosso programa deixa os matemáticos doidos pois de você subtrair umcirc.x de cada um dos lados da “igualdade” a expressão se torna 0=17. Ocorre que = não é o operador de teste de igualdade e sim de atribuição, ele tem a mesma função do := de Pascal a qual os matemáticos adoram. O operador de teste de igualdade em Java é : == Mais
sobre arquivos: Como pode ser observado, cada arquivo texto do programa está envolvido em uma moldura retangular. Neste caso as duas classes criadas: Circulo e Principal, estão em arquivos separados. A sequência de alterações em seu diretório ou folder é:
O compilador deve ser chamado para ambos arquivos. Ou você pode usar os chamados “wildcards”[1] javac *.java . Sem Includes: Se você já programa em alguma outra linguagem provavelmente deve estar com a seguinte dúvida: “Vocês usaram o nome da classe Circulo na classe Principal, ambas estão em arquivos separados, como o compilador sabe em que diretório está a classe Circulo? Não é preciso fazer uma espécie de include para poder usar a classe Circulo em outro arquivo?” A resposta é não. O compilador sabe achar se ela
estiver sob o diretório de seu programa. Se você tiver que deixar esta
classe em outro diretório então ela deve fazer parte de um package e você
terá que importar explicitamente este package, veremos como fazê-lo mais
tarde. Classe Circulo
e declaração de atributos: O primeiro arquivo deste exemplo contém o código da
classe Circulo,
esta classe contém três atributos . A declaração de atributos segue
sintaxe semelhante a de C++ (haverão acréscimos a esta sintaxe):
Todos os atributos pertencentes a classe são do tipo float (Ponto flutuante 32-bit IEEE754, veja tabela de tipos básicos). Estão especificados como public o que significa que podem ser modificados a partir de uma classe que usa um objeto Circulo seja como variável de método ou como atributo (este tipo de modificação será exemplificado na classe Principal). Existem outros especificadores que abordaremos mais adiante, por hora todos os métodos e atributos que criarmos deverão ser public. Vale lembrar que na declaração de variáveis simples em métodos, não faz sentido usar o EspecificadorModoAcesso. Esta classe Circulo não possui métodos. Como exemplo de declaração de variáveis simples tome
a declaração de uma variável Circulo no método main. Seguida de sua
alocação: umcirc=new Circulo();
//alocacao dessa variavel. Sem a alocação a variável
não pode ser usada. Note que os atributos são por default inicializados
para zero. Classe
Principal declaração e inicialização de atributos: A classe Principal não possui atributos, porque nenhum objeto desta classe é criado, apenas seu método main é chamado. O método main declara uma referência para objeto da classe Circulo: Circulo umcirc;. Note que diferentemente de C++ não são necessários “includes” ou “header files” para poder declarar essa variável de um “tipo” definido pelo usuário e existente em outro arquivo. Antes da referência ao objeto ser usada, este precisa ser alocado na memória o que é feito através de umcirc=new Circulo();. Se você tivesse declarado um objeto da classe String, já definida na linguagem, e depois fizesse sua alocação, o código seria semelhante ao seguinte :
A diferença com a alocação do objeto Circulo é que entre os parênteses incluem um argumento “Valor inicial”, isto ocorre porque a linguagem permite que você aproveite a alocação de um objeto para inicializar alguns de seus atributos, isto será explicado em 1.2.6.CONSTRUTORES. Neste nosso programa, os atributos contidos na área de memória alocada por new, são alterados de outra forma. [1]Wild-Card, do inglês: Coringa , carta de baralho. O * substitui os nomes de todos os arquivos, assim como o coringa pode susbtituir todas as cartas em jogos de baralho.
|
|||||||||||||||||||||
| Retorna | Flash tutorial | Informática | Avança |