Você está na página 1de 61

INTRODUO AO JAVA

Jorge Machado

NDICE
Introduo Programao Orientada a Objectos A Linguagem Java Objetos e Classes em Java Classes Essenciais Applets Classes Avanadas

Jorge Machado

Introduo

Jorge Machado

O QUE JAVA ?
Linguagem de Programao
Simples Orientada a Objectos Distribuda Portvel Robusta Segura Interpretada Independente de arquitetura Alta Performance Jorge Machado Dinmica

O QUE o JAVA ?
Linguagem de Programao
Todos os programas Java so compilados e interpretados O compilador transforma o programa em bytecodes independentes de plataforma O interpretador testa e executa os bytecodes

Jorge Machado

O QUE o JAVA ?
Linguagem de Programao
Cada interpretador uma implementao da JVM Java Virtual Machine (ferramenta, browser, hardware) Write Once, Run Anywhere

Jorge Machado

O QUE o JAVA ?
Plataforma Java
Uma plataforma o ambiente de hardware e software onde um programa executado A plataforma Java um ambiente somente de software Componentes: Java Virtual Machine (Java VM) Java Application Programming Interface (Java API)

Jorge Machado

O QUE JAVA PODE FAZER ?


Applets Servlets Aplicaes Aplicaes cliente/servidor Aplicaes para a Internet

Jorge Machado

Programao Orientada a Objectos

Jorge Machado

PROGRAMAO ORIENTADA A OBJECTOS

Conceitos Bsicos
Objectos Mensagens Classes Herana

Jorge Machado

PROGRAMAO ORIENTADA A OBJECTOS

O que so objectos?
Conjunto de variveis e procedimentos utilizados para modelar objectos do mundo real (e imaginrio) Um objecto caracterizado pelo seu estado e pelo seu comportamento

Exemplo - Lmpada
Estados - ligada/desligada Comportamento - mudar de ligada para desligada mudar de desligada para ligada
Jorge Machado

PROGRAMAO ORIENTADA A OBJECTOS


O que so mensagens?
Mensagens so utilizadas para fazer a comunicao entre os objectos Cada objecto entende um conjunto de mensagens que podem mudar seu estado atual Quando h a necessidade de maiores informaes, as mensagens podem conter parmetros

Jorge Machado

PROGRAMAO ORIENTADA A OBJETOS


O que so classes?
Uma classe uma especificao que define as variveis e os mtodos comuns a todos os objectos de um certo tipo (a classe de objectos) Um objecto uma instncia de uma classe

O que herana?
A herana fornece um mecanismo poderoso e natural para organizao e estruturao de classes Uma classe herda estados e comportamentos de sua superclasse Jorge Machado

PROGRAMAO ORIENTADA A OBJECTOS

Exemplo - Lmpada
class Lamp { private boolean LampIsOn; public void turnKnob() { LampIsOn = !LampIsOn; } public Lamp() { LampIsOn = false; } }
Jorge Machado

Varivel

Mtodo

Construtor

A Linguagem Java

Jorge Machado

A LINGUAGEM JAVA
Comentrios
/* texto */

O compilador ignora tudo entre /* e */


/** documentacao */

indica um comentrio para documentao. Utilizado pela ferramenta javadoc


// texto

O compilador ignora todos os caracteres de // at o final da linha

Jorge Machado

A LINGUAGEM JAVA
Tipos de dados
Inteiros: byte / short / int / long Reais: float / double Outros: char / boolean

Nomes de variveis
Srie de caracteres Unicode No pode ser palavra chave No pode ser nome de outra varivel ou classe
Jorge Machado

A LINGUAGEM JAVA
Inicializao
int i = 10; char c; c = X;

Variveis finais
final float pi = 3.14159;

(final tambm pode ser utilizado para mtodos. Os mtodos finais no podem ter subclasses)
Jorge Machado

A LINGUAGEM JAVA
Operadores
Atribuio: = Aritmticos: + - * Unrios: Lgicos:
++ == -!= < > <= >= / %

Jorge Machado

