Este Site localiza-se em : http://www.vbruno.net/computadores/java/
Tema: Java
O que é o
Java ?
O Java é:
* Uma liguagem de programação;
* Um ambiente de desenvolvimento;
* Um ambiente de aplicação;
O Java é resultado de uma busca por uma
linguagem de programação que pudesse fornecer uma ligação com o C++, mas com
segurança.
Os
primeiros objetivos alcançados com desenvolvimento desta nova linguagem foram:
* Criação de uma linguagem orienta a
objetos;
* Fornecimento de um ambiente de
desenvolvimento por dois motivos:
* Velocidade no desenvolvimento -
eliminando o ciclo de compilar-linkar-carregar-testar;
* Portabilidade do Código - com um
interpretador que especifica a forma do nível do sistema operacional. ( Pode
rodar em qualquer tipo de sistema operacional);
* Não tem acesso a ponteiros do sistema
operacional;
* Fornece dinamismo durante a manutenção
de programas;
Garbage
Collection (Libera uma coleção)
O Java não segura áreas de memória que não
estão sendo utilizadas, isto porque ele tem uma alocação dinâmica de memória em
tempo de execução.
No C e C++ (e em outras linguagens) o
programa desenvolvido é responsável pela alocação e desalocação da memória.
Durante o ciclo de execução do programa o
Java verifica se as variáveis de memória estão sendo utilizadas, caso não
estejam o Java libera automaticamente esta área que não esta sendo utilizada.
Segurança
no Código
Os arquivos do Java são compilados e são
convertidos de arquivos texto para um formato que contém blocos independentes
de bytes codes (Código Intermediário).
Em tempo de execução estes bytes codes são
carregados, são verificados através do Byte Code Verifier (uma espécie de
segurança), passam asseguir para o interpretador e são executados. Caso este
código seja acionado diversas vezes, existe um passo chamado JIT Code
Generator, que elimina o utilização por demasia do tráfego da rede.
Abra
o Notepad e crie o seguinte programa. Salve-o como Prog0101.java
class
Prog0101
{
public static void
main (String arg [])
{ int a = 5, b = 10;
a = a + 5;
System.out.println("Meu
Primeiro Progama");
System.out.println(" O
valor da variavel a = " + a);
}
}
Após terminar o programa compile-o e
execute-o:
C:\.....\Javac Progr0101.java
C:\.....\
Java Prog0101
Comentários
Estes são os três tipos permitidos de
coméntarios nos programas feitos em Java:
// comentário de uma linha
/* comentário de uma ou mais linhas */
/** comentário de documentação */
(Arquivos de documentação)
Ponto e
vírgula, Blocos e o espaço em branco
*
No java, os comandos são terminados com o sinal de ponto e vírgula (;)
*
Um bloco tem iníco e tem o seu fim representados pelo uso das chaves {};
*
O uso do espaço em branco permite uma melhor visualização dos comandos e em
consequencia facilita a sua manutenção.
Identificadores
Na linguagem Java um identificador é
startado com uma letra, undersco ( _ ), ou sinal de dólar ($), e existe uma
diferenciação entre letras maiúsculas e minúsculas:
Identificadores válidos:
* identifier
* userName
* User_name
* _sys_var1
*$change
Tipos
Básicos no Java
No Java existem oitos tipos básicos e um
tipo especial.
Tipo
Lógico
- boolean: on e off; true e false ou
yes e no.
Tipo
Textual
-
char e String
Um
caracter simples usa a representação do tipo char. O tipo char representa na
forma Unicode um caracter de 16-bit.
O literal do tipo char pode ser
representado com o uso do (‘ ‘).
‘\n’ – nova linha
‘\r’ – enter
‘\u????’ – especifica um caracter Unicode o qual é
representado na forma Hexadecimal.
‘\t’ – tabulação
‘\\’ - \
‘\” ”’ - “”
O tipo String, como não é primitivo,
é usado para representar uma seqüência de caracteres.
abstract do implements private throw
boolean double import protected throws
breaak else instanceof public transient
byte extends int return true
case false interface short try
catch final long static void
char finally native super volatile
class float new switch while
continue for null synchronized
default if package this
Tipo Integral – byte, short, int e long
Existem
quatro tipos de integral:
Tamanho da Integral Nome ou Tipo Espaço
8 bits byte -27 . . . . 27 - 1
16 bits short -215 . . . . 215 - 1
32 bits int -231 . . . .
231
- 1
64 bits long -263
. . . . 263
- 1
Tipo Ponto Flutuante
Uma variável do tipo ponto flutante
pode ser declarada usando a palavar float
ou double.
3.14 Um
ponto flutuante simples;
6.02E23 Um valor de ponto flutuante largo;
123.4E+306D Um valor de ponto flutuante usando o tipo
double.
Convenção
de Código no Java
Class
- Nomes de classes podem ser maiúsculas ou minúsculas ou misturado (maiúsculas
e minúsculas), mas por convenção o nome
das classes começam por letra maiúscalas.;
Interfaces
- Nomes de Interfaces suportam nomes iguais aos das classes;
Métodos
- Nomes de métodos podem ser verbos, podendo misturar entre maiúsculas e minúsculas,
sendo entretando a primeira letra
maiúscula;
Constantes
- Nomes de constantes podem ser maiúsculas, minúsculas, misturadas, separadas
com underscores.
Variáveis
- Todas as instancias, classes e variáveis globais suportam maiúsculas e
minúsculas.
Controles
de Estruturas- Convencionou-se o uso de { } (chaves);
Espaços
- Convencionou-se o uso de quatro espaços para identações;
Comentários
- Use os comentários para explicar os segmentos de código que não são obvios.
Variáveis
e Tempo de vida
Você tem dois meios para descrever
variáveis: usando o tipo simples de ligação int
e float ou usando tipos de classes definidas
pelo programa. Você pode declarar variáveis de duas formas, uma dentro de um
método e a outra dentro da classe a qual este método está incluído.
Inicialização
de variáveis
No Java não é permitido o uso de variáveis
indefinidas.
Variáveis definidas dentro do método são
chamadas de variáveis automáticas, locais, temporárias ou estáticas e devem ser
inicializadas antes do uso.
Quando um objeto é criado, as variáveis
membro são inicializadas com os seguintes valores em tempo de alocação:
Tipo de
variável
|
Valor inicial |
Tamanho |
byte |
0 |
8 bits |
short |
0 |
16 bits |
int |
0 |
32 bits |
long |
0L |
64 bits |
float |
0.0f |
32 bits |
Double |
0.0d |
64
bits |
Char |
‘\u0000’
(Null) |
64 bits |
Boolean |
false |
|
Operadores
No Java os operadores são muito similares
ao estilo e funcionalidade de outras linguagens como por exemplo o C e o C++.
Pré-incremento:
x = 10;
x
= x + 1;
O valor da variável x é 11
ou
x = 10;
++x
O valor da variável x é 11.
Pós-Incremto:
x = 10;
x
= x + 1;
O valor da variável x é 11
ou
x = 10;
x++
O valor da variável x é 11.
Diferença entre o Pré-Incremento e o
Pós-Incremento:
x = 10
++x
=> neste exato momento a variável a vale 11
x =10
x++ => neste exato momento a
variável x vale 10
Separadores:
. [
] ( ) ; ,
Operadores:
Operadores
|
Descrição |
== |
Igualdade |
!= |
Negação |
+ - * / |
Aritméticos |
&& |
e |
|| |
ou |
O
operador + é utilizado para concatenar
objetos do tipo String, produzindo uma nova String:
String
PrimeiroNome = “Antonio”;
String
SegundoNome = “Carlos”;
String
Nome = PrimeiroNome + SegundoNome;
Casting ( Conversão de tipos )
A
linguagem Java não suporta conversões arbitrárias de tipos de variáveis. Você
deve explicitar a conversão entre tipos de variáveis.
Exemplo:
long bigval = 6; //
Operação válida
int
smallval = 99L; // Operação inválida
porque são de tipos diferentes
float z =
float zp =
12.414; // Operação inválida porque
esta tentando atribuir um valor double.
Convertendo
Long bigValue = 99L;
Int squashed = (int)(bigValue);
If,
else
if
(expressão) // expressão cujo retorno é um valor do tipo
boolean
{ Declarações
ou blocos }
else // caso a condição
anterior não seja satisfeita
{
Declarações ou blocos }
switch
switch
(expressão) // Esta expressão deve ser do
tipo int ou char
{
case
cond01:
declarações;
break; // usado para sair do case.
case cond02:
declarações;
break;
case cond03:
declarações;
break;
}
for
Loops
for
(expr_inicial; condição_boolean; incremento)
{
Declarações
ou blocos;
}
while Loops
while(condição_boolean)
{
Declarações ou blocos;
}
do
Loops
do
{
Declarações
ou blocos;
}
while(condição_boolean);
Declaração
de Arrays
char s [ ];
Point p [ ];
Em Java um Array é uma
classe.
Criando um
Array
Você pode criar arrays, ligando-o a todos
os objetos, usando a palavra new, da seguinte forma:
s =
new char[20];
p = new Point[100];
String names[ ];
names = new String[4];
names[0]= “
names[1]=“Jen”;
names[2]=“Simon”;
names[3]= “Tom”;
ou
String names[ ];
names = new String[4];
String names [ ] = { “
Arrays
Multi-dimencionais
Java não possui arrays multi-dimencionais,
mas ele permite declarar um array que é baseado em um outro array.
int
twoDim [ ] [ ] = new int [4] [ ] ;
twoDim[0] = new int [5] ;
twoDim[1] = new int [5] ;
Exercícios
classe Prog0401
{
thisArray int;
thatArray int;
public static void
main (String args [ ])
{
int[ ]
thisArray = {1,2,3,4,5,6,7,8,9,10}
for
(int i =0; i < thisArray.length; i++)
{
System.out.println( “ Conteúdo do Array “ + thisArray[i]);
}
}
}
class Prog0402 {
public static void main(String
arg[ ])
{
int A[] = new int[3];
A[0] = 50;
A[1] =
100;
A[2] = 150;
System.out.println("Tamanho do vetor =
" + A.length);
int
conta;
for(conta = 0; conta< A.length ;
conta++)
{System.out.println("indice = " +
conta + " valor= " + A[conta]
);}
}
}
Capítulo
05 - Classes
e Objetos
1º Nível
2º Nível
3º Nível
n
Níveis
Abstração
de Tipos de Dados
Quando itens de dados são compostos para
tipos de dados, semelhante a uma data, você pode definir um número de bits de
programas que especifica a operação do tipo de dados.
Em Java você pode criar uma associação
entre o tipo data e a operação tomorrow a seguir:
public
class Date {
private int day, month,
year;
public void tomorrow( )
{ // código
que incrementa o dia
}
}
Definição
de Métodos
Em Java, métodos são definidoss usando uma
aproximação que é muito similar à usada em outras linguagens, como por exemplo
C e C++. A declaração é feita da seguinte forma:
< modifiers > < tipo de retorno >
< nome > ( < lista de argumentos
> ) < bloco >
< modifiers > -> segmento que
possue os diferentes tipos de modificações
incluíndo public, protected e private.
< tipo de retorno > -> indica o
tipo de retorno do método.
< nome > -> nome que identifica o
método.
< lista de argumentos > -> todos
os valores que serão passados como argumentos.
public
void addDays (int days)
Passagem
de Valores
Em Java o único argumento passado é
“by-value”; este é um argumento may
not be changed do método chamado. Quando um objeto é criado, é passado um
argumento para o método e o valor deste argumento é uma referência do objeto. O
conteúdo do objeto passível de alteração
é chamado do método, mas o objeto referenciado jamais é alterado.
A
Referência This
É aplicado a métodos não estáticos.
O Java associa automaticamente a todas as
variáveis e métodos referenciados com a palavara this. Por isso, na maioria dos casos torna-se redundante o uso em
todas as variáveis da palavra this.
Existem casos em se faz necessário o uso
da palavar this. Por exemplo, você
pode necessitar chamar apenas uma parte do método passando uma instância do
argumento do objeto. (Chamar um classe de forma localizada);
Birthday
bDay = new Birthday(this);
Ocultando
Dados
Usando a palavra private na declaração de day, month e year na classe Date, você
impossibilitará o acesso a estes membros de um código fora desta classe. Você
não terá permissão para atribuir valores, mas poderá comparar valores.
Encapsulamento
É uma proteção adicional dos dados do
objeto de possíveis modificações impróprias, forçando o acesso a um nível mais
baixo para tratamento do dados.
Sobrescrevendo
Métodos
O Java permite que você tenha métodos com
o mesmo nome, mas com assinaturas diferentes. Isto permite a reusabilidade dos
nomes dos métodos.
public void
print( int i )
public
void print( float f )
public void print( String s)
Quando
você escreve um código para chamar um desses método, o método a ser chamado
será o que coincidir com tipos de dados da lista de parâmetros.
Construtores
O mecanismo de inicialização do Java é
automático, ou seja se não incializarmos um construtor, o Java o inicializará
automaticamente.
Mas
existem casos que se faz necessário a declaração explicita dos construtores.
Para escrever um método que chama um
construtor, você deve seguir duas regras:
1ª O nome do método precisa ser igual ao
nome da classe.
2ª Não deve retornar um tipo declarado
para o método.
Subclasses
(Relacionadas)
Na classe Pai você deve declarar os
objetos comun a todos, e nos sub-níveis (Subclasses), você declara as
particulariedades:
public
class Employee {
private String name;
private Date hireDate;
private Date
dateOfBirth;
private String
jobTitle;
private int grade;
.
. . . . . .
}
Subclasses
(Extensões)
Em linguagens de orientação a objetos, um
mecanismo especial é fornecido para que permita ao programa defina classes e termos
previstas na definição de outras classes. Esta arquitetura em Java usa a
palavra extends.
public class
Employee {
private String name;
private Date hireDate;
private Date
dateOfBirth;
private String
jobTitle;
private int grade;
}
public class Manager extends
Employee {
private String
departament;
private Employee [ ]
subordinates;
...........
}
Herança
Simple
Em Java não existe herança múltipla.
Em Java os Construtores não são herdados.
Java permite que uma classe extenda uma
outra classe, com isso esta classe herda as características da outra classe.
Polimorfismo
A idéia de polimorfismo é a de muitas
formas, onde eu posso utilizar uma classe de diversas maneiras e formas
possíveis.
public
class Employee extends Object
and
public class Manager extends Employee
Argumentos
de Métodos e Coleções Heterogeneas
Usando esta aproximação você pode escrever
métodos que aceitam um objeto genérico. O
uso do polimorfismo fornece uma série de facilidades.
public TaxRate
findTaxRate( Employee e) {
Manager m = new Manager( );
. . . . . . .
TaxRate
t = findTaxRate(m);
Isto é
possível porque um Gerente é um empregado.
Uma coleção heterogênea é uma coleção de
coisas diferentes. Em linguagem orientada a objetos, você pode criar uma
coleção de coisas que tem uma classe de antepassados comuns. Assim nós poderemos fazer isso.
Employee [ ] staff = new Employeee [ 1024 ];
staff[ 0 ] = new Manager ( );
staff[ 1 ] = new Employee ( );
E
assim sucessivamente nos podemos escrever um método de tipos que põe empregados
ordenados por idade ou em ordem salarial sem ter que se preocupar com a ordem
de inserção.
O Operador
instanceof
Fornece o dado que você adquiriu através
da passagem de parâmetros.
Caso você receba um object por referência
do tipo Employee, esta referência poderia não ser mostrado para Manager. Se você quiser testar isso use instanceof.
public void method(Employee e) {
if (e instanceof
Manager) {
}
else if ( e instanceof Contractor)
{
}
else {
}
}
Objetos
Lançados
Em circunstâncias onde você recebeu uma
referência para uma classe pai, e você determinou que o objeto é de fato uma
subdivisão de classe particular usando o operador de instanceof, você pode
restabelecer a funcionalidade completa do objeto lançado.
Sobre-escrevendo
Métodos
O Java permite que você declare métodos na
classe pai e não desenvolva nenhuma lógica dentro desses métodos, permitindo
com isso que o desenvolvimento desses métodos venha a ser trabalhados dentro
das sub-classes posteriores.
Class Funcionario( )
ler( )
Class Motorista( )
ler ( )
Super.ler( ) -> Referencia o método da classe pai
Comparando
Java com outras Linguagens
Em C++ você pode adquirir este
comportamento, desde que você marque o método como virtual na fonte.
Classes se
agrupando - Pacotes
Java provê o mecanismo de pacotes como um
modo de se agrupar classes relacionadas. Tão longe, todos nossos exemplos pertencem
à falta ou pacotes não mencionados.
A
@
a
B
b @ B
a b c - B.e
onde:
@ - Pacote -
letra (a, b ...) - classe
A
declaração import
Em Java, quando você quer usar instalações
de pacotes, você usa a declaração de importação para contar para o compilador
onde achar as classe que você vai usar.
A declaração de importação (import) deve
preceder a declaração de todas as classes.
Exercícios
class
Prog0501
{
public static void main(String arg[ ])
{
int a, b=10, c=3;
a =
func(b,b+c); //chamada de funcao. O retorno é passado para a variável a
System.out.println("valor de a = " + a);
}
// A definicao da funcao esta
logo abaixo
public static int func(int x, int y)
{
int ret;
ret = x+y;
return
ret;
}
}
O que é
uma Exception ?
Em Java, a classe de Exceção define
condições de erro moderados que seus programas podem encontrar. Em vez de você
deixar o programa terminar, você pode escrever um código para tratar as
exceções e continuar a execução do programa.
A linguagem Java implementa C++ nomeando
exceções para poder construir um código elástico. Quando um erro acontece em
seu programa, o código que acha o erro pode “disparar” uma exceção. Dispara uma
exceção é o processo de sinalizar o processo corrente atual de que um erro
aconteceu. Você enlata a captura da exceção e quando possível recupera a
condução das próximas rotinas.
Manipulação
de Exceptions
Declarações try e catch
Uma maneira de manipular possíveis erros,
é usando as declarações try e catch. A declaração try indica a parte do código
aonde poderá ocorrer uma exception, sendo que para isso você deverá delimitar
esta parte do código com o uso de chaves. Na declaração catch você coloca o
código a ser executado caso venha a ocorre uma exception.
try {
// código que pode ocasionar uma
exception
}
catch{
// tratamento do erro
}
Declaração finally
A declaração finally é utilizada para
definir o bloco que irá ser executado tendo ou não uma exception, isto após o
uso da declaração de try e catch.
try {
// código que pode ocasionar uma
exception
}
catch{
// tratamento do erro
}
finally {
// código
}
Exceptions mais comuns
ArithmeticException - int i = 12 / 0
NullPointerException - ocorre
quando utilizo um objeto que não foi instanciado.
NegativeArraySizeException
- ocorre quando é atribuido um valor nulo para um array.
ArrayIndexOutOfBoundsException
- ocorre quando tento acessar um elemento do array que não existe.
Categorias
de Exceptions
Há três grandes categorias de exceções
Deve-se evitar usar a classe Throwable,
procure usar uma das três classes descritas à seguir:
* Erro - indica um problema sério de
recuperação difícil, se não impossível;
* RuntimeException - problema ocorrido
durante a implementação;
* Outra exceção - indica uma dificuldade
durante a implementação que pode acontecer razoavelmente por causa de efeitos
ambientais e pode se manipulado.
Declare ou
Manipule a sua Exception
Na construção de um código em Java, o programador
deve prever métodos para tratar possíveis erros. Existem duas maneiras de o
programador satisfazer esta exigência. A primeira é com o uso da declaração try
e catch, como foi visto anteriormente, e a segunda maneira é indicando que a
exceção não é dirigida para este método, sendo então jogado para o método
chamador.
public void troublesome( )
throws IOException
O Pacote java.awt
No pacote
java.awt contém as classes para a geração de componentes Gui.
Os componentes Gui geralmente são de aspectos
visíveis, como butões ou labels.
Posição
dos componentes
A posição dos componentes no container é
determinado pelo gerente de layout. O tamanho dos componentes é também de
responsabilidade do gerente de layout.
O método
main()
É responsável pela criação da instância de
objetos e pela inicialização do método go().
O new
Frame
Cria uma instância da classe
java.awt.Frame. O Frame no java é o nível mais alto da janela, aonde ficam por
exemplo o barra de títulos.
O
setLayout()
Cria uma instância do fluxo do gerente de
layout, aonde é colocado o Frame.
O new
Button()
Cria uma instância da
classe java.awt.Button. O botão é o local na janela aonde é empurrado para que
se tenha uma ação.
O add()
Éste
método adiciona elementos (butões, caixas de texto, etc.) ao frame.
O pack()
Este método fixa o tamanho dos elementos
no frame.
O
setVisible()
Este método torna os elementos visíveis no
frame.
O Flow Layout
Manager
O flow
layout para posicionar componentes em uma determinada linha ou conjunto de
linhas. A cada instante uma nova linha fica cheia e uma nova linha é começada.
O Border
Layout Manager
É mais complexo do que o
Flow Layout Manager, pois fornece componentes que possibilitam manusear o posicionamento
do elemento dentro do container.
O Grid Layout
Manager
Você pode criar linha e
colunas dentro de seu container.
O
CardLayout
Permite você criar duas interfaces
semelhantes a butões, sendo entretanto o painel completo.
Frame
É uma armação aonde são inseridos diversos
elementos como: botões, labels, etc.
Panels
São recipientes aonde são inseridos
diversos elementos como: botões, labels, etc.
O Pacote java.awt
No pacote java.awt contém as classes para
a geração de componentes Gui.
Os componentes Gui geralmente são de
aspectos visíveis, como butões ou labels.
Posição
dos componentes
A posição dos componentes no container é
determinado pelo gerente de layout. O tamanho dos componentes é também de responsabilidade
do gerente de layout.
O método
main()
É responsável pela criação da instância de
objetos e pela inicialização do método go().
new Frame
Cria uma instância da classe
java.awt.Frame. O Frame no java é o nível mais alto da janela, aonde ficam por
exemplo o barra de títulos.
setLayout()
Cria uma instância do fluxo do gerente de
layout, aonde é colocado o Frame.
new
Button()
Cria uma instância da classe
java.awt.Button. O botão é o local na janela aonde é empurrado para que se tenha
uma ação.
add()
Éste
método adiciona elementos (butões, caixas de texto, etc.) ao frame.
pack()
Este método fixa o tamanho dos elementos
no frame.
setVisible()
Este método torna os elementos visíveis no
frame.
Flow
Layout Manager
O flow
layout para posicionar componentes em uma determinada linha ou conjunto de
linhas. A cada instante uma nova linha fica cheia e uma nova linha é começada.
Border
Layout Manager
É mais complexo do que o Flow Layout
Manager, pois fornece componentes que possibilitam manusear o posicionamento do
elemento dentro do container.
Grid
Layout Manager
Você pode criar linha e colunas dentro de
seu container.
CardLayout
Permite você criar duas interfaces
semelhantes a butões, sendo entretanto o painel completo.
Frame
É uma armação aonde são inseridos diversos
elementos como: botões, labels, etc.
Panels
São recipientes aonde são inseridos
diversos elementos como: botões, labels, etc.
O que é um evento?
Quando o usuário executa uma ação à interface
de usuário, isto causa um evento a ser emitido. Eventos são objetos que
descrevem o que aconteceu. Vários tipos diferentes de classes de evento existem
para descrever categorias gerais diferentes de ação de usuário.
Fontes de evento
Uma fonte de evento (ao nível de
interface de usuário) é o resultado de alguma ação de usuário em um componente
de AWT. Por exemplo, um trinco de rato em um componente de botão gerará (fonte)
um ActionEvent.
Manipuladores de evento
Quando um evento acontece, o evento
é recebido pelo componente com o que o usuário interagiu; por exemplo, o botão,
slider, campo de texto, e assim por diante. Um manipulador de evento é um
método que recebe o objeto de Evento de forma que o programa pode processar a
interação do usuário.
Como são processados Eventos
Entre JDK 1.0 e JDK 1.1, houve
mudanças significantes do modo que são recebidos eventos e são processados.
JDK 1.0 Contra JDK 1.1 Modelo de Evento
JDK 1.0 usa um modelo de evento de hierarquia,
e JDK 1.1 usa um modelo de evento de delegação. Enquanto este curso cobre o JDK
1.1, é importante reconhecer como estes dois modelos de evento comparam.
Modelo de hierarquia (JDK 1.0)
O modelo de evento de hierarquia é
baseado em hierarquia de retenção. Eventos que não são dirigidos ao componente
continuarão propagando ao recipiente do componente automaticamente.
Modelo de delegação (JDK 1.1)
O JDK 1.1 introduziu um modelo de
evento novo, chamou-o de evento de
delegação. No modelo de evento de delegação, são enviados eventos a componente,
onde cada componente registrar uma
rotina de manipulação de eventos (chamado de ouvinte) para receber o evento.
Deste modo o manipulador de eventos pode estar em uma classe separada do componente.
A manipulação do evento é delegada então à classe separada.
Vantagens do Modelo de delegação
* Não são dirigidos eventos
acidentalmente; no modelo de hierarquia é possível para um evento propagar a um
recipiente e é dirigido a um nível que não é esperado.
* É possível criar filtro
(adaptador) de classes para classificar ações de evento.
* O modelo de delegação é muito
melhor para a distribuição de trabalho entre classes.
* O modelo de evento novo provê
apoio por feijões de Java.
Desvantagens do Modelo de delegação
* É mais complexo, pelo menos
inicialmente, entender.
* A migração do JDK 1.0 para o JDK
1.1 não é fácil.
·
Embora o JDK atual apóia o JDK 1.0, os modelos podem ser misturados.
*
Reconheça os componentes chaves da biblioteca AWT.
* Use os
componentes da AWT para construir interfaces de usuário para programas reais.
·
Controle as cores e mananciais
usados por um componente de AWT
O
AWT provê uma variedade larga de instalações standards.
É uma das interfaces básicas, que é ativa
após ser precionada.
Checkboxe fornece uma interface simples,
aonde as opções possíveis são “on/off”.
CheckboxGroups é um tipo de Checkboxe especial,
diferenciando do anterior pelo sinal de seleção, no caso uma bolinha, e aonde
apenas uma opção poderá ser marcada.
O Choice fornece uma seleção simples
dentro de uma lista de opções.
Canvas é uma tela de fundo (papel de parede)
aonde irão ser adicionados componentes.
Label é um objeto simples que mostra uma
linha simples de texto.
TextField é um objeto simples que permite
a digitação dentro dele.
TextArea é um objeto mais completo que permite
a digitação de várias linhas dentro dele.
O List é um tipo de Choice, mas que
permite a seleção múltipla dentro da lista de opções.
Frame é uma armação aonde serão inseridos
objetos.
Panel é um tipo de container aonde serão inseridos
objetos.
Um Dialog é semelhante ao Frame, nisso é
uma janela parada grátis com algumas decorações.
Não
são feitos Dialog normalmente visível para o usuário quando eles são criados
primeiro.
FileDialog é um tipo de implementação que
permite ao usuário selecionar pastas dentro de uma lista de opções.
ScrollPane são as barras de rolagens de um
panel.
Menu é uma série de opções disponível.
Um fator importante da criação de menus no
Java é a respeito do Help. O help pode ser deslocado para ficar o mais a
direita possível dos demais itens.
O MenuBar é um tipo de menu horizontal.
O MenuItem são os itens do menu.
É uma variação dos tipos de menu, aonde o
usuário seleciona uma das opções e esta opção selecionada fica marcada com
“quique”.
É um tipo de menu acionado a partir de
qualquer posição na tela.
Existem dois métodos para controlar
as cores:
·
SetForeground()
·
SetBackground()
Fonts
É utilizado para controlar os tipos de
fontes.
Frame f = new Frame(“Print
test”)
...
Um applet é um pedaço de
código de Java que corre em um ambiente de browser. Difere de uma aplicação do
modo que é executado. Uma aplicação é começada quando seu método main() é chamado. Através de
contraste, o ciclo de vida de um applet é um pouco mais complexo. Este módulo
examina como um applet é corrido, como carregar isto no browser, e como escrever
o código para um applet.
Carregando um Applet
Você tem que criar um arquivo de HTML que
conta para o browser o que carregar e como correr isto. Você então
"aponta" o browser ao URL que especifica aquele arquivo de HTML.
Existem
Seguranças e Restrições nos Applets porque applets são pedaços de código que
são carregados em cima de arames, eles representam um prospecto perigoso; imagine se alguém escrever um programa malicioso que lê
seu arquivo de contra-senha e envia isto em cima da Internet?
O
modo que Java previne isto está contido na classe de SecurityManager que
controla acesso para quase toda chamada de sistema-nível no Java Máquina
Virtual (JDK).
Portanto Applets não faz chamadas ao seu
sistema operacional.
Em
uma aplicação, no programa é entrado ao
método main(). Em um applet, porém, este não é o caso. O primeiro código
que um applet executa é o código definido para sua inicialização, e seu
construtor.
Depois
que o construtor é completado, o browser chama um método no applet chamado init
(). O método init () executar inicialização básica do applet . Depois de init
() é completado, o browser chama outro método chamado start ().
Você
pode puxar sobre a exibição de um applet criando um método paint(). O método
paint() é chamado pelo ambiente de browser sempre que a exibição do applet
precise ser refrescado. Por exemplo, isto acontece quando a janela de browser é
aparecida depois de ser minimizado.
Derrame Fundamentos
Um
fluxo ou é uma fonte de bytes ou um destino para bytes. A ordem é significante.
Por exemplo, um programa queira ler de um teclado pode usar um fluxo, a ordem de
entrada dos dados será a ordem do fluxo.
Introduza Métodos de Fluxo
Estes
três métodos provêem acesso para os dados do tubo. O método lido simples
devolve um tipo int que ou contém um byte lido do fluxo ou -1 que indica o fim
de condição de arquivo.
Método do Fluxo de produção
Estes
métodos escrevem ao fluxo de produção. Como com a entrada, você tentar escrever
dados no bloco prático maior. close ()
Deveriam ser fechados fluxos de produção
quando você terminou com eles. Novamente, se você tem uma pilha e fecha o topo
um, isto fecha o resto dos fluxos. flush ()
Os leitores e Escritores
Unicode
Java
usa Unicode por representar fios e caracters, e a versão 16 bits provê pedaço
de fluxos para permitir tratar caráter similares. Esta versão é chamada de os
leitores e escritoras, e como com fluxos, uma variedade deles está disponível
no pacote java.io.
Byte
e Conversões de Caráter
Através
de falta, se você constrói um leitor simplesmente ou o escritor conectou a um
fluxo, então as regras de conversão mudarão entre bytes que usam o caráter de
plataforma de falta que codifica e Unicode.
O
Leitor de Buffered e Escritor
Porque
convertendo entre formatos é como outras operações de I/O, eficazmente
executadas em pedaços grossos grandes, que geralmente é uma idéia boa para
encadear um BufferedReader ou BufferedWriter sobre o fim de um
InputStreamReader ou InputStreamWrite.
Arquivos
Antes
de você querer executar operações de I/O em um arquivo, você tem que obter
informação básica sobre aquele arquivo. A classe de Arquivo provê várias
utilidades para lidar com arquivos e obter informação básica sobre estes
arquivos.
Threads (Linhas)
Threads e Threading no Java
O que são Linhas?
Uma
visão simplista de um computador é a que tem uma CPU que manipula os dados, uma memória ROM que contém
o programa que o CPU executa, e RAM que segura os dados nos quais o programa
opera. Nesta visão simples, um trabalho é executado de cada vez.
Thread e thread para referenciar a
ideia de execução.
Três
Partes de uma Linha
Uma
linha inclui três partes principais. Primeiro, há o CPU virtual. Segundo, há o
código que esta CPU está executando. Terceiro, há os dados no que o código
trabalha.
Criando
a Linha
Demos
uma olhada no modo que uma linha é criada, e discuta como os argumentos de
construção são usados para prover o
código e dados para a linha quando corre.
Começando
a Linha
Embora
nós criamos a linha, não começa correndo imediatamente. Para começar isto, nós
usamos o método start ( ). Este método está na classe de Linha, tão determinado
nosso esboço prévio que nós simplesmente dizemos.
Thread
Sheduling
Embora
a linha se torna runnable, necessariamente não começa imediatamente. Claramente
em uma máquina que de fato tem só uma CPU, pode estar fazendo só uma coisa de
cada vez.
Testando
uma Linha
Às
vezes é possível para uma linha estar em um estado desconhecido. É possível
inquirir se uma linha ainda é viável através do método isAlive ( ).
Pondo Linhas em
Cabo (Putting Threads on Hold)
Vários
mecanismos existem que podem parar a execução de uma linha temporariamente.
Seguindo este tipo de suspensão, execução pode ser retomada como se nada
tivesse interrompido sua execução, a linha aparece ter executado uma instrução
muito lentamente simplesmente.
O
método sleep foi introduzido na primeira seção e foi usado para deter uma linha
para um período de tempo.
Às
vezes é apropriado suspender execução de uma linha indefinidamente em qual caso
alguma outra linha será responsável para retomar a execução. Um par de métodos
de Linha está disponível para isto. Eles são chamados suspend () e resume
().
O
método join ( ) causa a linha atual para esperar até a linha em qual o método
join é chamado termina.
Outros
modos para criar linhas
Nós
discutimos criando Linha por uso de uma classe separada que implementa
Runnable. De fato, esta não é a única possível aproximação.
Usando sincronizaram em Java
O
Problema
Imagine
uma classe que representa uma pilha. Advertência que a classe não faz nenhum
esforço para dirigir transbordamento ou underflow da pilha, e que a capacidade
de pilha está bastante limitada. Estes aspectos não são pertinentes a nossa
discussão.
A
Bandeira de Fechadura de Objeto (The
Object Lock Flag)
Em
Java, toda instância de qualquer objeto tem um flag (bandeira) associado com
isto. Esta bandeira pode ser pensada de como uma " bandeira " de
fechadura. Um palavra sincronizado é provido para permitir interação com esta
bandeira.
Reunindo
isto
Como
foi sugerido, o mecanismo sincronizador () só trabalha se o programador põe as chamadas
nos lugares corretos.
Paralisação
completa
Em
programas onde linhas múltiplas estão competindo para acesso a recursos
múltiplos, pode haver uma possibilidade de uma condição conhecida como
paralisação completa. Isto acontece quando uma linha está esperando por uma
fechadura segurada por outra linha, mas a outra linha já está esperando por uma
fechadura segurada pela primeira linha.
Enfie Interação
(Thread Interaction)
O Problema
Por
que duas linhas poderiam precisar interagir?
A
Solução
Toda
instância de objeto em Java tem duas tranças de linha associadas com isto. O
primeiro é usado por linhas que querem obter a bandeira de fechadura, e foi
discutido na seção. A segunda trança é usada para implementar os mecanismos de
comunicação de wait () e notify ().
Rede com Java
Sockets
Sockets
é o nome de um modelo de programação particular, para o vínculo de comunicação
entre processos. Por causa da popularidade deste modelo de programa, o nome
socket foi usada de novo em outras áreas inclusive Java.
Montando
a Conexão
Para
montar a conexão, uma máquina tem que estar correndo um programa que está
esperando por uma conexão, e o outro fim tem que tentar alcançar o primeiro.
Isto é semelhante a um sistema de telefone; uma festa tem que fazer a ligação
de fato, enquanto a outra festa tem que estar esperando pelo telefone quando
aquela ligação é feita.
Enviando
a Conexão
Quando
fazemos um telefone chamar, nos precisamos saber o número de telefone para
discar. Quando fazemos uma conexão de cadeia, nos precisamos saber o endereço
ou o nome da máquina distante.
Números
de porto
Números
de porto em sistemas de TCP/IP são 16 números de pedaço e estão no alcance
0-65535. Em prática, número de porto debaixo de 1024 é reservado para serviços
predefinidos, e você não os deveria usar a menos que você deseje comunicar com
um desses serviços.
O
Modelo de Rede no Java
No
idioma de Java, são implementadas conexões TCP/IP com classes no java.pacote
líquido.
Sockets
de UDP
Onde
TCP/IP é um protocolo conexão-orientado, o Usuário Protocolo de Datagram é
um protocolo de "connectionless
". Contudo, um modo simples e elegante para pensar nas diferenças entre
estes dois protocolos é a diferença entre o telefone chamada e correio
postal.
DatagramPacket
DatagramPacket
tem dois constructors: um para dados receptores e o outro por enviar dados.
- Se queres o contínuo desta HomePage Faz o download !
Para mais informação para o e-mail