SlideShare uma empresa Scribd logo
1 de 40
Java Avançado Maurício Linhares Especialização em Desenvolvimento para a Web - iDez
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;
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;
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;
Modelagem do barzinho da esquina
Modelando uma Universidade Exercício
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;
Modelando um carro
Modelando um computador Exercício
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?
Prática – TDD com Contas Bancárias
Prática – Criando uma classe Dinheiro
Prática – Calculando a data de entrega de um pedido
Arquivos em Java –java.io.File Classe base que representa um caminho: Arquivos Diretórios Caminho virtual (que ainda não existe no sistema de arquivos) Pode ser usada para: Criar; Remover; Mover;
Métodos comuns createNewFile | mdkir Cria um arquivo ou diretório mkdirs Cria o diretório e todos os diretórios pais que ainda não existam lenght Diz o tamanho do arquivo em bytes rename( File )  Renomeia (move) um arquivo para o caminho passado como parâmero
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;
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;
Outras de classes Stream em Java Buffered(Input/Output)Stream; File(Input/Output)Stream; ByteArray(Input/Output)Stream;
Streams em Java –Decoratorpattern
Criando um OutputStream que faz backup automático
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;
Lendo e escrevendo Serializables em arquivos
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;
Classes comuns InputStreamReader|InputStreamWriter; File(Reader|Writer); String(Reader|Writer); CharArray(Reader|Writer);
Criando um par de Reader/Writer que criptografam o conteúdo
Criando um writer que faz backup do arquivo escrito Exercício
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;
Lendo e escrevendo em arquivos com FileChannel
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;
Fazendo parsingtostaff.xml
Fazendo parsing da lista de músicas Exercício Lista de Albuns Lista de Artistas
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;
Exemplo de templatedo FreeMarker <?xml version="1.0"?> <empregados>     <#list empregados as empregado>     <empregado> <nome>${empregado.id?html}</nome>         <#ifempregado.posicao??>         <posicao>${empregado.posicao!}</posicao>         </#if>     </empregado>     </#list> </empregados>
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
Acessando um banco de dados Class.forName("org.h2.Driver"); Connection conexao = DriverManager.getConnection("jdbc:h2:~/clientes", "sa", "");
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;
Executandocomandos 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;
Exemplo de código usando JDBC Connection conexao = DriverManager.getConnection("jdbc:h2:~/clientes", "sa", ""); Statementstatement = conexao.createStatement(); statement.executeUpdate("CREATE TABLE clientes(id int, nome varchar, senha varchar, email varchar)"); conexao.close();
Usando um PreparedStatementparaexecutar 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();
Usando um PreparedStatementparafazerumaconsulta Connection connection = DriverManager.getConnection("jdbc:mysql://localhost/lastfm", "root", ""); PreparedStatement statement = connection.prepareStatement( "SELECT * FROM tracks" ); ResultSetresultSet = statement.executeQuery(); while(resultSet.next()) { Tracktrack = newTrack();			 track.title = resultSet.getString("title"); track.id = resultSet.getInt("id");			 tracks.add(track);			 }	 connection.close();

Mais conteúdo relacionado

Mais procurados

Persistência Java: Hibernate e JPA
Persistência Java: Hibernate e JPAPersistência Java: Hibernate e JPA
Persistência Java: Hibernate e JPACaelum
 
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)Helder da Rocha
 
Apache CouchDB
Apache CouchDBApache CouchDB
Apache CouchDBHugo Souza
 
Uma visão geral do OpenLDAP e Active Directory
Uma visão geral do OpenLDAP e Active DirectoryUma visão geral do OpenLDAP e Active Directory
Uma visão geral do OpenLDAP e Active Directoryelliando dias
 
Persistência com JPA usando o NetBeans 7
Persistência com JPA usando o NetBeans 7Persistência com JPA usando o NetBeans 7
Persistência com JPA usando o NetBeans 7Claudio Martins
 
