U MA I NTRODUÇÃO À J AVA Marcos André S. Kutova [email protected] Setembro/98.

56
UMA INTRODUÇÃO À JAVA Marcos André S. Kutova [email protected] Setembro/98

Transcript of U MA I NTRODUÇÃO À J AVA Marcos André S. Kutova [email protected] Setembro/98.

Page 1: U MA I NTRODUÇÃO À J AVA Marcos André S. Kutova kutova@icmc.sc.usp.br Setembro/98.

UMA INTRODUÇÃO À JAVAUMA INTRODUÇÃO À JAVA

Marcos André S. [email protected]

Setembro/98

Page 2: U MA I NTRODUÇÃO À J AVA Marcos André S. Kutova kutova@icmc.sc.usp.br Setembro/98.

ÍNDICEÍNDICE

• Introdução• Programação Orientada a Objetos• A Linguagem Java• Objetos e Classes em Java• Classes Essenciais• Applets• Classes Avançadas

Page 3: U MA I NTRODUÇÃO À J AVA Marcos André S. Kutova kutova@icmc.sc.usp.br Setembro/98.

IntroduçãoIntrodução

Page 4: U MA I NTRODUÇÃO À J AVA Marcos André S. Kutova kutova@icmc.sc.usp.br Setembro/98.

O QUE É JAVA ?O QUE É JAVA ?

Linguagem de Programação• Simples• Orientada a Objetos• Distribuída• Portável• Robusta• Segura• Interpretada• Independente de arquitetura• Alta Performance• Dinâmica

Page 5: U MA I NTRODUÇÃO À J AVA Marcos André S. Kutova kutova@icmc.sc.usp.br Setembro/98.

O QUE É JAVA ?O QUE É JAVA ?

Linguagem de Programação• Todos os programas Java são compilados e

interpretados

• O compilador transforma o programa em bytecodes independentes de plataforma

• O interpretador testa e executa os bytecodes

Page 6: U MA I NTRODUÇÃO À J AVA Marcos André S. Kutova kutova@icmc.sc.usp.br Setembro/98.

O QUE É JAVA ?O QUE É JAVA ?

Linguagem de Programação• Cada interpretador é uma implementação da JVM -

Java Virtual Machine (ferramenta, browser, hardware)

• “Write Once, Run Anywhere”

Page 7: U MA I NTRODUÇÃO À J AVA Marcos André S. Kutova kutova@icmc.sc.usp.br Setembro/98.

O QUE É JAVA ?O QUE É 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)

Page 8: U MA I NTRODUÇÃO À J AVA Marcos André S. Kutova kutova@icmc.sc.usp.br Setembro/98.

O QUE JAVA PODE FAZER ?O QUE JAVA PODE FAZER ?

Applets

Servlets

Aplicações

Aplicações cliente/servidor

Aplicações para a Internet

Page 9: U MA I NTRODUÇÃO À J AVA Marcos André S. Kutova kutova@icmc.sc.usp.br Setembro/98.

Programação Orientada a ObjetosProgramação Orientada a Objetos

Page 10: U MA I NTRODUÇÃO À J AVA Marcos André S. Kutova kutova@icmc.sc.usp.br Setembro/98.

PROGRAMAÇÃO ORIENTADA A OBJETOSPROGRAMAÇÃO ORIENTADA A OBJETOS

Conceitos Básicos

• Objetos

• Mensagens

• Classes

• Herança

Page 11: U MA I NTRODUÇÃO À J AVA Marcos André S. Kutova kutova@icmc.sc.usp.br Setembro/98.

PROGRAMAÇÃO ORIENTADA A OBJETOSPROGRAMAÇÃO ORIENTADA A OBJETOS

O que são objetos?• Conjunto de variáveis e procedimentos utilizados para

modelar objetos do mundo real (e imaginário)

• Um objeto é caracterizado pelo seu estado e pelo seu comportamento

Exemplo - Lâmpada• Estados - ligada/desligada

• Comportamento - mudar de ligada para desligada mudar de desligada para ligada

Page 12: U MA I NTRODUÇÃO À J AVA Marcos André S. Kutova kutova@icmc.sc.usp.br Setembro/98.

PROGRAMAÇÃO ORIENTADA A OBJETOSPROGRAMAÇÃO ORIENTADA A OBJETOS

O que são mensagens?

• Mensagens são utilizadas para fazer a comunicação

entre os objetos

• Cada objeto entende um conjunto de mensagens que

podem mudar seu estado atual

• Quando há a necessidade de maiores informações, as

mensagens podem conter parâmetros

