Marcos André S. Kutova kutova@icmc.sc.usp.br Setembro/98 UMA INTRODUÇÃO À JAVA Marcos André S. Kutova kutova@icmc.sc.usp.br Setembro/98
ÍNDICE Introdução Programação Orientada a Objetos A Linguagem Java Objetos e Classes em Java Classes Essenciais Applets Classes Avançadas
Introdução
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
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
O QUE É JAVA ? Linguagem de Programação Cada interpretador é uma implementação da JVM - Java Virtual Machine (ferramenta, browser, hardware) “Write Once, Run Anywhere”
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)
O QUE JAVA PODE FAZER ? Applets Servlets Aplicações Aplicações cliente/servidor Aplicações para a Internet
Programação Orientada a Objetos
PROGRAMAÇÃO ORIENTADA A OBJETOS Conceitos Básicos Objetos Mensagens Classes Herança
PROGRAMAÇÃ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
PROGRAMAÇÃ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
PROGRAMAÇÃ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
PROGRAMAÇÃO ORIENTADA A OBJETOS Exemplo - Lâmpada class Lamp { private boolean LampIsOn; public void turnKnob() { LampIsOn = !LampIsOn; } public Lamp() { LampIsOn = false; Variável Método Construtor
A Linguagem Java
A 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
A LINGUAGEM JAVA Tipos de dados Nomes de variáveis 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
A LINGUAGEM JAVA Inicialização Variáveis finais int i = 10; char c; c = ‘X’; Variáveis finais final float pi = 3.14159; (final também pode ser utilizado para métodos. Os métodos finais não podem ter subclasses)
A LINGUAGEM JAVA Operadores Atribuição: = Aritméticos: + - * / % Unários: ++ -- Lógicos: = = != < > <= >=
A LINGUAGEM JAVA Instruções de controle de fluxo Condicionais Laço if-else / switch-case (break) Laço for / while / do-while Exceção try-catch-finally (throw)
A LINGUAGEM JAVA Vetores Declaração Inicialização int[] arrayOfInts; Inicialização arrayOfInts = new int[10]; Declaração e inicialização (elemento de 0 a 9) int[] arrayOfInts = new int[10];
A 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
A LINGUAGEM JAVA Strings - Alguns Métodos .substring() .equals() .startsWith() .endsWith() .length() .toUpperCase() .toLowerCase() .replace() .charAt() .trim .equals() .compareTo() .equalsIgnoreCase() .toString() String.valueOf()
A 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()
A 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
A 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
A 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 ); }
Objetos e Classes em Java
OBJETOS E CLASSES EM JAVA Exemplo: Lâmpada class Lamp { private boolean LampIsOn; public void turnKnob() { LampIsOn = !LampIsOn; } public Lamp() { LampIsOn = false; Variável Método Construtor
OBJETOS E CLASSES EM JAVA Criando um objeto da classe Lamp Lamp l; l = new Lamp(); Lamp l1 = new Lamp(); Lamp l2 = new Lamp(); Acessando variáveis e métodos l1.turnKnob(); l2.LampIsOn = true; Viola definição de visibilidade
OBJETOS E CLASSES EM JAVA Herança class StrobeLamp extends Lamp { private int strobeRate; public setStrobeRate( int s ) { strobeRate = s; }
OBJETOS 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
OBJETOS 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 objeto int s; public setStrobeRate( int s ) { this.s = s; } Passagem de referência própria animation = new Thread( this );
OBJETOS E CLASSES EM JAVA super Referência à superclasse Utilizado para chamar o construtor da superclasse int s; public StrobeLamp( int s ) { super(); this.s = s; } Utilizado para chamar métodos da superclasse public finalize() { f.close(); super().finalize(); }
OBJETOS 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 }
OBJETOS 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 ou com.company.region.package
Classes Essenciais
CLASSES 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); }
CLASSES 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
CLASSES 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; }
CLASSES 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.
CLASSES 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.
CLASSES ESSENCIAIS Lendo e escrevendo
CLASSES 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.
Applets
APPLETS 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.
APPLETS 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.
APPLETS 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
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); }
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>
Classes Avançadas
CLASSES 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, ...
CLASSES AVANÇADAS java.net java.rmi 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
CLASSES AVANÇADAS java.security java.sql 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
CLASSES AVANÇADAS Outras classes Java 2D Java 3D Internacionalização Java Beans Swing Servlets Java Sound Java Media Player Java Native Interface
Referê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