noSQL com CouchDb e PHP
noSQL com CouchDb e PHPnoSQL com CouchDb e PHP
noSQL com CouchDb e PHPTheoziran Lima
 
Lilacs application profile
Lilacs application  profileLilacs application  profile
Lilacs application profileSueli Suga
 
Mapeamento Objeto-Relacional com LINQ
Mapeamento Objeto-Relacional com LINQ Mapeamento Objeto-Relacional com LINQ
Mapeamento Objeto-Relacional com LINQ Francke Peixoto
 
Mini curso hibernate com anotações
Mini curso hibernate com anotaçõesMini curso hibernate com anotações
Mini curso hibernate com anotaçõesdieguinhomcz
 

Mais procurados (14)

Persistência Java: Hibernate e JPA
Persistência Java: Hibernate e JPAPersistência Java: Hibernate e JPA
Persistência Java: Hibernate e JPA
 
Hibernate conceitos
Hibernate conceitosHibernate conceitos
Hibernate conceitos
 
CouchDB Presentation
CouchDB PresentationCouchDB Presentation
CouchDB Presentation
 
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
 
Apache CouchDB
Apache CouchDBApache CouchDB
Apache CouchDB
 
Uma visão geral do OpenLDAP e Active Directory
Uma visão geral do OpenLDAP e Active DirectoryUma visão geral do OpenLDAP e Active Directory
Uma visão geral do OpenLDAP e Active Directory
 
Persistência com JPA usando o NetBeans 7
Persistência com JPA usando o NetBeans 7Persistência com JPA usando o NetBeans 7
Persistência com JPA usando o NetBeans 7
 
noSQL com CouchDb e PHP
noSQL com CouchDb e PHPnoSQL com CouchDb e PHP
noSQL com CouchDb e PHP
 
J530 3 jndi
J530 3 jndiJ530 3 jndi
J530 3 jndi
 
Modelo Relacional
Modelo RelacionalModelo Relacional
Modelo Relacional
 
Lilacs application profile
Lilacs application  profileLilacs application  profile
Lilacs application profile
 
Mapeamento Objeto-Relacional com LINQ
Mapeamento Objeto-Relacional com LINQ Mapeamento Objeto-Relacional com LINQ
Mapeamento Objeto-Relacional com LINQ
 
Mini curso hibernate com anotações
Mini curso hibernate com anotaçõesMini curso hibernate com anotações
Mini curso hibernate com anotações
 
Web Scale Data Management
Web Scale Data ManagementWeb Scale Data Management
Web Scale Data Management
 

Destaque

Desenvolvimento Web: Por que Java?
Desenvolvimento Web: Por que Java?Desenvolvimento Web: Por que Java?
Desenvolvimento Web: Por que Java?Diogo Souza
 
Criando aplicacoes-web-java-netberans
Criando aplicacoes-web-java-netberansCriando aplicacoes-web-java-netberans
Criando aplicacoes-web-java-netberansMony Pinheiro
 
Java pra web mais fácil com MVC
Java pra web mais fácil com MVCJava pra web mais fácil com MVC
Java pra web mais fácil com MVCCecilia Fernandes
 
Introdução a Wordpress - David Arty - SENAC
Introdução a Wordpress - David Arty - SENACIntrodução a Wordpress - David Arty - SENAC
Introdução a Wordpress - David Arty - SENACDavid Arty
 
Criação de Sites - David Arty - SENAC
Criação de Sites - David Arty - SENACCriação de Sites - David Arty - SENAC
Criação de Sites - David Arty - SENACDavid Arty
 
K19 k03-sql-e-modelo-relacional
K19 k03-sql-e-modelo-relacionalK19 k03-sql-e-modelo-relacional
K19 k03-sql-e-modelo-relacionalJean Lopes
 
Sintaxe Ling Java Pilares Oo 4
Sintaxe Ling Java Pilares Oo 4Sintaxe Ling Java Pilares Oo 4
Sintaxe Ling Java Pilares Oo 4Felipe Valcanaia
 
