Escolar Documentos
Profissional Documentos
Cultura Documentos
O ambiente de programao
JDK (Java Development Kit)
http://java.sun.com http://java.sun.com/docs/books/tutorial Linux, Windows e outros Edio, Compilao e Execuo de classes
O ambiente de programao
JDK (Java Development Kit)
javac ( compilador ) java ( interpretador ) appletviewer ( visualizador de applets ) javadoc ( gerador de documentao ) jar ( programa de compactao ) javap ( disassembler ) ...
O processo de compilao/execuo
Javac
A classe Java em arquivo com extenso .java
A classe prcompilada (bytecode), em arquivo com extenso .class
Java
interpretao do bytecode pela mquina virtual Java (JVM)
Classes em Java
Nome de classes:
Acentos e cedilha so desaconselhados (o compilador usa o nome das classes pra nomear arquivos) Nmeros podem aparecer aps letra
$ e _ so considerados letra
Maisculas minsculas H palavras reservadas
Recomenda-se:
Iniciar nomes de classes com maisculas
Classes em Java
/** * A classe Vazia no possui campos nem mtodos, mas * mesmo assim pode ser usada para exemplificar as regras Javadoc * sintticas bsicas de Java, podendo at mesmo ser * compilada. Maiscula? */ Class Vazia // esta a declarao da classe! {
Classes em Java
f:\AULAS\POO>c:\j2sdk1.4.2_03\bin\javac Vazia javac: invalid flag: Vazia Usage: javac <options> <source files> where possible options include: -g Generate all debugging info
...
f:\AULAS\POO>c:\j2sdk1.4.2_03\bin\javac Vazia.java Vazia.java:7: 'class' or 'interface' expected Class Vazia // esta a declarao da classe! ^ 1 error f:\AULAS\POO>c:\j2sdk1.4.2_03\bin\javac Vazia.java f:\AULAS\POO>java Vazia Exception in thread "main" java.lang.NoSuchMethodError: main f:\AULAS\POO>
byte
short (dois bytes) int (quatro bytes) long (oito bytes)
[-128,127]
[-32768,32767] [-2147483648,2147483647]
char
float double
% (resto ),
<,>,<=,>=,==,!=
Literal inteira 32767 convertida para tipo short. Erro de compilao: valor fora do intervalo.
C:\>javac testedata.java testedata.java:6: possible loss of precision found : int required: short umDia = 22; umMs = 13; umAno = 32768; ^ 1 error
C:\>javac testedata.java testedata.java:7: inicializaData(byte,byte,short) in Data cannot be applied to (byte,byte,int) n.inicializaData(umDia,umMs,32767); ^ 1 error
_ e $ so considerados letra
Maisculas minsculas H palavras reservadas possvel declarar vrios campos com o mesmo tipo (ou classe) separando seus nomes por vrgulas
Recomenda-se:
Iniciar nomes de campos de classes com minsculas Usar maisculas para separar palavras ex: nomeDoAluno
Mtodos em Java
Nomes de mtodos:
Mesmas regras que nomes de campos
Recomenda-se:
Iniciar nomes de mtodos com minsculas Usar maisculas para separar palavras ex: mostraCampos, acende, inicializa
Mtodos em Java
/** Este mtodo chama o mtodo dataVlida para verificar se os * argumentos so correspondentes a uma data vlida: se forem, * inicializa os campos, caso contrrio zera todos os trs campos. */ void inicializaDataSimples(byte d,byte m,short a) lista de { parmetros if (dataVlida(d,m,a)) { dia = d; ms = m; ano = a; } else { dia = 0; ms = 0; ano = 0; } } // fim do mtodo inicializaDataSimples
DataSimples.java
Mtodos em Java
/** Este mtodo recebe uma instncia da prpria classe DataSimples como * argumento e verifica se a data representada pela classe e pela instncia * passada a mesma. A comparao feita campo a campo. */ boolean Igual(DataSimples outraDataSimples) { if ((dia == outraDataSimples.dia) && (ms == outraDataSimples.ms) && objeto passado como (ano == outraDataSimples.ano)) parmetro return true; else acesso aos campos do objeto return false; } // fim do mtodo Igual
DataSimples.java
Escopo
Regras de Escopo: Determinam a visibilidade dos nomes
campos da classe so visveis em toda classe desconsidera-se ordem e localizao variveis e instncias declaradas dentro de mtodos so visveis no prprio mtodo considera-se ordem e localizao argumentos de mtodos so visveis no prprio mtodo
Escopo
/** A classe Triangulo representa os trs lados de um tringulo qualquer. */ lado2,lado3 so class Triangulo visveis em toda { float lado1; classe, inclusive no boolean Equiltero() { .... } float calculaPermetro() { .... } float lado2,lado3; } // fim da classe Triangulo
triangulo.java
Escopo
boolean Equiltero() { boolean igualdade12,resultado; igualdade12 = (lado1 == lado2); boolean igualdade23; igualdade23 = (lado2 == lado3); if (igualdade12 && igualdade23) resultado = true; else resultado = false; return resultado; } // fim do mtodo Equiltero
o uso de cada nome local ao mtodo s pode ocorrer aps a declarao do nome
triangulo.java
Modificadores de Acesso
recomenda-se que os usurios de uma classe no tenham acesso aos campos da classe ou aos mtodos que no implementam servios oferecidos pela classe
Modificadores de Acesso
/** A classe Data contm campos e mtodos que permitem a manipulao de datas. */ campos privados: a classe deve class Data implementar mtodos (pblicos) para { modific-los private byte dia,ms; private short ano;
public void inicializaData(byte d,byte m,short a) { ... } // fim do mtodo inicializaData public byte retornaDia() { return dia; } // fim do mtodo retornaDia ...
Data.java
Modificadores de Acesso
...
public boolean Igual(Data outraData) { if ((dia == outraData.dia) && (ms == outraData.ms) && (ano == outraData.ano)) return true; else Outra instncia da mesma classe: seus return false; campos e mtodos (mesmo os privados) } // fim do mtodo Igual podem ser manipulados diretamente. .... } // fim da classe Data
Data.java