Professional Documents
Culture Documents
Motivao
incio de 1997
mais de 50 milhes de utilizador da Internet aumento de utilizadores a uma taxa de 100% ano estimam-se mais de 200 milhes de utilizadores em 2002 em 2010 estima-se existirem mais ligaes para uso da Internet do que linhas telefnicas!
Motivao
na Internet?
mais precisamente na World Wide Web introduzida no incio dos anos 90 uma das histrias de sucesso das TIs proporciona um meio de partilha de informao a baixo custo
Motivao
qual a vantagem?
ao alcance de uma chamada telefnica local possvel ler texto e grficos de qualquer parte do mundo informao organizada em pginas, com um nome nico, acessveis globalmente necessrio um navegador, mas fcil de utilizar (hipertexto)
Motivao
desvantagens?
um pouco lento infraestrutura sobrecarregada reduzida interactividade
pginas escritas em HTML que permite leitura de conteudos multimdia, saltos para outras pginas, carregamento de grficos o JAVA estende estas capacidades possibilitando a criao de pginas interactivas...
Motivao
porqu usar JAVA?
pela interactividade globalmente aceite como a linguagem de programao para a Web tornou-se uma norma para a indstria de software possui poucos concorrentes para o desenvolvimento de aplicaes na Web
O que o JAVA
uma linguagem de programao
orientada a objectos proveniente da Sun Microsystems permite o desenvolvimento de dois tipos de programas
APPLETS, que se destinam a ser executados em conjunto com um navegador da web Aplicaes, que constituem os tradicionais programas (e sem recurso a um navegador para serem executados)
O que o JAVA
so os APPLETS que nos interessam
so multiplataforma permitem o desenvolvimento de pginas interactivas para a web
jogos formulrios visualizadores demos o que a imaginao poder e o trabalho concretizar!
Desenvolvimento de software
enquanto o hardware comporta-se sempre de uma forma previsvel (quando no h avaria!), o software j no mesmo para a aplicao perfeita seria virtualmente impossivel de provar esse facto inumeras metodologias de projecto de programao foram desenvolvidas programao orientada a objectos (OOP) uma delas!
POO
POO uma das melhores formas de desenvolver software com o mnimo de erros
o JAVA uma OOP deve-se tirar partido desse facto! Necessrio saber o que so:
objectos diferena entre objectos e classes atributos herana e sua importncia
O que so objectos
mundo exterior como um conjunto de objectos
o carro , a casa, os animais, as plantas; num programa: os botes, as imagens, as caixas de textos,
O que so objectos
na POO, com objectos que se comportam de forma bem determinada, possvel realizar a sua combinao sem ser necessrio saber o que acontece no seu interior
para um objecto que ordene nmeros, s necessrio fornecer os nmeros a esse objecto e esperar at que este retorne os nmeros ordenados; no preciso saber como estes so ser ordenados
o ponto fulcral da POO ver uma aplicao como um conjunto de objectos que interagem entre si
permite a concentrao no projecto interno de um objecto sem a preocupao do efeito que este ter noutros objectos (o interface entre objectos tem de ser claramente definido)
Classes
em POO, classes e objectos so coisas diferentes! no mundo real existem muitos objectos que so do mesmo tipo
a partilha de caractersticas um modo til de agrupar objectos todos os livros no mundo so membros da mesma classe livro, que possui caractersticas ou atributos: os livros tem pginas, uma capa e contm palavras ou imagens a Biblia um objecto livro, que um membro da classe livro. em termos POO, diz-se que a Biblia uma instncia da classe livro
Classes
uma linguagem OO permite criar classes e objectos que pertencem a essas classes (outro exemplo):
a classe construo, existem muitas construes, mas s estamos numa, num dado momento construo a classe, isto , o formulrio para todas as construes, mas a construo onde nos encontramos uma instncia dessa classe; cada instncia um objecto a classe no se refere a uma dada construo em particular; apenas o formulrio que descreve todas as construes. Uma instncia da classe contruo uma construo particular, um objecto; uma instncia de uma classe um objecto uma moradia, um prdio e uma igreja so diferentes, mas todos os objectos partilham um conjunto comum de atributos; portas, paredes e uso
Atributos e comportamento
todas as instncias de uma classe (os objectos dessa classe) partilham os mesmos atributos.
alguns dos atributos para a classe construo podem ser: o n de pisos, o n de janelas, a rea coberta, o uso da construo
os valores dos atributos so diferentes para diferentes construes e so designados por variveis de instnciao
as variveis podem permanecer constantes para a vida do objecto (o nmero de pisos da construo) ou podem mudar (o uso da construo)
Atributos e comportamento
as classes definem conjuntos de operaes que so feitas em cada um dos objectos para mudar o valor das variveis ou proporcionar informao sobre estas
operao para modificar o uso da construo de trabalho para lazer; igualmente devem existir operaes que reportem o seu estado
as classes fornecem uma referncia que define tanto as variveis como as operaes que podem ser realizadas; estas operaes so designadas por mtodos
aps um a classe ser definida, os objectos pertencentes a essa classe (instncias) podem ser criados JAVA oferece vrias classes para uso, constituindo a base de trabalho, mais elaborada, para esforos de programao
Herana
til dividir uma classe em subclasses, para assim partilharem algumas caractersticas
a classe construo pode ser dividida em subclasses: habitao, escritrio, loja. Construo a superclasse das subclasses habitao, escritrio, loja
uma subclasse herda os atributos da superclasse e todos os mtodos que operam essa superclasse
as subclasses habitao, escritrio, loja partilham o atributo que define o uso da construo e os respectivos mtodos para visualizar e alterar esse atributo
Herana
as subclasses podem possuir atributos adicionais aos da superclasse a que pertencem
a subclasse habitao pode possuir um atributo que especifica o nmero mximo de pessoas que l podem viver e alguns mtodos associados
as subclasses tambm podem alterar, para si prprias, mtodos herdados das superclasses
a subclasse loja pode modificar o mtodo que altera o nmero de pisos de forma a que o total de pisos especificado seja inferior a um dado valor.
possvel ter muitos nveis de herana numa estrutura em rvore de heranas ou hierarquia de classes
A linguagem JAVA
orientada a objectos
semelhante, em sintaxe, ao C++ desenvolvimento de aplicaes stand alone desenvolvimento de aplicaes para a Internet e multiplataforma as aplicaes para a Internet (Applets) so corridos pelos navegadores Web
A linguagem JAVA
limitaes
os applets JAVA so carregados de um host e corridos localmente acesso a ficheiros locais restringido em funo da organizao do sistema de ficheiros acessos no autorizados de aplicaes externas podem contaminar o disco local (vrus, )
Applets e aplicaes
os applets diferem das aplicaes por poderem ser executados pginas HTML, quando visualizados em navegadores web que suportam JAVA
possibilita aos programadores maior flexibilidade no contedo das pginas web. Os applets podem correr em qualquer computador
as aplicaes s correm no computador especfico (ou famlia de computadores) para que foram compilados; no correm com o navegador
o JAVA semelhante para desenvolver aplicaes ou applets, mas existem diferenas criadas pelo ambiente no qual correm applets e aplicaes
no podem carregar ou correr programas locais ou efectuar referncias a DLLs no podem comunicacar com o servidor
Um applet simples
estrutura de um applet
existem 5 mtodos principais no JAVA (se no for incluida uma verso prpria destes mtodos, ser usada a por defeito) os mtodos so:
init start stop destroy paint
...no existe um mtodo main!
Inicializar um applet
o primeiro mtodo a ser executado quando se corre um applet
usado para inicializar valores, carregar imagens para posterior uso,... o JAVA possui um mtodo init que pode ser substitudo por um a desenvolver
public void init( ) { }
Iniciar um applet
o mtodo a ser executado a seguir ao init
pode ser chamado as vezes que se pretender, durante a vida do programa quando se troca de pgina o applet pra de correr e quando se retorna pgina, o mtodo start novamente executado public void start( ) { }
Parar um applet
o mtodo stop o complemento do mtodo start
pra de correr um applet sempre que se sair da pgina, o applet continua a correr, no entanto pode-se parar a sua execuo at se retornar pgina public void stop( ) { }
Destruir um applet
destruir o applet significa parar todos threads criados e libertar os recursos de computador que lhe foram alocados
normalmente, estas operaes so realizadas pelo mtodo por defeito e no existe necessidade de o modificar public void destroy( ) { }
O mtodo paint
possui um argumento; uma instncia da class Graphics
o objecto criado automaticamente necessrio assegurar que a classe Graphics importada para o applet, colocando no inicio do applet
import java.awt.Graphics
HTML
As pginas web so escritas em HTML. Os items da linguagens, designados por tags, encontram-se entre < e >:
<html> <head> <title> A primeira pagina </title> </head> <body> <h1> Bem vindo ao mundo da Web </h1> </body> </html>
Tags HTML
Cada um dos tags interpretado pelo navegador:
<HTML>, indica o inco de um documento HTML </HTML>, indica o fim de um documento HTML <! >, contm um comentrio no visualizado pelo navegador <HEAD> e </HEAD> so o inco e fim da parte de metainformao do documento e contm informao sobre este, como o caso do seu ttulo <TITLE> </TITLE>, visualiza o texto entre estes dois tags no topo da janela do navegador <BODY> e </BODY> indica o incio e o fim do documento a ser visualizado pelo navegador
O tag Applet
os applets so incluidos nas pginas web recorrendo ao tag <APPLET>
quando o navegador carrega uma pgina que possui o tag <APPLET>, o applet tambm carregado e executado o tag <APPLET> possui diversas opes que controlam o seu tamanho e posio na pgina web, o alinhamento com o resto do texto e grficos e os parmetros a serem fornecidos ao applet
O tag Applet
o tag <APPLET>
tem de estar entre o <BODY> e </BODY>
<BODY> >APPLET CODE = olamundo.class WITH = 150 HEIGHT = 25> </APPLET> </BODY>
o cdigo fonte para o applet o ficheiro olamundo.java; quando compilado cria o ficheiro de classe olamundo.class os tags WITH e HEIGHT definem a rea utilizada pelo applet, quando executado
O tag Applet
Se se definir mais de uma classe no cdigo fonte, produzido um ficheiro com a extenso .class para cada classe definida
compilao Fich1.java define: classe fich1 classe fich2 classe fich3 fich1.class
fich2.class fich3.class
O tag Applet
o nome do ficheiro HTML deve ser o mesmo do ficheiro classe que inicia o applet
olamundo.java, ficheiro cdigo fonte olamundo.class, ficheiro classe produzido pela compilao do ficheiro olamundo.java olamundo.html, ficheiro html, com o tag <APPLET>
Criao de um applet
applet para colocar texto no navegador
import java.awt.*; public class olamundo extends java.applet.Applet { public void paint(Graphics g){ Font escolha= new Font("TimesRoman", Font.ITALIC, 32); g.setFont(escolha); g.drawString("Ol mundo!",5,30); } }
o ficheiro olamundo.html criado com o tag descrito e pode ser visualizado num navegador, juntamente com o resultado da execuo do applet
O ficheiro olamundo.html
<html> <head> <title> A primeira pagina </title> </head> <body> <applet code ="olamundo.class" width=180 height=70> </applet> </body> </html>
Compilar aplicaes
uma aplicao desenvolvida em JAVA compilada da mesma forma que um applet
javac aplicacao.java
JAVA
O JAVA sensvel utilizao de maisculas conveno em JAVA
os nomes das classes possuem letras maisculas mtodos e objectos em minsculas
Nomes em JAVA
necessrio dar nomes a variveis, classes e mtodos
um nome tem de comear por uma letra ou por _ ou $ os restantes caracteres podem ser qualquer caracter que seja visvel a excepo aos nomes so as palavras reservadas do JAVA
Classes
Em JAVA tudo classes ou descreve o que uma classe faz
no possui funes e procedimentos, mas sim blocos de classes
as classes iniciam-se com a palavra reservada class, seguida pelo nome da classe e o seu contedo entre chavetas
class NovaClasse { }
Subclasses
no caso de uma subclasse da classe NovaClasse, necessrio utilizar a directiva extends
class OutraClasse extends NovaClasse { }
o conjunto de operaes que podem operar uma classe designam-se por mtodos
os mtodos so definidos dentro da classe
Criao de objectos
uma classe pode ser comparada a um formulrio que descreve as caratersticas de um conjunto de objectos aps a criao de uma classe possvel definir objectos que so instncias dessa classe; para criar um novo objecto:
o nome da classe de que se quer criar uma instncia o nome do objecto que se pretende criar a palavra chave new o nome da classe, seguida de parentesis, com os valores iniciais dentro deles
new Aleatorio( ); a palavra chave new cria a instncia, alocando a memria necessria para o objecto, inicializando as variveis e chamando o mtodo constructor para o objecto
valor =
Variveis em JAVA
antes de se poder utilizar uma varivel necessrio definir o seu tipo
tambm se pode atribuir um valor no momento da definio
as variveis locais so definidas dentro dos mtodos o JAVA no possui variveis globais disponveis para todos os mtodos
pode-se definir variveis de instncia e variveis objecto (permite a partilha dentro das classes)
Tipos de dados
tipo
byte short int long float double char logical
descrio
inteiro inteiro inteiro inteiro vrgula flutuante vrgula flutuante caracter booleano
nmero de bits
8 16 32 64 32 64 16 8
Vectores
os vectores so listas de itens
cada item do mesmo tipo (um dos tipos primitivos) em JAVA, os vectores so objectos (diferente das linguagens de terceira gerao)
declarar um vector
int valores[ ]; String cadeiaCaracteres[ ];
notao alternativa:
int [ ] valores; String [ ] cadeiaCaracteres;
Vectores
criar um objecto vector; duas formas:
usando new
int [ ] valores = new int[5];
cria uma lista de 5 inteiros; o 1 referido por valores[0] e o ltimo por valores[4]
os vectores so inicializados, 0 para nmeros, falso para booleanos, nulo para strings e \0 para caracteres
alternativamente pode-se especificar os seus valores iniciais
int [ ] valores = {12, 9, 15, 18, 7} String [ ] lingProg = {Java, C++, Pascal};
Vectores
atribuio de valores
lingProg[2]=Delphi;
o JAVA verifica se o indice fornecido est dentro da gama de indices defina, pelo que caso tal no acontea, ocorre um erro de excepo
Mtodos
descrevem um conjunto de operaes que podem ser realizadas com os dados, dentro de uma classe para definir um mtodo, especifica-se:
modificadores o tipo de objecto retornado pelo mtodo o nome do mtodo os parmetros passados ao mtodo o corpo principal do mtodo
Mtodo, exemplo
Exemplo de um pequeno programa com uma classe e um mtodo:
class Programa { public static void main (String args[]) { System.out.println(Sada de dados do programa); // coloca a mensagem no ecran
o mtodo System.out.println coloca uma string no ecran todas as aplicaes JAVA (no os applets) tem que ter um mtodo main
Mtodos
os modificadores podem ser ou pblicos ou privados
um mtodo pblico (public) pode ser chamado de qualquer lugar, na aplicao um mtodo privado (private) pode ser usado pela classe que o definiu um mtodo protegido (protected) pode ser usado em qualquer lugar, de onde foi definido
Mtodos
os mtodos podem ser ou no estticos (static):
os mtodos estticos possuem uma instncia por classe e por isso todos os objectos que pertencem a essa classe partilham a mesma cpia do mtodo os mtodos no estticos possuem uma instncia por objecto. Para especificar no esttico, omite-se a palavra chave static
Mtodos de chamada
class ConvGraus { public static void main (String args []) { float centi, fahr = 67.5; centi = fahrParaCenti(fahr); System.out.println(fahr + "f = " + centi + " c"); } } class temperatura { public static float fahrParaCenti(float valor) { return (valor - 32)*5/9; } }
2 classes e 1 mtodo, que converte escalas de temperatura o valor retornado do tipo vrgula flutoante (o tipo por defeito o inteiro). Para o retorno do valor utilizado o return (se o return void, ento nenhum valor retornado)
para criar uma aplicao executvel adiciona-se um mtodo main depois da definio da classe
public static void main(String args[ ] ) { construcao b = new Construcao( ); b.pisos=9; b.area=6500; b.uso=residncia; b.visualizaUso( ); b.modificaUso(trabalho); b.visualizaUso( ); }
Variveis de instncia
As classes possuem variveis associadas que fazem parte da sua definio
declaradas da mesma forma que as variveis locais, mas definidas fora do mtodo designadas por variveis de instncia, so globais para cada instncia da classe
class Armazem extends Construcao { int areaPiso; int numeroPortas; String uso; }
Variveis de classe
definidas da mesma forma que as variveis de instncia, mas com a palavra chave static
static peDireito
acessvel globalmente na classe, em substituio de uma varivel diferente por cada instncia
as variveis de uma classe so colocadas aps a definio da classe, junto definio das variveis de instncia
Constantes
varivel cujo valor fixo no incio do programa e que no pode ser mudado
final altura = 2.40; final String erroFich = Ficheiro no encontrado;
em JAVA, as variveis locais no podem ser constantes, apenas as variveis de instncia e de classe para delcarar uma constante utilizada a palavra chave final e o valor pretendido
carroUtilitario e carroDesportivo so duas instncias da classe Fiat e podem possuir diferentes valores nas variveis de instncia ccMotor tem que ter o mesmo valor para a varivel marca porque se trata de uma varivel de classe (existe um valor por classe em vez de um valor por instncia)
a palavra chave s pode ser usada dentro de um mtodo de instncia e no num mtodo de classe, uma vez que this se refere instncia corrente de uma classe
A aritmtica e o JAVA
o JAVA possui cinco operadores aritmticos:
+ (adio); - (substraco); / (diviso); * (multiplicao) e % (mdulo)
as variveis mais fracas (de menor gama de valores) so convertidas para as variveis mais fortes, presentes como variveis a operar
0.22 automaticamente uma quantidade de tipo double as constantes 5 e 8, inicialmente inteiros, so convertidas para float por causa da varivel milha: kilometro = (milha * 5.0) / 8.0
aps os clculos, o resultado convertido para o tipo da varivel do lado esquerdo da atribuio
o tipo de dados mais forte o double, atribudo varivel fahrneit o clculo realizado com todos os valores convertidos para double o resultado ento convertido para o tipo int, da varivel centigrados
Casting de variveis
quando se pretende alterar a converso automtica entre diferentes tipos que o JAVA possui por defeito utiliza-se o casting de variveis
especifica-se o tipo de varivel para o qual se pretende a converso
int c, d; float valor;
pode-se efectuar o cast de um objecto para outro que seja sua superclasse ou subclasse no possvel realizar o cast de um objecto para um dos tipos de dados primitivos
existem vrios caracteres de controlo especiais que o JAVA permite especificar \n nova linha \\ caracter \ \t tecla tab \ caracter \b \ caracter backspace \r tecla return \ddd nmero octal \f \xdd nmero hexadecimal formfeed \udddd caracter unicode
Operadores de atribuio
alm do operador =, o JAVA possui outros
contador1, contador2, contador3 = 0: atribudo o valor zero a todas as variveis
a seguinte:
contador1 += 7; novoValor /= intervalo;
Operadores de atribuio
operao c += d c -= d c /= d c *=d c++ c-significado c=c+d c=c-d c=c/d c=c*d c=c+1 c=c-1
Operadores de atribuio
no caso de se incrementar (ou decrementar, neste caso, substituir o sinal + pelo sinal -) um valor possvel representar a operao de uma das seguintes quatro formas:
contador1 = contador1 + 1; contador1 += 1; contador1 ++; ++ contador1;
Atribuio de objectos
O operador = usado para atribuir as variveis de um objecto a outro
public void class Emprego { String ocupacao; int vencimento; empPaula.ocupacao = emp.Sara.ocupacao; emp.vencimento = emp.Sara.ocupacao; }
Atribuio de objectos
no possvel ter
empPaula = empSara
Operadores de comparao
operao == != < > <= >= significado equivalente diferente menor que maior que menor ou igual a maior ou igual a
Operadores de comparao
diferena entre o operador de atribuio e o operador de equivalncia:
if (c = = d) e = f;
- o valor de d atribuido a c e nunca ser atribuido o valor f a e porque e==f um teste de igualdade
Comparao de objectos
podem-se usar os operadores = = e ! =
cuidado; estes operadores no testam se os valores atribuidos aos dois operandos so iguais! com diferentes objectos String que possuem o mesmo texto o valor retornado no true, quando se testa a igualdade, a no ser que ambos refiram o mesmo objecto
Sobreposio de mtodos
o que ?
na definio de um mtodo necessrio declarar explicitamente a lista de parmetros que lhe so passados no JAVA, quando um mtodo chamado com uma lista de prametros incompleta ou incorrecta, obtido um erro com parmetros opcionais, define-se um mtodo com o mesmo nome mas com uma lista diferente de parmetros quando chamado um mtodo, o JAVA examina os parmetros fornecidos e chama o mtodo apropriado
Sobreposio de mtodos
Class MostraErro { MostraErro relataErro(String menasagem) { System.out.println(mensagem); } MostraErro relataErro( ) { System.out.println(Erro desconhecido.); } }
Construtores
mtodos especiais que controlam como um objecto inicalizado no podem ser chamados directamente, mas so lanados pelo JAVA sempre que um objecto criado (sempre a directiva new utilizada) podem ser usados por feitos ou definidos pelo utilizador um mtodo construtor para a classe possui o mesmo nome desta mas no tem tipo de retorno
Construtores, exemplo
com os construtores por defeito
class Pais { String nome; String capital; int populacao; public static void main(String args[ ] ) { Pais portugal; portugal = new Pais( ); portugal.nome = Portugal; portugal.capital = Lisboa; portugal.populacao = 8800000 System.out.println(A capital de + portugal.nome); System.out.println( + portugal.capital); System.out.println(A populao + portugal.populacao); } }
Construtores, exemplo
com o construtor Pais
class Pais { String nome; String capital; int populacao; Pais(String oNome, String aCapital, int aPopulacao) { nome = oNome; capital = aCapital; populacao = aPopulacao; } public static void main(String args[ ] ) { Pais portugal; portugal = new Pais( Portugal, Lisboa, 8800000); System.out.println(A capital de + portugal.nome); System.out.println( + portugal.capital); System.out.println(A populao + portugal.populacao); } }
O mtodo finalize
chamado quando um objecto destruido ou quando um programa termina abruptamente s criado pelo utilizador quando este pretende optimizar a gesto de memria, assegurando que todos os recursos de memria atribuidos ao objecto foram libertados para criar um mtodo finalize prprio
void finalize( ) { }
Tratamento de condies
tomar decises ifelse
if (memoria < 16) System.out.println(Est tudo um bocado lento?);
Tratamento de condies
vrios ifelse encadeados
if (memoria < 8) System.out.println(necessrio comprar mais memria); else if (memoria <=16) System.out.println(memria suficiente); else System.out.println(memria adequada para trabalho);
Blocos de cdigo
permite o agrupamento de linhas de programao em blocos:
if (dia = = sabado) fazerCompras( ); if (dia = = sexta) { calcularVencimentos( ); deduzirImpostos( ); imprimirCheques( ); }
O operador condicional
o seguinte cdigo
if (memoria <= 16) mensagem = memria pequena); else mensagem = memria adequada; System.out.println(mensagem)
equivalente a
String mensagem = memoria <=16 ? memria pequena : memria adequada System.out.println(mensagem)
sintaxe geral:
test ? Resultado verdadeiro : resultado falso
A estrutura switch
forma de especificar mltiplas opes:
if (memoria = = 8) System.out.println(necessrio mais memria); else if (memoria = = 16 ) System.out.println(possui a memria suficiente); else if (memoria = = 32) System.out.println(possui a memria aconselhvel); else if (memoria = = 64) System.out.println(tem memria para trabalhar bem);
A estrutura switch
Switch (memoria) { case 8: System.out.println(necessrio mais memria); break; case 16: System.out.println(possui a memria suficiente); break; case 32; System.out.println(possui a memria aconselhvel); break; case 64: System.out.println(tem memria para trabalhar bem); }
A estrutura switch
a clausula break assegura que na estrutura switch cada bloco asociado a um case realizado, sem os seguintes serem executados a clausula default pode ser usada no final de todas as opes case; neste caso, se nenhuma outra linha de cdigo for executada, o bloco default executado existem algumas limitaes para o
s se usar para condies de igualdade s se podem usar os tipos byte, char, int e short para os testes