Projetos de POO em Java

Capa do livro Projetos de POO em Java
Título
Projetos de POO em Java
Autor(es)
Editora
FCA – Editora de Informática, Lda.
Páginas
320
ISBN
978-972-722-792-1

Fazem parte da minha biblioteca os excelentes títulos, Programação Orientada aos Objectos em JAVA 2 e JAVA6 e Programação Orientada pelos Objectos e neste sentido foi com agradável surpresa que consultei o título, Projetos de POO em Java onde destaco desde já a notável estrutura dos conteúdos e a orientação para o projeto a partir do capítulo quarto.

Sendo um livro direcionado para profissionais de informática e estudantes e tendo em conta que os cursos de informática atuais incluem no seu currículo unidades curriculares de Metodologias e Gestão de Projetos, o autor torna muito fácil compreender a forma de estruturar e implementar pequenos projetos de software a partir da análise de requisitos. Citando António Santos (2014) … seria um agrado ver na bibliografia dos novos cursos TeSP…, referindo-se a este livro, adiria que a obra ficaria bem na bibliografia de qualquer unidade curricular de programação em Java.

Das muitas agradáveis surpresas como a já mencionada estrutura e organização dos conteúdos outra que suscita interesse e que será do agrado de todos diz respeito à análise que é realizada no final de cada exercício. O autor apresenta o enunciado do problema, apresenta a solução codificada e logo destaca uma análise completa explanando claramente os passos dados e salientando os pormenores do código. Esta estrutura repete-se ao longo de todos os capítulos tendo a sua maior importância a partir do capítulo quatro.

Nos dois primeiros capítulos é introduzida a programação em linguagem Java indicando toda a sua sintaxe essencial, abordando com detalhe os arrays e incluindo inúmeros exemplos práticos. O autor abstrai-se de complicações e foca-se no essencial, nunca economizando explicações para um correto entendimento dos conceitos. Percebemos esta orientação ao longo da leitura da obra e já no início, com a utilização da classe Scanner, demonstra a experiência e o interesse em transmitir ao leitor uma aprendizagem sólida e sem incompreensões desnecessárias. No final destes capítulos o leitor será capaz de criar pequenos programas com introdução de dados, estruturas de decisão e controlo, arrays, funções com retorno, gerar números aleatórios, manipular data e hora, utilizar um IDE… portanto, entender todos os detalhes da linguagem na sua orientação procedimental.

Do meu ponto de vista, o terceiro capítulo é o mais crítico devido à abordagem orientada a objetos. O autor, mais uma vez, surpreende com a explicação clara dos princípios, técnicas e termos associados à POO não esquecendo introduzir um ponto importante de comparação entre o paradigma imperativo e orientado a objetos. Aliado a isto encontramos um exercício exemplo completo e bem explicado que leva o leitor a entender como modelar um objeto, perceber o que é uma classe e um objeto, o que são os atributos, os comportamentos, os construtores… culminando com a criação de objetos. Sempre que necessário o autor explica como utilizar o IDE (BlueJ) para responder aos novos conteúdos abordados.

No quarto capítulo são explicadas as coleções do Java(arrays com características dinâmicas). O autor começa por explicar os ArrayLists da mesma forma com que já nos habituou, passando posteriormente para as coleções do tipo set (HashSet e TreeSet). Este capítulo merece especial destaque pela condução orientada ao projeto. Nos seus exercícios exemplo, parte da análise de requisitos à implementação efetiva de uma aplicação referindo a prototipagem no IDE BlueJ.

No que concerne ao quinto capítulo, explica hierarquia de classes, herança, classes abstratas e polimorfismo portanto, características da programação orientada a objetos introduzida numa perspetiva de organização das classes como vantagem à flexibilidade e reutilização de código. Através de exercícios, o autor introduz inúmeros detalhes de extrema importância como são exemplo a característica de dynamic method lookup. Termina o capítulo em beleza, com o polimorfismo, associando e reforçando neste ponto a extensibilidade dos programas que articula a dois grandes exercícios exemplo por ele analisados.

No sexto capítulo é realizada a abordagem às coleções com estruturação do tipo Map nas implementações HashMap e TreeMap. A experiência do autor é revelada ao colocar este conteúdo no seguimento dos anteriores. Este capítulo, uma vez mais, dá ênfase ao detalhe e clareza do tema abordado. Saliento o ponto em que o autor explica as regras na escolha de uma coleção seguindo os princípios da Engenharia de Software e o ponto onde se aborda a Interface Comparable e Comparator. Finaliza com a generalização e abstração do código, sempre acompanhados por exemplos muito completos, não esquecendo mencionar o símbolo especial  ? com vista a garantir compatibilidade nem  explicar o operador diamante <>.

No sétimo e último capítulo aborda a leitura e escrita de dados (Streams I/O) segundo a perspetiva da leitura/escrita de carateres e leitura/escrita de bytes, não se contendo em explicações, na já referida síntese teórica, para bom entendimento. Entre muitos pormenores destaco a abordagem das linhas de texto, parsing, delimitadores, expressões regulares(Pattern, Matcher), ficheiros de texto e ficheiros binários e muito especial destaque para a abordagem à codificação de carateres (charset) que muitas dúvidas costumam trazer e que muito bem se explica e por último a serialização de objetos.

Em jeito de conclusão, esta surpreendente obra encontra suporte na elevada experiência técnica e pedagógica do seu autor, apostando nas exigências atuais de orientação a projetos e na resolução de problemas reais. Tenho a certeza que todos concordarão que este livro é um dos melhores guias editados por todos os motivos já referidos e dos quais destaco uma vez mais a orientação ao projeto, a introdução teórica dos conteúdos, a análise completa dos inúmeros exercícios codificados e o foco nos pormenores que costumam levantar sempre bastantes dúvidas. Devo acrescentar que o autor fornece na página da editora todos os exercícios do livro na forma de código fonte (.java) e na forma compilada (.class). Parabéns ao autor e à editora por tão sublime trabalho.

Publicado na edição 49 (PDF) da Revista PROGRAMAR.