O documento discute vários tópicos avançados de desenvolvimento Java, incluindo composição e agregação de objetos, testes unitários com JUnit, classes File e Streams de entrada/saída, parsing de XML, acesso a bancos de dados com JDBC e geração de templates XML com FreeMarker.
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;
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;
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;
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;
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;
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;