Faculdade Latino Americana Programação Orientada a Objetos II - 4º Período Ciências da Computação. REVISÃO POO Parte 01 - PDF
Download "Faculdade Latino Americana Programação Orientada a Objetos II - 4º Período Ciências da Computação. REVISÃO POO Parte 01"
José Gentil Bugalho
1 Faculdade Latino Americana Programação Orientada a Objetos II - 4º Período Ciências da Computação REVISÃO POO Parte 01 Professora: Cíntia Simões 2º Semestre 2008
2 Revisão POO Parte 01
3 Tecnologia JAVA O nome "Java" é usado para referir-se a Uma linguagem de programação orientada a objetos Uma coleção de APIs (classes, componentes, frameworks) para o desenvolvimento de aplicações multiplataforma Um ambiente de execução presente em browsers, mainframes, SOs, celulares, palmtops, cartões inteligentes, eletrodomésticos
4 Tecnologia JAVA Java foi lançada pela Sun em Três grandes revisões Java Development Kit (JDK) 1.0/1.0.2 Java Development Kit (JDK) 1.1/1.1.8 Java 2 Platform (Java 2 SDK e JRE 1.2, 1.3, 1.4, 1.5, 5, 6, 7) A evolução da linguagem é controlada pelo Java Community Process ( formado pela Sun e usuários Java Ambientes de execução e desenvolvimento são fornecidos por fabricantes de hardware e software (MacOS, Linux, etc.)
5 Linguagem JAVA Linguagem de programação orientada a objetos Familiar (sintaxe parecida com C) Simples e robusta (minimiza bugs, aumenta produtividade) Suporte nativo a threads (+ simples, maior portabilidade) Dinâmica (módulos, acoplamento em tempo de execução) Com coleta de lixo (menos bugs, mais produtividade) Independente de plataforma Segura (vários mecanismos para controlar segurança) Código intermediário de máquina virtual interpretado (compilação rápida - + produtividade no desenvolvimento) Sintaxe uniforme, rigorosa quanto a tipos (código mais simples, menos diferenças em funcionalidades iguais)
6 Produtos e API's Java possui uma coleção de APIs (bibliotecas) padrão que podem ser usadas para construir aplicações Organizadas em pacotes (java.*, javax.* e extensões) Usadas pelos ambientes de execução (JRE) e de desenvolvimento (SDK)
7 Produtos e API's As principais APIs são distribuídas juntamente com os produtos para desenvolvimento de aplicações Java 2 Standard Edition (J2SE): ferramentas e APIs essenciais para qualquer aplicação Java (inclusive GUI) Java 2 Enterprise Edition (J2EE): ferramentas e APIs para o desenvolvimento de aplicações distribuídas Java 2 Micro Edition (J2ME): ferramentas e APIs para o desenvolvimento de aplicações para aparelhos portáteis
8 Ambiente de execução e desenvolvimento Java 2 System Development Kit (J2SDK) Coleção de ferramentas de linha de comando para, entre outras tarefas, compilar, executar e depurar aplicações Java Para habilitar o ambiente via linha de comando é preciso colocar o caminho $JAVA_HOME/bin no PATH do sistema Java Runtime Environment (JRE) Tudo o que é necessário para executar aplicações Java Parte do J2SDK e das principais distribuições Linux, MacOS X, AIX, Solaris, Windows 98/ME/2000 (exceto XP)
9 Ambiente de execução e desenvolvimento Variável JAVA_HOME (opcional: usada por vários frameworks) Defina com o local de instalação do Java no seu sistema. Exemplos: Windows: set JAVA_HOME=c:\Arquivos de programas\java\j2sdk1.6.0 Linux: JAVA_HOME=/usr/java/j2sdk1.6.0 export JAVA_HOME
10 Compilação para bytecode Bytecode é o código de máquina que roda em qualquer máquina através da Máquina Virtual Java (JVM) Texto contendo código escrito em linguagem Java é traduzido em bytecode através do processo de compilação e armazenado em um arquivo *.class chamado de Classe Java C ódigo Java (texto) public class HelloWorld { public static void main(string[] args) { System.out.println("Hello, world!"); } } HelloWorld.java compilação (javac) F4 D A B2 FE FF FF E 2F D 29 3A C1 B ytecode Java (código de máquina virtual) Uma "classe" Java HelloWorld.class
11 Máquina Virtual Java (JVM) "Máquina imaginária implementada como uma aplicação de software em uma máquina real" [JVMS] A forma de execução de uma aplicação depende da origem do código a ser executado (remoto ou local)... da forma como foi implementada a JVM pelo fabricante (usando tecnologia JIT, HotSpot, etc.) java J bytecode Class V M Classe s im Bytecode Loader remota? Verifier HelloW orld.class nã o Tradu tor J I T: Tempo de execução Just-In-Time C ompiler. Tradutor JIT Gera código nativo a Interpretador partir de bytecodes para código nativo maior performance H A R D W A R E
12 Class loader e CLASSPATH Primeira tarefa executada pela JVM: carregamento das classes necessárias para rodar a aplicação. O Class Loader 1. Carrega primeiro as classes nativas do JRE (APIs) 2. Depois carrega extensões do JRE: JARs em $JAVA_HOME/jre/lib/ext e classes em $JAVA_HOME/jre/lib/classes 3. Carrega classes do sistema local (a ordem dos caminhos no CLASSPATH define a precedência) 4. Por último, carrega possíveis classes remotas
13 Class loader e CLASSPATH CLASSPATH: variável de ambiente local que contém todos os caminhos locais onde o Class Loader pode localizar classes A CLASSPATH é lida depois, logo, suas classes nunca substituem as classes do JRE (não é possível tirar classes JRE do CLASSPATH) Classes remotas são mantidas em área sujeita à verificação CLASSPATH pode ser redefinida através de parâmetros durante a execução do comando java
14 Bytecode verifier Etapa que antecede a execução do código em classes carregadas através da rede Class Loader distingue classes locais (seguras) de classes remotas (potencialmente inseguras) Verificação garante Aderência ao formato de arquivo especificado [JVMS] Não-violação de políticas de acesso estabelecidas pela aplicação Não-violação da integridade do sistema Ausência de estouros de pilha Tipos de parâmetros corretamente especificados e ausência de conversões ilegais de tipos
15 Coleta de lixo Memória alocada em Java não é liberada pelo programador Ou seja, objetos criados não são destruídos pelo programador A criação de objetos em Java consiste de 1. Alocar memória no heap para armazenar os dados do objeto 2. Inicializar o objeto (via construtor) 3. Atribuir endereço de memória a uma variável (referência) Mais de uma referência pode apontar para o mesmo objeto Mensagem m, n, p; m = new Mensagem("A"); n = m; p = new Mensagem("B"); pilha m n p heap "A" "B" GC objetos processo interno (thread) do garbage collector
16 Coleta de lixo Quando um objeto não tem mais referências apontando para ele, seus dados não mais podem ser usados, e a memória deve ser liberada. O coletor de lixo irá liberar a memória na primeira oportunidade n = null; p = new Mensagem("C"); pilha m n p heap "A" "B" "C" GC objeto sem referências candidato à remoção pelo GC
17 O que o JAVA não faz Java não suporta herança múltipla de implementação Herança múltipla é característica comum a várias linguagens OO, e permite reuso de código de várias classes em outra classe Tem vantagens porém aumenta a complexidade Java oferece uma solução que preserva as principais vantagens da herança múltipla e evita os problemas
18 O que o JAVA não faz Java não suporta aritmética de ponteiros Ponteiros, ou referências, são usados em várias linguagens, inclusive Java, para manipular eficientemente grandes quantidades de informação na memória Com ponteiros, em vez de copiar uma informação de um lugar para outro, copia-se apenas o seu endereço Em linguagens como C, o programador pode manipular o endereço (que é dependente de plataforma) diretamente Isto aumenta a complexidade e diminui a portabilidade
19 O J2SDK O J2SDK (Java 2 System Development Kit) é o ambiente padrão distribuído pela Sun para desenvolvimento de aplicações Java O J2SDK consiste de JRE (Java Runtime Environment) - também distribuído separadamente: ambiente para execução de aplicações Ferramentas para desenvolvimento: compilador, debugger, gerador de documentação, empacotador JAR, etc. Código-fonte das classes da API Demonstrações de uso das APIs, principalmente Applets, interface gráfica com Swing e recursos de multimídia A documentação é distribuída separadamente
20 Como compilar Use o java compiler (linha de comando) javac NomeDaClasse.java javac -d../destino Um.java Dois.java javac -d../destino *.java javac -classpath c:\fontes -d../destino *.java Algumas opções (opcionais) -d -classpath -sourcepath diretório onde serão armazenadas as classes (arquivos.class) geradas diretórios (separados por ; ou :) onde estão as classes requeridas pela aplicação diretórios onde estão as fontes
21 Como compilar Para conhecer outras opções do compilador, digite javac sem argumentos Compiladores de outros fabricantes (como o Jikes, da IBM) também podem ser usados no lugar do javac
22 Como executar Use o interpretador java (faz parte do JRE)* java NomeDaClasse java pacote.subpacote.nomedaclasse java -classpath c:\classes;c:\bin;. pacote.classe java -cp c:\classes;c:\bin;. pacote.classe java -cp %CLASSPATH%;c:\mais pacote.classe java -cp biblioteca.jar pacote.classe java -jar executavel.jar * sintaxe de P ATH em Unix é diferente
23 Como executar Para rodar aplicações gráficas, use javaw javaw -jar executavel.jar javaw -cp aplicacao.jar;gui.jar principal.inicio Principais opções -cp ou -classpath -jar em JAR -Dpropriedade=valor classpath novo (sobrepõe v. ambiente) executa aplicação executável guardada define propriedade do sistema (JVM)
24 Algumas outras ferramentas do SDK Debugger: jdb Depurador simples de linha de comando Profiler: java -prof Opção do interpretador Java que gera estatísticas sobre uso de métodos em um arquivo de texto chamado java.prof Java Documentation Generator: javadoc Gera documentação em HTML (default) a partir de código-fonte Java Java Archiver: jar Extensão do formato ZIP; ferramenta comprime, lista e expande
25 Algumas outras ferramentas do SDK Applet Viewer: appletviewer Permite a visualização de applets sem browser HTML Converter: htmlconverter.jar Converte <applet> em <object> em páginas que usam applets Disassembler: javap Permite ler a interface pública de classes
26 Entendendo uma classe Java
27 Meu Primeiro Programa // Meu primeiro programa JAVA! public class OlaMundo { public static void main(string args[]) { System.out.println( Olá Mundo! ); } }
28 Compilando o programa Certifique-se de ter adicionado a sua lista de path s o PATH do compilador e interpretador Java, javac e java respectivamente. Crie o arquivo ao lado em um diretório qualquer e salve com o nome: OlaMundo.Java Chame o compilador Java para este arquivo: javac OlaMundo.java Seu diretório deve ter recebido um novo arquivo após essa compilação: OlaMundo.class Chame o interpretador Java para este arquivo (omita a extensão.class de arquivo): java OlaMundo Observe o resultado na tela: Olá Mundo!
29 // Comentário de uma linha Comentários em Java seguem a mesma sintaxe de C++, // inicia uma linha de comentário, todo o restante da linha é ignorado. Existe também um outro tipo de comentário formado por /* Insira aqui o texto a ser ignorado */, este tipo de comentário pode ser intercalado em uma linha de código. Comentários são tratados como espaços em branco
30 public class OlaMundo class é a palavra reservada que marca o inicio da declaração de uma classe. public é um especificador, por enquanto guarde public class como o início da declaração de uma classe. Toda classes serão declaradas assim por enquanto.
31 OlaMundo É o nome dado a esta classe. O abre chaves marca o início das declarações da classe que são os atributos e métodos. Esta classe só possui uma declaração, a do método main, note que um método, ao contrário de C++, só pode ser declarado {internamente} a classe a qual pertence, evitando as confusões sobre escopo. Desta forma, todo pedaço de código em Java deve pertencer ao abre chaves, fecha chaves da definição de uma classe
32 O trecho do programa public static void main (String args[]) { System.out.println( Olá Mundo!"); } public: É um qualificador do método que indica que public este é acessível externamente a esta classe (para outras classes que eventualmente seriam criadas), não se preocupe com ele agora, apenas declare todos os métodos como public
33 static É um outro qualificador ou specifier, que indica que o método deve ser compartilhado por todos os objetos que são criados a partir desta classe. Os métodos static podem ser invocados, mesmo quando não foi criado nenhum objeto para a classe, para tal deve-se seguir a sintaxe: <NomeClasse>.<NomemetodoStatic>(argumentos);. O método main é chamado sem que se crie nenhum objeto de sua classe (a classe OlaMundo)
34 void Semelhante ao void C++ ou C, é o valor de retorno da função, quando a função não retorna nenhum valor ela retorna void, uma espécie de valor vazio que tem que ser especificado.
35 main Este é um nome particular de método que indica para o compilador o início do programa. É dentro deste método e através das iterações entre os atributos, variáveis e argumentos visíveis nele que o programa se desenvolve.
36 (String args[]) É o argumento do método main e por conseqüência do programa todo, ele é um vetor de Strings que é formado quando são passados ou não argumentos através da invocação do nome do programa na linha de comando do sistema operacional, exemplo: java OlaMundo argumentotexto1 argumentotexto2
37 {... } Abre chaves e fecha chaves. Para quem não conhece C ou C++, eles podem ser entendidos como algo semelhante ao BEGIN END de Pascal ou Modula-3, ou seja: delimitam um bloco de código
38 System.out.println( Olá Mundo!"); Chamada do método println para o atributo out da classe System, o argumento é uma constante do tipo String para imprimir a cadeia Olá Mundo! e posicionar o cursor na linha abaixo. Por hora guardar esta linha de código como o comando para imprimir mensagens na tela, onde o argumento que vem entre aspas é a String a ser impressa
39 Convenções Variáveis e métodos iniciam com letras minúsculas. Classes iniciam com letras maiúsculas Nome composto: utilizar letras maiúsculas para as iniciais das palavras que seguem a primeira Letras maiúsculas para as constantes
Java 2 Standard Edition. Introduçã. ção à. tecnologia Java. Helder da Rocha www.argonavis.com.br
Java 2 Standard Edition Introduçã ção à tecnologia Java Helder da Rocha www.argonavis.com.br 1 Assuntos abordados neste módulo Conceitos Tecnologia Java Linguagem e API Java Máquina virtual Java Ambiente