Fundamentos do desenho orientado a objetos com UML (Fundamentals of Object-Oriented design in UML)
Como eu já havia comentado na minha resenha anterior (Padrões de Projeto) este livro foi fundamental para o meu entendimento sobre programação orientada à objetos. De todos os livros que considero leitura obrigatória este entrou na lista este entrou na lista mais por “gratidão aos serviços prestados” do que por ser um livro “matador”.
É bem provável que existam livros que tratam sobre o desenho orientado à objetos que são mais completos do que este mas esse me cativou pela forma como foi escrito. Ele é um livro que trata de assuntos realmente chatos e complicados de se explicar usando uma dose muito sutil de bom-humor.
Em um dos capítulos o autor, Meillir Page-Jones, lista uma série de erros comuns que são cometidos por programadores de primeira viagem e explica porque esses erros ocorrem. O exemplos citados por eles são bastante capciosos e em alguns casos a gente consegue perceber que estão errados mas não conseguimos imaginar como consertaríamos esses erros. Neste caso então ele nos acompanha passo a passo até a solução do problema listado.
Outros assuntos tratados de forma mais séria e profunda no livro são relacionados à idéia básica da POO que é desenvolver sistemas com:
- Alta coesão
- Baixo Acoplamento
Desenvolver componentes de software com alta coesão, baixo acoplamento e pensando em interfaces no lugar de tipos (como sugerido no livro Padrões de Projeto) certamente farão com que seus sistemas fiquem extremamente robustos. Se eles forem acompanhados de Testes automatizados (XP), refatorados constantemente (Refatoração) não consigo pensar em um adjetivo melhor do que “perfeito” para atribuir ao seu trabalho.
Eu li a versão traduzida para o português deste livro. A tradução foi feita pela editora Makron e achei a tradução razoável. Não é uma boa tradução mas a leitura e o entendimento do assunto não fica comprometida por causa dela. Me parece também que a versão traduzida saiu de circulação e por essa razão pode ser mais complicado achar a versão traduzida para comprar.
Para comprar: Fundamentos do desenho orientado a objetos com UML ou Fundamentals of Object-Oriented design in UML
Padrões de Projeto (Design Patterns)
Programo computadores há muito tempo. Quando iniciei minha ‘carreira’ usava a linguagem BASIC e LOGO em meu MSX Expert (BASIC) e um TK3000 (LOGO). A linguagem BASIC causou alguns estragos gigantescos em meu cérebro tornando superdifícil aprender a programar em uma linguagem estruturada futuramente. Foi difícil eu perder o meu apego ao “GOTO”.
Mas depois de ter lido um livro sobre Turbo Pascal, cujo nome do autor infelizmente não me recordo, todo o que eu já tinha visto sobre o paradigma procedural se encaixou magicamente e aquilo começou a fazer sentido pra mim. Eu gosto de chamar isso que aconteceu comigo de ‘iluminação’.
Então esse livro sobre Turbo Pascal me iluminou para que eu compreendesse o paradigma procedural.
Mas então os programadores gritaram: “Faça-se a OO” e a OO “se fez”. Lá fui eu novamente correr atrás de entender como essa tal de “Programação Orientada a Objetos” funcionava.
Li muita coisa. Vi muito hype em cima do assunto. Vi muita mágica sendo feita e muita mágica sendo desfeita usando-se POO. Mas aquilo ainda não fazia muito sentido pra mim.
Depois de ler um livro chamado “Fundamentos do Desenho Orientado a Objetos” (que falarei no futuro) o meu cérebro começou a criar as conexões entre todo o conhecimento que eu já tinha adquirido. Mas faltava a faísca para produzir o fogo que me iluminaria.
Com a popularização da linguagem Java vários hypes surgiram (e continuam a surgir) e entre eles estavam os “Design Patterns“. Nem dei muita atenção porque as ‘modinhas’ produzidas no universo javanista são tão duradouras quanto a fama que o grupo musical “Polegar” teve no passado.
Certo dia um livro chamado “Design Patterns” caiu em minhas mãos e resolvi folheá-lo. Notei que não tinha uma única linha de código em Java e então percebi que aquilo ali já existia antes mesmo de Java ter começado a lançar suas modinhas.
Comecei a ler o livro e em uma passagem encontrei uma frase que dizia algo parecido com: “No desenvolvimento Orientado à Objetos não desenvolva para tipos, desenvolva para interfaces.” e aí então a faísca foi lançada.
Devorei o livro rapidamente e adquiri uma cópia (uma tradução para o português que estava muito mais barata do que o original em inglês) e devorei o conteúdo em uma semana.
O livro tem alguns capítulos que introduzem o conceito de padrões, fala sobre o modelo MVC (Model-View-Controller) para separação dos componentes de uma aplicação e fala sobre alguns conceitos de OO que são bem interessantes. A partir daí temos os padrões que são catalogados de maneira a possibilitar uma rápida consulta.
Cada padrão acompanha uma descrição, um diagrama explicativo, os casos de uso, os casos onde não devemos usar tal padrão, o relacionamento desse padrão com outros e exemplos em Smalltalk e C++.
Esse livro não é adequado para pessoas que ainda não conhecem os conceitos básicos da Programação Orientada a Objetos pois ele assume que o leitor já conheça ao menos o básico sobre este assunto.
A cópia traduzida que eu tenho é editada pela Bookman e tem uma tradução excelente onde os nomes dos padrões são preservados na forma original em inglês.
Esse livro é um clássico da literatura técnica e algumas pessoas o chamam de “GoF” que é a abreviação para “Gang of Four“, uma alusão aos quatro renomados autores do livro: Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides.
Para comprar: Padrões de Projeto ou Design Patterns