Page 13: U MA I NTRODUÇÃO À J AVA Marcos André S. Kutova kutova@icmc.sc.usp.br Setembro/98.

PROGRAMAÇÃO ORIENTADA A OBJETOSPROGRAMAÇÃO ORIENTADA A OBJETOS

O que são classes?• Uma classe é uma especificação que define as variáveis

e os métodos comuns a todos os objetos de um certo tipo• Um objeto é uma instância de uma classe

O que é herança?• A herança fornece um mecanismo poderoso e natural

para organização e estruturação de objetos• Uma classe herda estados e comportamentos de sua

superclasse

Page 14: U MA I NTRODUÇÃO À J AVA Marcos André S. Kutova kutova@icmc.sc.usp.br Setembro/98.

PROGRAMAÇÃO ORIENTADA A OBJETOSPROGRAMAÇÃO ORIENTADA A OBJETOS

Exemplo - Lâmpada

class Lamp {

private boolean LampIsOn;

public void turnKnob() { LampIsOn = !LampIsOn; }

public Lamp() { LampIsOn = false; }}

VariávelVariável

MétodoMétodo

ConstrutorConstrutor

Page 15: U MA I NTRODUÇÃO À J AVA Marcos André S. Kutova kutova@icmc.sc.usp.br Setembro/98.

A Linguagem JavaA Linguagem Java

Page 16: U MA I NTRODUÇÃO À J AVA Marcos André S. Kutova kutova@icmc.sc.usp.br Setembro/98.

A LINGUAGEM JAVAA LINGUAGEM JAVA

Comentários• /* texto */

O compilador ignora tudo entre /* e */• /** documentacao */

indica um comentário para documentação. Utilizado pela ferramenta javadoc

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

Page 17: U MA I NTRODUÇÃO À J AVA Marcos André S. Kutova kutova@icmc.sc.usp.br Setembro/98.

A LINGUAGEM JAVAA LINGUAGEM JAVA

Tipos de dados• Inteiros: byte / short / int / long

• Reais: float / double

• Outros: char / boolean

Nomes de variáveis• Série de caracteres Unicode

• Não pode ser palavra chave

• Não pode ser nome de outra variável ou classe

Page 18: U MA I NTRODUÇÃO À J AVA Marcos André S. Kutova kutova@icmc.sc.usp.br Setembro/98.

A LINGUAGEM JAVAA LINGUAGEM JAVA

Inicializaçãoint i = 10;

char c;

c = ‘X’;

Variáveis finaisfinal float pi = 3.14159;

(final também pode ser utilizado para métodos. Os

métodos finais não podem ter subclasses)

Page 19: U MA I NTRODUÇÃO À J AVA Marcos André S. Kutova kutova@icmc.sc.usp.br Setembro/98.

A LINGUAGEM JAVAA LINGUAGEM JAVA

Operadores

• Atribuição: =

• Aritméticos: + - * / %

• Unários: ++ --

• Lógicos: = = != < > <= >=

Page 20: U MA I NTRODUÇÃO À J AVA Marcos André S. Kutova kutova@icmc.sc.usp.br Setembro/98.

A LINGUAGEM JAVAA LINGUAGEM JAVA

Instruções de controle de fluxo

• Condicionais

if-else / switch-case (break)

• Laço

for / while / do-while

• Exceção

try-catch-finally (throw)

Page 21: U MA I NTRODUÇÃO À J AVA Marcos André S. Kutova kutova@icmc.sc.usp.br Setembro/98.

A LINGUAGEM JAVAA LINGUAGEM JAVA

Vetores

• Declaração

int[] arrayOfInts;

• Inicialização

arrayOfInts = new int[10];

• Declaração e inicialização (elemento de 0 a 9)

int[] arrayOfInts = new int[10];

Page 22: U MA I NTRODUÇÃO À J AVA Marcos André S. Kutova kutova@icmc.sc.usp.br Setembro/98.

A LINGUAGEM JAVAA LINGUAGEM JAVA

Strings

• Declarações e atribuições

String cde = “cde”;

char data[] = { ‘a’, ‘b’, ‘c’ };

String str = new String( data );

String cc = “ab”+cde;

• As strings podem ser concatenadas através do operador +

• As strings não podem ser alteradas

Page 23: U MA I NTRODUÇÃO À J AVA Marcos André S. Kutova kutova@icmc.sc.usp.br Setembro/98.

A LINGUAGEM JAVAA LINGUAGEM JAVA

Strings - Alguns Métodos

.substring()

.startsWith()

.endsWith()

.length()

.toUpperCase()

.toLowerCase()

.replace()

.charAt()

.trim