Desenvolvimento Web 03 - David Arty - SENAC
Desenvolvimento Web 03 - David Arty - SENACDesenvolvimento Web 03 - David Arty - SENAC
Desenvolvimento Web 03 - David Arty - SENACDavid Arty
 
K19 k12-desenvolvimento-web-com-jsf2-e-jpa2
K19 k12-desenvolvimento-web-com-jsf2-e-jpa2K19 k12-desenvolvimento-web-com-jsf2-e-jpa2
K19 k12-desenvolvimento-web-com-jsf2-e-jpa2surdido
 
Desenvolvimento Web 02 - David Arty - SENAC
Desenvolvimento Web 02 - David Arty - SENACDesenvolvimento Web 02 - David Arty - SENAC
Desenvolvimento Web 02 - David Arty - SENACDavid Arty
 
Exercicios professor marcos monteiro (1)
Exercicios professor marcos monteiro (1)Exercicios professor marcos monteiro (1)
Exercicios professor marcos monteiro (1)jose-junior89
 
Java - Visão geral e Exercícios
Java - Visão geral e ExercíciosJava - Visão geral e Exercícios
Java - Visão geral e ExercíciosArthur Emanuel
 
Desenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e ServletsDesenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e ServletsIgo Coelho
 

Destaque (20)

Desenvolvimento Web: Por que Java?
Desenvolvimento Web: Por que Java?Desenvolvimento Web: Por que Java?
Desenvolvimento Web: Por que Java?
 
JEE Design Patterns
JEE Design PatternsJEE Design Patterns
JEE Design Patterns
 
Criando aplicacoes-web-java-netberans
Criando aplicacoes-web-java-netberansCriando aplicacoes-web-java-netberans
Criando aplicacoes-web-java-netberans
 
K19 sql
K19 sqlK19 sql
K19 sql
 
Dia do abraço
Dia do abraçoDia do abraço
Dia do abraço
 
Aula1
Aula1Aula1
Aula1
 
Java pra web mais fácil com MVC
Java pra web mais fácil com MVCJava pra web mais fácil com MVC
Java pra web mais fácil com MVC
 
Java Web Components
Java Web ComponentsJava Web Components
Java Web Components
 
World Wide Fund
World Wide FundWorld Wide Fund
World Wide Fund
 
Introdução a Wordpress - David Arty - SENAC
Introdução a Wordpress - David Arty - SENACIntrodução a Wordpress - David Arty - SENAC
Introdução a Wordpress - David Arty - SENAC
 
Criação de Sites - David Arty - SENAC
Criação de Sites - David Arty - SENACCriação de Sites - David Arty - SENAC
Criação de Sites - David Arty - SENAC
 
K19 k03-sql-e-modelo-relacional
K19 k03-sql-e-modelo-relacionalK19 k03-sql-e-modelo-relacional
K19 k03-sql-e-modelo-relacional
 
Sintaxe Ling Java Pilares Oo 4
Sintaxe Ling Java Pilares Oo 4Sintaxe Ling Java Pilares Oo 4
Sintaxe Ling Java Pilares Oo 4
 
Desenvolvimento Web 03 - David Arty - SENAC
Desenvolvimento Web 03 - David Arty - SENACDesenvolvimento Web 03 - David Arty - SENAC
Desenvolvimento Web 03 - David Arty - SENAC
 
K19 k12-desenvolvimento-web-com-jsf2-e-jpa2
K19 k12-desenvolvimento-web-com-jsf2-e-jpa2K19 k12-desenvolvimento-web-com-jsf2-e-jpa2
K19 k12-desenvolvimento-web-com-jsf2-e-jpa2
 
Desenvolvimento Web 02 - David Arty - SENAC
Desenvolvimento Web 02 - David Arty - SENACDesenvolvimento Web 02 - David Arty - SENAC
Desenvolvimento Web 02 - David Arty - SENAC
 