A LINGUAGEM JAVA
Instrues de controle de fluxo
Condicionais
if-else / switch-case (break) / do-while (throw)

Lao
for / while

Excepo
try-catch-finally

A excepo mais genrica um Throwable Depois vem o Exception. ImplementationException e RuntimeException no necessitam de catch

Jorge Machado

A LINGUAGEM JAVA
Vetores
Declarao
int[] arrayOfInts;

Inicializao
arrayOfInts = new int[10];

Declarao e inicializao (elemento de 0 a 9)


int[] arrayOfInts = new int[10];

Jorge Machado

A LINGUAGEM JAVA
Strings
Declaraes e atribuies
String cde = cde; char data[] = { a, b, c }; String str = new String( data ); String cc = ab+cde;

As strings podem ser concatenadas atravs do operador + As strings no podem ser alteradas
Jorge Machado

A LINGUAGEM JAVA
Strings - Alguns Mtodos
.substring() .startsWith() .endsWith() .length() .toUpperCase() .toLowerCase() .replace() .charAt() .trim .equals() .compareTo() .equalsIgnoreCase()

.toString() String.valueOf()

Jorge Machado

A LINGUAGEM JAVA
StringBuffer
Permitem criar strings que podem ser alteradas Todos os mtodos da classe StringBuffer so synchronized Desempenho pior do que com Strings Principais mtodos:
.append() .insert() .length() .toString()
Jorge Machado

A LINGUAGEM JAVA
O Mtodo main
class HelloWorld { public static void main( String[] args ) { System.out.println( Hello World! ); } }

Quando o interpretador Java executa uma aplicao, ele comea chamando o mtodo main O mtodo main ento chama todos os outros mtodos necessrios para executar a aplicao

Jorge Machado

A LINGUAGEM JAVA
Controlando o acesso aos membros da classe Especificador classe subclasse pacote todos ---------------------------------------------------------------private X protected X X X

public package

X X

X
Jorge Machado

X X

A LINGUAGEM JAVA
Mtodos e variveis estticos
Declarados com o especificador static So comuns a todos os objectos da classe Utilizados para declarao de constantes Utilizados para declarao de mtodos que no necessitam de uma instncia da classe

static int FALSO 0; static int VERDADEIRO 1; public static boolean testa( int p ) { if( p == this.VERDADEIRO ) return( true ); else return( false ); }
Jorge Machado

Objectos e Classes em Java

Jorge Machado

OBJECTOS E CLASSES EM JAVA


Exemplo: Lmpada
class Lamp { private boolean LampIsOn; public void turnKnob() { LampIsOn = !LampIsOn; } public Lamp() { LampIsOn = false; } }
Jorge Machado

Varivel

Mtodo

Construtor

OBJECTOS E CLASSES EM JAVA


Criando um objeto da classe Lamp
Lamp l; l = new Lamp(); Lamp l1 = new Lamp(); Lamp l2 = new Lamp();

Acessando variveis e mtodos


l1.turnKnob(); l2.LampIsOn = true;
Viola definio de visibilidade
Jorge Machado

OBJECTOS E CLASSES EM JAVA


Herana
class StrobeLamp extends Lamp { private int strobeRate; public setStrobeRate( int s ) { strobeRate = s; } }

Jorge Machado

OBJECTOS E CLASSES EM JAVA


Garbage Collector
A plataforma Java periodicamente libera a memria usada por objetos que no so mais necessrios O Garbage Collector roda em uma thread de baixa prioridade e remove todos os objetos que no so mais referenciados

Finalizao
Antes de um objeto ser destrudo, o Garbage Collector executa o mtodo finalize do objeto (quanto existir) Isto permite, por exemplo, o fechamento de arquivos e conexes de rede
Jorge Machado

OBJECTOS E CLASSES EM JAVA


this
A palavra reservada this permite que um objecto consiga uma referncia a si prprio Referncia a uma varivel do objecto
int s; public setStrobeRate( int s ) { this.s = s; }

Passagem de referncia prpria


animation = new Thread( this );