.equals()

.compareTo()

.equalsIgnoreCase()

.toString()

String.valueOf()

Page 24: U MA I NTRODUÇÃO À J AVA Marcos André S. Kutova kutova@icmc.sc.usp.br Setembro/98.

A LINGUAGEM JAVAA LINGUAGEM JAVA

StringBuffer• Permitem criar strings que podem ser alteradas

• Todos os métodos da classe StringBuffer são synchronized

• Desempenho pior do que com Strings

• Principais métodos: .append()

.insert()

.length()

.toString()

Page 25: U MA I NTRODUÇÃO À J AVA Marcos André S. Kutova kutova@icmc.sc.usp.br Setembro/98.

A LINGUAGEM JAVAA LINGUAGEM JAVA

O Método main• class HelloWorld { public static void main( String[] args ) { System.out.println( “Hello World!” ); }}

• Quando o interpretador Java executa uma aplicação, ele começa chamando o método main

• O método main então chama todos os outros métodos necessários para executar a aplicação

Page 26: U MA I NTRODUÇÃO À J AVA Marcos André S. Kutova kutova@icmc.sc.usp.br Setembro/98.

A LINGUAGEM JAVAA LINGUAGEM JAVA

Controlando o acesso aos membros da classe

Especificador classe subclasse pacote todos

----------------------------------------------------------------

private X

protected X X X public X X X X

package X X

Page 27: U MA I NTRODUÇÃO À J AVA Marcos André S. Kutova kutova@icmc.sc.usp.br Setembro/98.

A LINGUAGEM JAVAA LINGUAGEM JAVA

Métodos e variáveis estáticos• Declarados com o especificador static• São comuns a todos os objetos da classe• Utilizados para declaração de constantes• Utilizados para declaração de métodos que não necessitam de

uma instância 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 );}

Page 28: U MA I NTRODUÇÃO À J AVA Marcos André S. Kutova kutova@icmc.sc.usp.br Setembro/98.

Objetos e Classes em JavaObjetos e Classes em Java

Page 29: U MA I NTRODUÇÃO À J AVA Marcos André S. Kutova kutova@icmc.sc.usp.br Setembro/98.

OBJETOS E CLASSES EM JAVAOBJETOS E CLASSES EM JAVA

Exemplo: Lâmpada

class Lamp {

private boolean LampIsOn;

public void turnKnob() { LampIsOn = !LampIsOn; }

public Lamp() { LampIsOn = false; }}

VariávelVariável

MétodoMétodo

ConstrutorConstrutor

Page 30: U MA I NTRODUÇÃO À J AVA Marcos André S. Kutova kutova@icmc.sc.usp.br Setembro/98.

OBJETOS E CLASSES EM JAVAOBJETOS E CLASSES EM JAVA

Criando um objeto da classe LampLamp l;

l = new Lamp();

Lamp l1 = new Lamp();

Lamp l2 = new Lamp();

Acessando variáveis e métodosl1.turnKnob();

l2.LampIsOn = true;

Viola definição de visibilidade

Viola definição de visibilidade

Page 31: U MA I NTRODUÇÃO À J AVA Marcos André S. Kutova kutova@icmc.sc.usp.br Setembro/98.

OBJETOS E CLASSES EM JAVAOBJETOS E CLASSES EM JAVA

Herança

class StrobeLamp extends Lamp {

private int strobeRate;

public setStrobeRate( int s ) { strobeRate = s; }

}

Page 32: U MA I NTRODUÇÃO À J AVA Marcos André S. Kutova kutova@icmc.sc.usp.br Setembro/98.

OBJETOS E CLASSES EM JAVAOBJETOS E CLASSES EM JAVA

Garbage Collector• A plataforma Java periodicamente libera a memória

usada por objetos que não são mais necessários

• O Garbage Collector roda em uma thread de baixa prioridade e remove todos os objetos que não são mais referenciados

Finalização• Antes de um objeto ser destruído, o Garbage Collector

executa o método finalize do objeto (quanto existir)

• Isto permite, por exemplo, o fechamento de arquivos e conexões de rede

Page 33: U MA I NTRODUÇÃO À J AVA Marcos André S. Kutova kutova@icmc.sc.usp.br Setembro/98.

OBJETOS E CLASSES EM JAVAOBJETOS E CLASSES EM JAVA

this• A palavra reservada this permite que um objeto consiga

uma referência própria• Referência a uma variável do objetoint s;public setStrobeRate( int s ) { this.s = s;}

• Passagem de referência própriaanimation = new Thread( this );

