UMA INTRODUÇÃO À JAVA Marcos André S. Kutova [email protected] 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 Variável class Lamp { private boolean LampIsOn; public void turnKnob() { LampIsOn = !LampIsOn; } public Lamp() { LampIsOn = false; } } 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 • 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 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 if-else / switch-case (break) • Laço for / while / do-while • Exceção try-catch-finally (throw) A 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]; 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() .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 package X X X X 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 Variável class Lamp { private boolean LampIsOn; public void turnKnob() { LampIsOn = !LampIsOn; } public Lamp() { LampIsOn = false; } } 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 { } catch } catch } catch } catch } catch } // abre o arquivo // determina o seu tamanho // aloca a memória necessária // lê o arquivo para a memória // fecha o arquivo (fileOpenFailed) { fazAlgo; (sizeDeterminationFailed) { fazAlgo; (memoryAllocationFailed) { fazAlgo; (readFailed) { fazAlgo; (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 • 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 • 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