JAVA - Apostila
532 pág.

JAVA - Apostila


DisciplinaProgramação Orientada A Objetos3.960 materiais57.718 seguidores
Pré-visualização28 páginas
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 59 / 527
3. Java \u2013 Conteúdo
1 Introdução 3
2 UML 22
3 Java 60
Introdução 61
Tipos Básicos 85
Operadores 98
Comandos condicionais 116
Comandos de repetição 135
Arranjos 154
Métodos 169
4 POO 183
5 Padrões de Projeto 356
6 Tópicos Relevantes 386
7 Materiais Complementares 417
8 Extras 498
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 60 / 527
Java
Introdução
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 61 / 527
Java \u2013 Introdução
Logo Mascote \u2013 Duke
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 62 / 527
Java \u2013 Introdução
Objetivos
Apaixonar-se por Java
Diferenciar:
Programação Estruturada (Pascal, C...)
Programação Orientada a Objetos (Java, C++...)
Pré-requisitos
Lógica de Programação
Linguagem C
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 63 / 527
Java \u2013 Introdução
Edições Java
Java SE \u2013 Java Standard Edition (Versão Atual: 6)
www.oracle.com/technetwork/java/javase
Java EE \u2013 Java Enterprise Edition
www.oracle.com/technetwork/java/javaee
Java ME \u2013 Java Micro Edition
www.oracle.com/technetwork/java/javame
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 64 / 527
Java \u2013 Introdução
Tipos de Aplicações
Applets
Aplicação que normalmente utiliza o navegador do cliente
para prover a interface do usuário
Processamento realizado no servidor
Applications
Dispensa explicação
Servlets
Execução em servidores web
Exemplos: JSP, JSF, Struts etc
Midlets
Execução em pequenos dispositivos
Portlets
Execução em portais
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 65 / 527
Java \u2013 Introdução
Falácias sobre Java
Java é muito fácil de aprender
Java é muito difícil de aprender
Java é um ambiente de programação
Todos os programas Java executam em páginas web
JavaScript é uma versão mais simples de Java
Java é interpretado e, portanto, muito lerdo para
aplicações sérias em uma plataforma específica
Leia artigo \u201cAnálise Comparativa do Código Gerado por
Compiladores Java e C++\u201d publicado no SBLP 2010
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 66 / 527
Java \u2013 Introdução
Principais Características da Linguagem Java
Compilação para bytecodes
Provê portabilidade (saberemos logo o porquê)
Suporte a multi-programação
Suporte a threads
OO
Segura
Não existe ponteiros
Gerência automática de memória (não existe mais malloc,
free etc)
Eficiente
JIT Compiler, otimizações dinâmicas etc
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 67 / 527
Java \u2013 Introdução
Java SE \u2013 Componentes \u2013 Entendimento Visual
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 68 / 527
Java \u2013 Introdução
Java SE \u2013 Componentes
API \u2013 Application Programming Interface
Biblioteca com diversas classe e funções úteis para ser
utilizada no desenvolvimento de aplicações
JVM \u2013 Java Virtual Machine
Máquina virtual em que a aplicação Java é executada
Contém implementação de toda API Java
JRE \u2013 Java Runtime Environment
Ambiente de execução de aplicativos Java
Contém a JVM
JDK \u2013 Java Development Kit
Ambiente de desenvolvimento de aplicativos Java
(compilação, depuração etc)
Contém o JRE
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 69 / 527
Java \u2013 Introdução
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 70 / 527
Java \u2013 Introdução
Funcionamento
Compilador
Entrada: código fonte
Saída: bytecodes
Bytecodes
Código intermediário a ser interpretado pela JVM
Independente de plataforma
JVM
Class Loader: carrega o bytecode para a memória
Bytecode Verifier: confere a consistência do bytecode
Interpreter: interpreta os bytecodes para código de máquina
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 71 / 527
Java \u2013 Introdução
Java SE \u2013 Funcionamento \u2013 Entendimento Visual
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 72 / 527
Java \u2013 Introdução
Hello Terra \u2013 Código
1 public class HelloTerra {
3 public static void main( String[] args ) {
System.out.println( "Hello Terra!" );
5 }
7 }
Hello Terra \u2013 Explicação Superficial
Case-sensitive
Todo o programa sensível a caixa: A 6= a
Método main
Ponto de entrada de uma aplicação Java
System.out.println (sop)
Impressão em tela
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 73 / 527
Java \u2013 Introdução
Compilação e Execução
Compilar: javac HelloTerra.java
Executar: java HelloTerra
No entanto, o Eclipse faz tudo para você sem que perceba =)
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 74 / 527
Java \u2013 Introdução
Java e outras linguagens
Linguagem realmente orientada por objetos
Menos que Eiffel
Sintaxe muito baseada na sintaxe de C
if, switch, while, do..while, for ...
Tipos de dados básicos similares ao da linguagem C
Remoção de várias características perigosas de C
Ponteiros
Aritmética de ponteiros
Gerenciamento automático de memória (não existe mais
malloc, free etc)
API bem completa
Web, GUI (Graphical User Interface), Networking etc
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 75 / 527
Java \u2013 Introdução
Classes
Uma vez que vimos Diagrama de Classes, o entendimento
fica fácil
Define um TAD (Tipo Abstrato de Dados)
Contém:
atributos (propriedades)
métodos (comportamento)
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 76 / 527
Java \u2013 Introdução
Classe Pessoa \u2013 Exemplo Simples
1 public class Pessoa {
private String nome;
3
public String getNome() {
5 return this.nome;
}
7
public void setNome( String nome ) {
9 this.nome = nome;
}
11
}
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 77 / 527
Java \u2013 Introdução
Estrutura de um Arquivo Java
Pacote
onde o arquivo se encontra
Imports
do que o arquivo necessita
Classe Pública
Apenas uma por arquivo
Deve ter o mesmo nome do arquivo
Classes Não Públicas
Conceito Avançado (não veremos)
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 78 / 527
Java \u2013 Introdução
Estrutura de uma Classe Java
Atributos
propriedades
estáticos depois dinâmicos
Construtores
como seus objetos são criados
ordenados pela quantidade de
parâmetros
Métodos
comportamentos
estáticos depois dinâmicos
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 79 / 527
Java \u2013 Introdução
Classe Pessoa \u2013 Exemplo Mais Completo
package pojo;
2
import java.util.Date;
4
public class Pessoa {
6 public final static String ESPECIE = "Homo Sapiens";
private String nome;
8 private Date dataNascimento;
10 public Pessoa() { }
12 public Pessoa(String nome, Date dataNascimento) {
this.nome = nome;
14 this.dataNascimento = dataNascimento;
}
16
public String getNome() {
18 return this.nome;
}
20 public void setNome( String nome ) {
this.nome = nome;
22 }
public Date getDataNascimento() {
24 return this.dataNascimento;
}
26 public void setDataNascimento( Date dataNascimento ) {
this.dataNascimento = dataNascimento;
28 }
}
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 80 / 527
Java \u2013 Introdução
Comentários
Algumas vezes se deseja explicar um código, explicitar uma
informação em linguagem natural
Eles não deixam o programa mais lento e seu uso é
altamente recomendável
Três tipos:
Comentário para bloco de linha (semelhante a C)
/*
blablabla
*/
Comentário até final de linha (semelhante a C)
// blablabla
Comentário JavaDoc (gera manual do sistema)
/*
@author Ricardo Terra
*/
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 81 / 527
Java \u2013 Introdução
Classe Matematica \u2013 Exemplo Comentário
1