Exercicios professor marcos monteiro (1)
Exercicios professor marcos monteiro (1)Exercicios professor marcos monteiro (1)
Exercicios professor marcos monteiro (1)
 
Exercicios de JAVA
Exercicios de JAVAExercicios de JAVA
Exercicios de JAVA
 
Java - Visão geral e Exercícios
Java - Visão geral e ExercíciosJava - Visão geral e Exercícios
Java - Visão geral e Exercícios
 
Desenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e ServletsDesenvolvimento web em java com JSP e Servlets
Desenvolvimento web em java com JSP e Servlets
 

Semelhante a Aulas de Java Avançado 1 - Faculdade iDez 2010

Criando e Lendo Arquivos TXT com a Classe File
Criando e Lendo Arquivos TXT com a Classe FileCriando e Lendo Arquivos TXT com a Classe File
Criando e Lendo Arquivos TXT com a Classe FilePaulo Brito
 
Odi tutorial glossário e termos técnicos
Odi tutorial   glossário e termos técnicosOdi tutorial   glossário e termos técnicos
Odi tutorial glossário e termos técnicosCaio Lima
 
Introdução ao JPA com Hibernate
Introdução ao JPA com HibernateIntrodução ao JPA com Hibernate
Introdução ao JPA com HibernateDanilo Braga
 
hibernate annotation
hibernate annotationhibernate annotation
hibernate annotationeduardo dias
 
java.io - fluxos (streams) e arquivos
java.io - fluxos (streams) e arquivosjava.io - fluxos (streams) e arquivos
java.io - fluxos (streams) e arquivosMarcello Thiry
 
Introdução ao framework CodeIgniter
Introdução ao framework CodeIgniterIntrodução ao framework CodeIgniter
Introdução ao framework CodeIgniterAnderson Gonçalves
 
Bancos de dados e jdbc java para desenvolvimento web
Bancos de dados e jdbc   java para desenvolvimento webBancos de dados e jdbc   java para desenvolvimento web
Bancos de dados e jdbc java para desenvolvimento websilvio_sas
 
ZF Básico - 1. Introdução
ZF Básico - 1. IntroduçãoZF Básico - 1. Introdução
ZF Básico - 1. IntroduçãoMarcos Bezerra
 
Introdução à programação para web com Java - Módulo 01: Conexão com bamco de...
Introdução à programação para web com Java -  Módulo 01: Conexão com bamco de...Introdução à programação para web com Java -  Módulo 01: Conexão com bamco de...
Introdução à programação para web com Java - Módulo 01: Conexão com bamco de...Professor Samuel Ribeiro
 
001 cesep - turma java
001   cesep - turma java001   cesep - turma java
001 cesep - turma javaJunior Souza
 
Curso De Hibernate 3
Curso De Hibernate 3Curso De Hibernate 3
Curso De Hibernate 3Joel Lobo
 
Mini curso hibernate com anotações
Mini curso hibernate com anotaçõesMini curso hibernate com anotações
Mini curso hibernate com anotaçõesdieguinhomcz
 
Arquivos, Fluxos e Serialização de Objetos em Java
Arquivos, Fluxos e Serialização de Objetos em JavaArquivos, Fluxos e Serialização de Objetos em Java
Arquivos, Fluxos e Serialização de Objetos em JavaWilson Júnior
 
Java: Manipulação de Arquivos
Java:  Manipulação  de ArquivosJava:  Manipulação  de Arquivos
Java: Manipulação de ArquivosArthur Emanuel
 

Semelhante a Aulas de Java Avançado 1 - Faculdade iDez 2010 (20)

Criando e Lendo Arquivos TXT com a Classe File
Criando e Lendo Arquivos TXT com a Classe FileCriando e Lendo Arquivos TXT com a Classe File
Criando e Lendo Arquivos TXT com a Classe File
 
Odi tutorial glossário e termos técnicos
Odi tutorial   glossário e termos técnicosOdi tutorial   glossário e termos técnicos
Odi tutorial glossário e termos técnicos
 