Page 34: U MA I NTRODUÇÃO À J AVA Marcos André S. Kutova kutova@icmc.sc.usp.br Setembro/98.

OBJETOS E CLASSES EM JAVAOBJETOS E CLASSES EM JAVA

super• Referência à superclasse• Utilizado para chamar o construtor da superclasseint s;public StrobeLamp( int s ) { super(); this.s = s;}

• Utilizado para chamar métodos da superclassepublic finalize() { f.close(); super().finalize();}

Page 35: U MA I NTRODUÇÃO À J AVA Marcos André S. Kutova kutova@icmc.sc.usp.br Setembro/98.

OBJETOS E CLASSES EM JAVAOBJETOS E CLASSES EM JAVA

Interfaces• Interface é uma especificação que permite que objetos

não relacionados possam interagir (análogo a protocolo)

• As interfaces definem conjuntos de métodos, mas não os implementam

• Uma classe que implemente a interface deve implementar TODOS os métodos definidos nesta.

• public interface Sleeper { public void wakeUp(); public long ONE_SECOND = 1000; // milli}

Page 36: U MA I NTRODUÇÃO À J AVA Marcos André S. Kutova kutova@icmc.sc.usp.br Setembro/98.

OBJETOS E CLASSES EM JAVAOBJETOS 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 necessários a um programa devem ser incorporados através do comando import.

• Basta incluir no início arquivo da classe a linha:package nomePacote;

• Por convenção, deve-se usar o nome do pacote no formato:com.company.package oucom.company.region.package

Page 37: U MA I NTRODUÇÃO À J AVA Marcos André S. Kutova kutova@icmc.sc.usp.br Setembro/98.

Classes EssenciaisClasses Essenciais

Page 38: U MA I NTRODUÇÃO À J AVA Marcos André S. Kutova kutova@icmc.sc.usp.br Setembro/98.

CLASSES ESSENCIAISCLASSES ESSENCIAIS

Classe System - Recursos do Sistema• Não há a necessidade de inicialização (classe final)

• Todos os métodos são estáticos

• Algumas plataformas podem gerar erros por não possuírem os dispositivos acessados

class UserNameTest {

public static void main(String[] args) {

String name;

name = System.getProperty("user.name");

System.out.println(name);

}

}

Page 39: U MA I NTRODUÇÃO À J AVA Marcos André S. Kutova kutova@icmc.sc.usp.br Setembro/98.

CLASSES ESSENCIAISCLASSES ESSENCIAIS

Exceções• A linguagem Java utiliza as exceções para fornecer

capacidades de controle de erros quando, durante a execução de um programa, ocorrer um evento que interrompa o fluxo normal de instruções

• Vantagens:• Separar o gerenciamento de erro do resto do código

• Propagar erros

• Agrupar os erros

Page 40: U MA I NTRODUÇÃO À J AVA Marcos André S. Kutova kutova@icmc.sc.usp.br Setembro/98.

CLASSES ESSENCIAISCLASSES ESSENCIAIS

Exceções• try {

// abre o arquivo // determina o seu tamanho // aloca a memória necessária // lê o arquivo para a memória // fecha o arquivo} catch (fileOpenFailed) { fazAlgo;} catch (sizeDeterminationFailed) { fazAlgo;} catch (memoryAllocationFailed) { fazAlgo;} catch (readFailed) { fazAlgo;} catch (fileCloseFailed) { fazAlgo;}

Page 41: U MA I NTRODUÇÃO À J AVA Marcos André S. Kutova kutova@icmc.sc.usp.br Setembro/98.

CLASSES ESSENCIAISCLASSES ESSENCIAIS

Threads• Uma thread - também chamada de linha de execução -

é um fluxo sequencial simples de controle dentro de um programa.

• Quando uma thread é criada, ela executa o método run do objeto.

Page 42: U MA I NTRODUÇÃO À J AVA Marcos André S. Kutova kutova@icmc.sc.usp.br Setembro/98.

CLASSES ESSENCIAISCLASSES ESSENCIAIS

Lendo e escrevendo• Normalmente, os programas devem ler ou escrever

informações em fontes/destinos externos (arquivos, memória, rede, ...).

• Estas informações podem ser de qualquer tipo: números, textos, imagens, ...

• A API Java permite que o programa crie um fluxo para cada um destes pontos externos.

Page 43: U MA I NTRODUÇÃO À J AVA Marcos André S. Kutova kutova@icmc.sc.usp.br Setembro/98.

CLASSES ESSENCIAISCLASSES ESSENCIAIS

Lendo e escrevendo

Page 44: U MA I NTRODUÇÃO À J AVA Marcos André S. Kutova kutova@icmc.sc.usp.br Setembro/98.

CLASSES ESSENCIAISCLASSES ESSENCIAIS

Lendo e escrevendo• Os fluxos podem ser de bytes ou caracteres.

• As fontes e destinos podem ser físicas ou apenas de processamento.

• Métodos: .read() e .write()

• Quando necessários, deve-se utilizar a serialização de objetos.

Page 45: U MA I NTRODUÇÃO À J AVA Marcos André S. Kutova kutova@icmc.sc.usp.br Setembro/98.

AppletsApplets

Page 46: U MA I NTRODUÇÃO À J AVA Marcos André S. Kutova kutova@icmc.sc.usp.br Setembro/98.

APPLETSAPPLETS

O que são Applets?

• Applets são aplicações Java que permitem estender as

funcionalidades da páginas da Internet.

• As applets são executas juntamente com um browser ou

pelo appletviewer (programa do JDK para rodar

applets).

• As applets são chamdas por um documento HTML.

Page 47: U MA I NTRODUÇÃO À J AVA Marcos André S. Kutova kutova@icmc.sc.usp.br Setembro/98.

APPLETSAPPLETS

Características

• As applets não possuem o método main.

• Uma applet não tem acesso aos recursos da máquina

local.

• Uma applet somente pode utilizar recursos do servidor

de onde veio.

Page 48: U MA I NTRODUÇÃO À J AVA Marcos André S. Kutova kutova@icmc.sc.usp.br Setembro/98.

APPLETSAPPLETS

Ciclo de vida• .init() Este método é chamado para inicializar a

applet.

• .start() Este método inicia a execução da applet. É chamado após a inicialização e toda vez que o usuário volta à pagina (enquanto estiver na memória).

• .paint() Desenha a applet.

• .stop() Interrompe a execução da applet. Inclusive quando o usuário deixa a página.

• .destroy() Libera os recursos alocados pela applet

Page 49: U MA I NTRODUÇÃO À J AVA Marcos André S. Kutova kutova@icmc.sc.usp.br Setembro/98.

APPLETSAPPLETS

import java.applet.Applet;

import java.awt.Graphics;

public class HelloWorld extends Applet {

public void paint(Graphics g) {

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

}

}

Page 50: U MA I NTRODUÇÃO À J AVA Marcos André S. Kutova kutova@icmc.sc.usp.br Setembro/98.

APPLETSAPPLETS

<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>

Page 51: U MA I NTRODUÇÃO À J AVA Marcos André S. Kutova kutova@icmc.sc.usp.br Setembro/98.

Classes AvançadasClasses Avançadas

Page 52: U MA I NTRODUÇÃO À J AVA Marcos André S. Kutova kutova@icmc.sc.usp.br Setembro/98.

CLASSES AVANÇADASCLASSES AVANÇADAS

java.awt• Abstract Windowing Toolkit

• Objetivo de fornecer as funcionalidades básicas presentes em todas as plataformas gráficas

• Componentes:Label, Button, CheckBox, Choice, List, TextField, MenuItem, Frame, Dialog, Panel, ...

Page 53: U MA I NTRODUÇÃO À J AVA Marcos André S. Kutova kutova@icmc.sc.usp.br Setembro/98.

CLASSES AVANÇADASCLASSES AVANÇADAS

java.net• Permite a criação de programas que comuniquem com

recursos ou outros programas em uma rede

• Permite conexões TCP ou UDP

java.rmi• Remote Method Invocation

• Permite que um objeto rodando em uma JVM invoque métodos de um objeto rodando em outra JVM

Page 54: U MA I NTRODUÇÃO À J AVA Marcos André S. Kutova kutova@icmc.sc.usp.br Setembro/98.

CLASSES AVANÇADASCLASSES AVANÇADAS

java.security• Importa a funcionalidade da criptografia, incluindo

assinaturas digitais, gerenciamento de chaves e gerenciamento de certificados

java.sql• Permite a conexão aos sistemas de banco de dados

tradicionais, inclusive permitindo a execução de instruções SQL

Page 55: U MA I NTRODUÇÃO À J AVA Marcos André S. Kutova kutova@icmc.sc.usp.br Setembro/98.

CLASSES AVANÇADASCLASSES AVANÇADAS

Outras classes• Java 2D

• Java 3D

• Internacionalização

• Java Beans

• Swing

• Servlets

• Java Sound

• Java Media Player

• Java Native Interface

Page 56: U MA I NTRODUÇÃO À J AVA Marcos André S. Kutova kutova@icmc.sc.usp.br Setembro/98.

ReferênciasReferências

• 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