+ All Categories
Home > Documents > Aulas de Java Avançado 1 - Faculdade iDez 2010

Aulas de Java Avançado 1 - Faculdade iDez 2010

Date post: 06-Jun-2015
Category:
Upload: mauricio-linhares
View: 1,069 times
Download: 0 times
Share this document with a friend
Popular Tags:
40
Java Avançado Maurício Linhares Especialização em Desenvolvimento para a Web - iDez
Transcript
Page 1: Aulas de Java Avançado 1 - Faculdade iDez 2010

Java AvançadoMaurício Linhares

Especialização em Desenvolvimento para a Web - iDez

Page 2: Aulas de Java Avançado 1 - Faculdade iDez 2010

Assuntos da aula

Revisão;

Composição e agregação de objetos;

Testes unitários em Java com JUnit;

Classe File;

Classes InputStream e OutputStream;

Classes Reader e Writer;

FileChannels e NIO;

Parsing de XML com DOM e StAX;

Acesso a bancos de dados em Java com JDBC;

Page 3: Aulas de Java Avançado 1 - Faculdade iDez 2010

Associações entre objetos

Objetos podem referenciar outros objetos como suas propriedades;

Quando objetos são associados, dois tipos de associação se configuram:Composição;Agregação;

Page 4: Aulas de Java Avançado 1 - Faculdade iDez 2010

Agregação

Quando um objeto referencia um ou mais objetos mas os objetos referenciados existem independentemente de quem os referencia;

Na agregação, os objetos referenciados normalmente são acessíveis para todos e fazem parte da API pública do objeto;

Eles tem outras responsabilidades no sistema além de serem referenciados pelo agregador;

Page 5: Aulas de Java Avançado 1 - Faculdade iDez 2010

Modelagem do barzinho da esquina

Page 6: Aulas de Java Avançado 1 - Faculdade iDez 2010

Modelando uma UniversidadeExercício

Page 7: Aulas de Java Avançado 1 - Faculdade iDez 2010

Composição

Associação na qual um objeto é tido como “dono” dos objetos os quais ele referencia;

Os objetos referenciados agora não podem mais existir sem o objeto raiz, não faz sentido os ter dentro do sistema de forma separada;

Em muitos casos, os objetos referenciados não ficam visíveis para quem utiliza o objeto raiz;

Page 8: Aulas de Java Avançado 1 - Faculdade iDez 2010

Modelando um carro

Page 9: Aulas de Java Avançado 1 - Faculdade iDez 2010

Modelando um computadorExercício

Page 10: Aulas de Java Avançado 1 - Faculdade iDez 2010

Introdução aos testes unitários

O que são testes unitários?

Pra que servem os testes unitários?

Eles são realmente testes?

Page 11: Aulas de Java Avançado 1 - Faculdade iDez 2010

Prática – TDD com Contas Bancárias

Page 12: Aulas de Java Avançado 1 - Faculdade iDez 2010

Prática – Criando uma classe Dinheiro

Page 13: Aulas de Java Avançado 1 - Faculdade iDez 2010

Prática – Calculando a data de entrega de um pedido

Page 14: Aulas de Java Avançado 1 - Faculdade iDez 2010

Arquivos em Java – java.io.File

Classe base que representa um caminho:ArquivosDiretóriosCaminho virtual (que ainda não existe no sistema de

arquivos)

Pode ser usada para:Criar;Remover;Mover;

Page 15: Aulas de Java Avançado 1 - Faculdade iDez 2010

Métodos comuns

createNewFile | mdkirCria um arquivo ou diretório

mkdirsCria o diretório e todos os diretórios pais que ainda

não existam

lenghtDiz o tamanho do arquivo em bytes

rename( File ) Renomeia (move) um arquivo para o caminho

passado como parâmero

Page 16: Aulas de Java Avançado 1 - Faculdade iDez 2010

Métodos comuns

delete()Remove o arquivo ou o diretório (apenas se o

diretório estiver vazio);

list()Lista todos os arquivos e pastas que estejam nesse

diretório (retorna nomes de arquivos, não caminhos);

list(FilenameFilter)Lista todos os arquivos do diretório que atenderem

ao requisito;

Page 17: Aulas de Java Avançado 1 - Faculdade iDez 2010

InputStream e OutputStream

Fluxo padrão para leitura e escrita de dados em formato binário em Java;

É usado para ler e escrever em arquivos, memória, conexões de rede ou entrada/saída padrão do sistema;

Contém várias classes complementares;

Page 18: Aulas de Java Avançado 1 - Faculdade iDez 2010

Outras de classes Stream em Java

Buffered(Input/Output)Stream;

File(Input/Output)Stream;

ByteArray(Input/Output)Stream;

Page 19: Aulas de Java Avançado 1 - Faculdade iDez 2010

Streams em Java – Decorator pattern

InputStream

FileInputStream

BufferedInputStream

Page 20: Aulas de Java Avançado 1 - Faculdade iDez 2010

Criando um OutputStream que faz backup automático

Page 21: Aulas de Java Avançado 1 - Faculdade iDez 2010

Object(Input|Output)Stream e Serializable

Classes utilizadas para escrever objetos Java diretamente em um arquivo;

Objetos salvos em formato binário, lido diretamente pela classe ObjectOutputStream;

Maneira simples de gravar dados da aplicação, mas pouco portável e pode causar problemas de compatibilidade;