Introdução ao JPA com Hibernate
Introdução ao JPA com HibernateIntrodução ao JPA com Hibernate
Introdução ao JPA com Hibernate
 
hibernate annotation
hibernate annotationhibernate annotation
hibernate annotation
 
java.io - fluxos (streams) e arquivos
java.io - fluxos (streams) e arquivosjava.io - fluxos (streams) e arquivos
java.io - fluxos (streams) e arquivos
 
01 introducao ao java
01   introducao ao java01   introducao ao java
01 introducao ao java
 
Hibernate - Aula 01
Hibernate - Aula 01Hibernate - Aula 01
Hibernate - Aula 01
 
Apache e Java
Apache e JavaApache e Java
Apache e Java
 
Introdução ao framework CodeIgniter
Introdução ao framework CodeIgniterIntrodução ao framework CodeIgniter
Introdução ao framework CodeIgniter
 
Bancos de dados e jdbc java para desenvolvimento web
Bancos de dados e jdbc   java para desenvolvimento webBancos de dados e jdbc   java para desenvolvimento web
Bancos de dados e jdbc java para desenvolvimento web
 
PHP 10 CodeIgniter
PHP 10 CodeIgniterPHP 10 CodeIgniter
PHP 10 CodeIgniter
 
ZF Básico - 1. Introdução
ZF Básico - 1. IntroduçãoZF Básico - 1. Introdução
ZF Básico - 1. Introdução
 
Introdução à programação para web com Java - Módulo 01: Conexão com bamco de...
Introdução à programação para web com Java -  Módulo 01: Conexão com bamco de...Introdução à programação para web com Java -  Módulo 01: Conexão com bamco de...
Introdução à programação para web com Java - Módulo 01: Conexão com bamco de...
 
001 cesep - turma java
001   cesep - turma java001   cesep - turma java
001 cesep - turma java
 
Curso De Hibernate 3
Curso De Hibernate 3Curso De Hibernate 3
Curso De Hibernate 3
 
Mini curso hibernate com anotações
Mini curso hibernate com anotaçõesMini curso hibernate com anotações
Mini curso hibernate com anotações
 
Arquivos, Fluxos e Serialização de Objetos em Java
Arquivos, Fluxos e Serialização de Objetos em JavaArquivos, Fluxos e Serialização de Objetos em Java
Arquivos, Fluxos e Serialização de Objetos em Java
 
Tema3.pptx
Tema3.pptxTema3.pptx
Tema3.pptx
 
Tema3.pptx
Tema3.pptxTema3.pptx
Tema3.pptx
 
Java: Manipulação de Arquivos
Java:  Manipulação  de ArquivosJava:  Manipulação  de Arquivos
Java: Manipulação de Arquivos
 

Mais de Maurício Linhares

Unindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDrop
Unindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDropUnindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDrop
Unindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDropMaurício Linhares
 
Mixing Ruby and Java in a Service Oriented Architecture at OfficeDrop
Mixing Ruby and Java in a Service Oriented Architecture at OfficeDropMixing Ruby and Java in a Service Oriented Architecture at OfficeDrop
Mixing Ruby and Java in a Service Oriented Architecture at OfficeDropMaurício Linhares
 
Curso java 08 - mais sobre coleções
Curso java   08 - mais sobre coleçõesCurso java   08 - mais sobre coleções
Curso java 08 - mais sobre coleçõesMaurício Linhares
 
Curso java 06 - mais construtores, interfaces e polimorfismo
Curso java   06 - mais construtores, interfaces e polimorfismoCurso java   06 - mais construtores, interfaces e polimorfismo
Curso java 06 - mais construtores, interfaces e polimorfismoMaurício Linhares
 
Curso java 05 - herança, classes e métodos abstratos
Curso java   05 - herança, classes e métodos abstratosCurso java   05 - herança, classes e métodos abstratos
Curso java 05 - herança, classes e métodos abstratosMaurício Linhares
 