Jorge Machado

OBJECTOS E CLASSES EM JAVA


super
Referncia superclasse Utilizado para chamar o construtor da superclasse
int s; public StrobeLamp( int s ) { super(); this.s = s; }

Utilizado para chamar mtodos da superclasse


public finalize() { f.close(); super().finalize(); }
Jorge Machado

OBJECTOS E CLASSES EM JAVA


Interfaces
Interface uma especificao que permite que objectos no relacionados possam interagir (anlogo a protocolo) As interfaces definem conjuntos de mtodos, mas no os implementam Uma classe que implemente a interface deve implementar TODOS os mtodos definidos nesta.
public interface Sleeper { public void wakeUp(); public long ONE_SECOND = 1000; // milli }
Jorge Machado

OBJECTOS E CLASSES EM JAVA


Pacotes
Para facilitar o uso, controle de acesso e controle de conflito de nomes, os programadores agrupam classes e interfaces relacionadas em pacotes. Os pacotes necessrios a um programa devem ser incorporados atravs do comando import. Basta incluir no incio arquivo da classe a linha:
package nomePacote;

Por conveno, deve-se usar o nome do pacote no formato: com.company.package ou


com.company.region.package Jorge Machado

Classes Essenciais

Jorge Machado

CLASSES ESSENCIAIS
Classe System - Recursos do Sistema
No h a necessidade de inicializao (classe final) Todos os mtodos so estticos Algumas plataformas podem gerar erros por no possurem os dispositivos acessados
class UserNameTest { public static void main(String[] args) { String name; name = System.getProperty("user.name"); System.out.println(name); } }
Jorge Machado

CLASSES ESSENCIAIS
Excepes
A linguagem Java utiliza as excepes para fornecer capacidades de controle de erros quando, durante a execuo de um programa, ocorrer um evento que interrompa o fluxo normal de instrues Vantagens:
Separar o tratamento do erro do resto do cdigo Propagar erros Agrupar os erros

Jorge Machado

CLASSES ESSENCIAIS
Excees
try { // abre o arquivo // determina o seu tamanho // aloca a memria necessria // l o arquivo para a memria // fecha o arquivo (FileOpenFailed e1) { fazAlgo; (SizeDeterminationFailed e2) { fazAlgo; (MemoryAllocationFailed e3) { fazAlgo; (ReadFailed e4) { fazAlgo; (FileCloseFailed e5) { fazAlgo;
Jorge Machado

} catch } catch } catch } catch } catch }

CLASSES ESSENCIAIS
Threads
Uma thread - tambm chamada de linha de execuo um fluxo sequencial simples de controle dentro de um programa. Quando uma thread criada, ela executa o mtodo run do objecto.

Jorge Machado

Criar uma Thread em ciclo


Thread t = new Thread( new Runnable() { public void run() { while(true){} } } ); t.start();
Jorge Machado

Interfaces Substituem a herana mltipla do C++ No tm implementaes Ideais para implementar callbacks Ideais para manter a independncia entre mdulos

Jorge Machado