Page 22: Aulas de Java Avançado 1 - Faculdade iDez 2010

Lendo e escrevendo Serializables em arquivos

Page 23: Aulas de Java Avançado 1 - Faculdade iDez 2010

Reader e Writer – lidando com caracteres

Classes especializadas em escrever fluxos de caracteres;

Podem ser utilizadas diretamente ou em conjunto (“decorando”) Input e Output streams;

Mais simples de serem utilizadas;

Page 24: Aulas de Java Avançado 1 - Faculdade iDez 2010

Classes comuns

InputStreamReader|InputStreamWriter;

File(Reader|Writer);

String(Reader|Writer);

CharArray(Reader|Writer);

Page 25: Aulas de Java Avançado 1 - Faculdade iDez 2010

Criando um par de Reader/Writer que criptografam o conteúdo

Page 26: Aulas de Java Avançado 1 - Faculdade iDez 2010

Criando um writer que faz backup do arquivo escritoExercício

Page 27: Aulas de Java Avançado 1 - Faculdade iDez 2010

FileChannel e NIO

Nova API para leitura e escrita de arquivos;

Faz escrita assíncrona e não bloqueante;

Normalmente é mais rápida que a forma comum;

Código bem mais complicado para lidar com arquivos;

Page 28: Aulas de Java Avançado 1 - Faculdade iDez 2010

Lendo e escrevendo em arquivos com FileChannel

Page 29: Aulas de Java Avançado 1 - Faculdade iDez 2010

Parsing de Arquivos XML

XML é um fomato padrão para troca de informações entre aplicações, seja via rede ou diretamente ingerindo arquivos;

Há várias formas de se fazer parsing de arquivos, sendo as mais comuns:DOM;SAX;StAX;

Page 30: Aulas de Java Avançado 1 - Faculdade iDez 2010

Fazendo parsing to staff.xml

Page 31: Aulas de Java Avançado 1 - Faculdade iDez 2010

Fazendo parsing da lista de músicasExercício

Lista de Albuns

Lista de Artistas

Page 32: Aulas de Java Avançado 1 - Faculdade iDez 2010

Gerando XML (e texto em geral) com FreeMarker

Engine de templates comum do Java, muito utilizado pra geração de XML e templates de email;

Tem sintaxe parecida com a dos JSP, é simples de ser utilizada e tem poucas dependências externas;

É capaz de executar condicionais simples dentro dos seus templates, quando necessário;

Page 33: Aulas de Java Avançado 1 - Faculdade iDez 2010

Exemplo de template do FreeMarker

<?xml version="1.0"?>

<empregados>

<#list empregados as empregado>

<empregado>

<nome>${empregado.id?html}</nome>

<#if empregado.posicao??>

<posicao>${empregado.posicao!}</posicao>

</#if>

</empregado>

</#list>

</empregados>

Page 34: Aulas de Java Avançado 1 - Faculdade iDez 2010

Acesso a bancos de dados em Java

Em Java, o acesso a bancos de dados é feito através da JDBC, que é a API de acesso a banco de dados padrão;

Os fornecedores desenvolvem Drivers JDBC que podem ser utilizados pelos

Page 35: Aulas de Java Avançado 1 - Faculdade iDez 2010

Acessando um banco de dados

Class.forName("org.h2.Driver");

Connection conexao = DriverManager.getConnection("jdbc:h2:~/clientes", "sa", "");

Page 36: Aulas de Java Avançado 1 - Faculdade iDez 2010

Passos

Primeiro você deve carregar a classe do Driver JDBC;

Após a carga, você pode abrir uma conexão com o banco através dos métodos getConnection() da classe DriverManager;

Page 37: Aulas de Java Avançado 1 - Faculdade iDez 2010

Executando comandos

Os comandos ou consultas feitas em Java usam os objetos Statement e PreparedStatement;

Um Statement é uma consulta comum feita através de uma String;

Um PreparedStatement é uma consulta que é pré-compilada e tende a ser mais rápida e mais segura que o Statement;

Page 38: Aulas de Java Avançado 1 - Faculdade iDez 2010

Exemplo de código usando JDBC

Connection conexao = DriverManager.getConnection("jdbc:h2:~/clientes", "sa", "");

Statement statement = conexao.createStatement();

statement.executeUpdate("CREATE TABLE clientes(id int, nome varchar, senha varchar, email varchar)");

conexao.close();

Page 39: Aulas de Java Avançado 1 - Faculdade iDez 2010

Usando um PreparedStatement para executar um update

Connection connection = DriverManager.getConnection("jdbc:mysql://localhost/lastfm", "root", "");

PreparedStatement statement = connection.prepareStatement( "update tracks set processed = true where id = ? and updated_at = ?" );

statement.setInt(1, id);

statement.setDate(2, new Date());

statement.executeUpdate();

connection.close();

Page 40: Aulas de Java Avançado 1 - Faculdade iDez 2010

Usando um PreparedStatement para fazer uma consulta

Connection connection = DriverManager.getConnection("jdbc:mysql://localhost/lastfm", "root", "");

PreparedStatement statement = connection.prepareStatement( "SELECT * FROM tracks" );

ResultSet resultSet = statement.executeQuery();

while(resultSet.next()) {

Track track = new Track();

track.title = resultSet.getString("title");

track.id = resultSet.getInt("id");

tracks.add(track);

}

connection.close();


Recommended