Curso java 04 - ap is e bibliotecas
Curso java   04 - ap is e bibliotecasCurso java   04 - ap is e bibliotecas
Curso java 04 - ap is e bibliotecasMaurício Linhares
 
Curso java 01 - molhando os pés com java
Curso java   01 - molhando os pés com javaCurso java   01 - molhando os pés com java
Curso java 01 - molhando os pés com javaMaurício Linhares
 
Curso java 03 - métodos e parâmetros
Curso java   03 - métodos e parâmetrosCurso java   03 - métodos e parâmetros
Curso java 03 - métodos e parâmetrosMaurício Linhares
 
Outsourcing e trabalho remoto para a nuvem
Outsourcing e trabalho remoto para a nuvemOutsourcing e trabalho remoto para a nuvem
Outsourcing e trabalho remoto para a nuvemMaurício Linhares
 
Aulas de Java Avançado 2- Faculdade iDez 2010
Aulas de Java Avançado 2- Faculdade iDez 2010Aulas de Java Avançado 2- Faculdade iDez 2010
Aulas de Java Avançado 2- Faculdade iDez 2010Maurício Linhares
 

Mais de Maurício Linhares (20)

Mercado de TI
Mercado de TIMercado de TI
Mercado de TI
 
Unindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDrop
Unindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDropUnindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDrop
Unindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDrop
 
Mixing Ruby and Java in a Service Oriented Architecture at OfficeDrop
Mixing Ruby and Java in a Service Oriented Architecture at OfficeDropMixing Ruby and Java in a Service Oriented Architecture at OfficeDrop
Mixing Ruby and Java in a Service Oriented Architecture at OfficeDrop
 
Aprendendo ruby
Aprendendo rubyAprendendo ruby
Aprendendo ruby
 
Curso java 07 - exceções
Curso java   07 - exceçõesCurso java   07 - exceções
Curso java 07 - exceções
 
Curso java 08 - mais sobre coleções
Curso java   08 - mais sobre coleçõesCurso java   08 - mais sobre coleções
Curso java 08 - mais sobre coleções
 
Curso java 06 - mais construtores, interfaces e polimorfismo
Curso java   06 - mais construtores, interfaces e polimorfismoCurso java   06 - mais construtores, interfaces e polimorfismo
Curso java 06 - mais construtores, interfaces e polimorfismo
 
Curso java 05 - herança, classes e métodos abstratos
Curso java   05 - herança, classes e métodos abstratosCurso java   05 - herança, classes e métodos abstratos
Curso java 05 - herança, classes e métodos abstratos
 
Curso java 04 - ap is e bibliotecas
Curso java   04 - ap is e bibliotecasCurso java   04 - ap is e bibliotecas
Curso java 04 - ap is e bibliotecas
 
Curso java 01 - molhando os pés com java
Curso java   01 - molhando os pés com javaCurso java   01 - molhando os pés com java
Curso java 01 - molhando os pés com java
 
Curso java 02 - variáveis
Curso java   02 - variáveisCurso java   02 - variáveis
Curso java 02 - variáveis
 
Curso java 03 - métodos e parâmetros
Curso java   03 - métodos e parâmetrosCurso java   03 - métodos e parâmetros
Curso java 03 - métodos e parâmetros
 
Extreme programming
Extreme programmingExtreme programming
Extreme programming
 
Feature Driven Development
Feature Driven DevelopmentFeature Driven Development
Feature Driven Development
 
Migrando pra Scala
Migrando pra ScalaMigrando pra Scala
Migrando pra Scala
 
Outsourcing e trabalho remoto para a nuvem
Outsourcing e trabalho remoto para a nuvemOutsourcing e trabalho remoto para a nuvem
Outsourcing e trabalho remoto para a nuvem
 
Mercado hoje
Mercado hojeMercado hoje
Mercado hoje
 