Interfaces exemplos
public interface Aula{ public int numeroDeAlunos(); public boolean verificaAulaPelaJanela(); } outro exemplo class Sensor{ public interface Callback{ public void deteccao(int valor); } public void processaServico(Callback callback){ while(true){ callback.deteccao(valor); } } } class Monitor{ public void Monitoriza(){ Sensor s = new Sensor(); s.processaServico(new Sensor.Callback(){ public void deteccao(int valor){ //faz alguma coisa nesta classe } } ); } }

Jorge Machado

CLASSES ESSENCIAIS
Lendo e escrevendo
Normalmente, os programas devem ler ou escrever informaes em fontes/destinos externos (arquivos, memria, rede, ...). Estas informaes podem ser de qualquer tipo: nmeros, textos, imagens, ... A API Java permite que o programa crie um fluxo para cada um destes pontos externos.

Jorge Machado

CLASSES ESSENCIAIS
Lendo e escrevendo

Jorge Machado

Streams Execmplo para leituras e escritas de ficheiros FileInputStream ZipInputStream GzInputStream GzOutputStream WEB new URL(http://....).getInputStream();

Jorge Machado

CLASSES ESSENCIAIS
Lendo e escrevendo
Os fluxos podem ser de bytes ou caracteres. As fontes e destinos podem ser fsicas ou apenas de processamento. Mtodos: .read() e .write() Quando necessrios, deve-se utilizar a serializao de objectos. Um objecto pode ser serializado em XML ou Binrio com o java serialize

Jorge Machado

Serializao
public class Employee implements java.io.Serializable { public String name; public String address; public void mailCheck() { System.out.println("Mailing a check to " + name + " " + address); } }

Serializao
FileOutputStream fileOut = new FileOutputStream("employee.ser"); ObjectOutputStream out = new ObjectOutputStream(fileOut); out.writeObject(e); out.close(); fileOut.close();

Desserializao
FileInputStream fileIn = new FileInputStream("employee.ser"); ObjectInputStream in = new ObjectInputStream(fileIn); e = (Employee) in.readObject(); in.close(); fileIn.close();

Jorge Machado

Applets (WEB ou Locais)

Jorge Machado

APPLETS
O que so Applets?
Applets so aplicaes Java que permitem estender as funcionalidades da pginas da Internet. As applets so executas juntamente com um browser ou pelo appletviewer (programa do JDK para rodar applets). As applets so chamdas por um documento HTML.

Jorge Machado

APPLETS
Caractersticas
As applets no possuem o mtodo main. Uma applet no tem acesso aos recursos da mquina local. Uma applet somente pode utilizar recursos do servidor de onde veio.

Jorge Machado

APPLETS
Ciclo de vida
.init() Este mtodo chamado para inicializar a applet. .start() Este mtodo inicia a execuo da applet. chamado aps a inicializao e toda vez que o usurio volta pagina (enquanto estiver na memria). .paint() Desenha a applet. .stop() Interrompe a execuo da applet. Inclusive quando o usurio deixa a pgina. .destroy() Libera os recursos alocados pela applet
Jorge Machado

APPLETS
import java.applet.Applet; import java.awt.Graphics; public class HelloWorld extends Applet {

public void paint(Graphics g) {


g.drawString("Hello world!", 50, 25); } }

Jorge Machado

APPLETS
<HTML> <HEAD> <TITLE> A Simple Program </TITLE> </HEAD> <BODY> Here is the output of my program: <APPLET CODE="HelloWorld.class" WIDTH=150 HEIGHT=25> </APPLET> </BODY> </HTML>

Jorge Machado

Classes Avanadas

Jorge Machado

CLASSES AVANADAS
java.awt
Abstract Windowing Toolkit Objetivo de fornecer as funcionalidades bsicas presentes em todas as plataformas grficas Componentes: Label, Button, CheckBox, Choice, List, TextField, MenuItem, Frame, Dialog, Panel, ...

Jorge Machado

CLASSES AVANADAS
java.net
Permite a criao de programas que comuniquem com recursos ou outros programas em uma rede Permite conexes TCP ou UDP

java.rmi
Remote Method Invocation Permite que um objeto rodando em uma JVM invoque mtodos de um objeto rodando em outra JVM
Jorge Machado

CLASSES AVANADAS
java.security
Importa a funcionalidade da criptografia, incluindo assinaturas digitais, gerenciamento de chaves e gerenciamento de certificados

java.sql
Permite a conexo aos sistemas de banco de dados tradicionais, inclusive permitindo a execuo de instrues SQL
Jorge Machado

CLASSES AVANADAS
Outras classes
Java 2D Java 3D Internacionalizao Java Beans Swing Servlets Java Sound Java Media Player Java Native Interface
Jorge Machado

Referncias
Java Technology Homepage - http://java.sun.com Teach yourself Java 1.1 in 21 Days, L. Lemay & C. Perkins Java Unleashed, Michael Morrison The Java Tutorial, Mary Campione & Kathy Walrath
Jorge Machado