Análise de sistemas oo 1
Análise de sistemas oo   1Análise de sistemas oo   1
Análise de sistemas oo 1
 
Revisão html e java script
Revisão html e java scriptRevisão html e java script
Revisão html e java script
 
Aulas de Java Avançado 2- Faculdade iDez 2010
Aulas de Java Avançado 2- Faculdade iDez 2010Aulas de Java Avançado 2- Faculdade iDez 2010
Aulas de Java Avançado 2- Faculdade iDez 2010
 

Aulas de Java Avançado 1 - Faculdade iDez 2010

  • 1. Java Avançado Maurício Linhares Especialização em Desenvolvimento para a Web - iDez
  • 2. 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;
  • 3. 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;
  • 4. 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;
  • 7. 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;
  • 10. 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?
  • 11. Prática – TDD com Contas Bancárias
  • 12. Prática – Criando uma classe Dinheiro
  • 13. Prática – Calculando a data de entrega de um pedido
  • 14. Arquivos em Java –java.io.File Classe base que representa um caminho: Arquivos Diretórios Caminho virtual (que ainda não existe no sistema de arquivos) Pode ser usada para: Criar; Remover; Mover;
  • 15. Métodos comuns createNewFile | mdkir Cria um arquivo ou diretório mkdirs Cria o diretório e todos os diretórios pais que ainda não existam lenght Diz o tamanho do arquivo em bytes rename( File ) Renomeia (move) um arquivo para o caminho passado como parâmero
  • 16. 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;
  • 17. 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;
  • 18. Outras de classes Stream em Java Buffered(Input/Output)Stream; File(Input/Output)Stream; ByteArray(Input/Output)Stream;
  • 19. Streams em Java –Decoratorpattern
  • 20. Criando um OutputStream que faz backup automático
  • 21. 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;
  • 22. Lendo e escrevendo Serializables em arquivos
  • 23. 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;
  • 24. Classes comuns InputStreamReader|InputStreamWriter; File(Reader|Writer); String(Reader|Writer); CharArray(Reader|Writer);
  • 25. Criando um par de Reader/Writer que criptografam o conteúdo
  • 26. Criando um writer que faz backup do arquivo escrito Exercício
  • 27. 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;
  • 28. Lendo e escrevendo em arquivos com FileChannel
  • 29. 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;
  • 31. Fazendo parsing da lista de músicas Exercício Lista de Albuns Lista de Artistas
  • 32. 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;
  • 33. Exemplo de templatedo FreeMarker <?xml version="1.0"?> <empregados> <#list empregados as empregado> <empregado> <nome>${empregado.id?html}</nome> <#ifempregado.posicao??> <posicao>${empregado.posicao!}</posicao> </#if> </empregado> </#list> </empregados>
  • 34. 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
  • 35. Acessando um banco de dados Class.forName("org.h2.Driver"); Connection conexao = DriverManager.getConnection("jdbc:h2:~/clientes", "sa", "");
  • 36. 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;
  • 37. Executandocomandos 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;
  • 38. Exemplo de código usando JDBC Connection conexao = DriverManager.getConnection("jdbc:h2:~/clientes", "sa", ""); Statementstatement = conexao.createStatement(); statement.executeUpdate("CREATE TABLE clientes(id int, nome varchar, senha varchar, email varchar)"); conexao.close();
  • 39. Usando um PreparedStatementparaexecutar 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();
  • 40. Usando um PreparedStatementparafazerumaconsulta Connection connection = DriverManager.getConnection("jdbc:mysql://localhost/lastfm", "root", ""); PreparedStatement statement = connection.prepareStatement( "SELECT * FROM tracks" ); ResultSetresultSet = statement.executeQuery(); while(resultSet.next()) { Tracktrack = newTrack(); track.title = resultSet.getString("title"); track.id = resultSet.getInt("id"); tracks.add(track); } connection.close();

Notas do Editor

  1. ----- Meeting Notes (04/12/10 08:11) -----Add meeting notes.