Home » Títulos » Colecção Tecnologias » Desenvolvimento orientado por objectos

Desenvolvimento orientado por objectos
Encomendar

Desenvolvimento orientado por objectos - Domain-Driven Design, Testes Unitários e Refactoring

Autores: João Hugo Miranda, José António Almeida
Nº Páginas: 232
ISBN: 989-615-013-3
Preço: 17,21 Euros
1ª Edição: Out/2005
Colecção: Tecnologias

   

Neste livro são abordados temas actuais que têm ganho uma crescente relevância na comunidade de desenvolvimento de software, entre os quais o 'Emergent Design', 'Desenvolvimento Test-Driven' e 'Refactoring'. Embora o livro se encontre direccionado principalmente a programadores mais experientes que produzam software com desenvoltura ao longo de todo o processo de desenvolvimento, o leitor mais inexperiente poderá igualmente beneficiar das questões aqui abordadas quando complementadas com as referências mencionadas.

Para o programador mais experiente, os temas aqui abordados permitem aprofundar o conhecimento de conceitos com os quais o leitor lida diariamente, como os conceitos inerentes à programação orientada por objectos. Estes conceitos são aqui desenvolvidos no contexto do 'Domain-Driven Design'. Adicionalmente são apresentadas técnicas como o 'Refactoring' e o 'Desenvolvimento Test-Driven', com o objectivo de apoiar o programador na realização deste desenho. Todos estes conceitos são ilustrados ao longo do livro com exemplos práticos integrados na implementação de uma aplicação de exemplo, permitindo ao leitor percepcionar como as diferentes técnicas podem ser usadas ao longo do ciclo de vida do desenvolvimento de software.

Como um todo, o livro mune o leitor de um conjunto de abordagens pragmáticas que lhe permitem endereçar de forma eficaz problemas de desenvolvimento de software com qualquer grau de complexidade.

 
 

INTRODUÇÃO

1.1 Objectivos e temática
   1.1.1 Objectivos
   1.1.2 Algumas considerações
1.2 Audiência
1.3 Motivação
   1.3.1 O Desenho Planeado
   1.3.2 O Desenho Emergente
   1.3.3 Um Programador Completo
1.4 Organização

PARTE I

2 O OBJECTO
2.1 A História e a Filosofia dos Objectos
   2.1.1 Simula
   2.1.2 Smalltalk
   2.1.3 C++
   2.1.4 Java
   2.1.5 .Net
2.2 O que são Objectos?
   2.2.1 Pensar em Objectos
2.3 Conceitos fundamentais
   2.3.1 Objecto
   2.3.2 Responsabilidade
   2.3.3 Mensagem
   2.3.4 Interface
   2.3.5 Encapsulamento
   2.3.6 Polimorfismo
2.4 Pontos-chave

3 DOMAIN-DRIVEN DESIGN
3.1 Compreender o domínio do problema
   3.1.1 Comunicação eficiente
   3.1.2 A importância da Comunicação
3.2 Linguagem Ubíqua
   3.2.1 Uma linguagem omnipresente
   3.2.2 Uma língua comum em todo o Projecto
   3.2.3 Linguagem Ubíqua e Documentação
3.3 Elementos do domínio da solução
   3.3.1 Entidades (Entity)
   3.3.2 Objectos-Valor (Value Objects)
   3.3.3 Serviços (Services)
   3.3.4 Associações
   3.3.5 Módulos
3.4 Pontos-chave

PARTE II

4 DESENVOLVIMENTO TEST-DRIVEN
 4.1 Testes Unitários
    4.1.1 Granularidade dos testes
    4.1.2 Quando implementar os testes?
    4.1.3 Reforço positivo
4.2 O que é Desenvolvimento Test-Driven?
   4.2.1 Um teste simples
   4.2.2 Mais um teste
   4.2.3 Alterações ao processo de desenvolvimento
4.3 Pontos-chave

5 DESENVOLVIMENTO TEST-DRIVEN AVANÇADO
5.1 Mock Objects
   5.1.1 Pesquisa de livros através de um web service
5.2 Injecção de dependências
   5.2.1 Injecção de dependências através do construtor
   5.2.2 Injecção de dependências através de uma propriedade
   5.2.3 Injecção de dependências através de injecção de interfaces
5.3 Mock Objects estáticos
   5.3.1 Persistência de livros
5.4 Quando utilizar Mock Objects?
5.5 Pontos-chave

6 DESENVOLVIMENTO DE INTERFACES DE UTILIZAÇÃO
6.1 Interfaces de Utilização
6.2 Model View Controller
6.3 Implementação de clientes Web
   6.3.1 Page Controller
6.4 Implementação de clientes ricos
   6.4.1 Model View Presenter
6.5 Pontos-chave

7 INTRODUÇÃO AO REFACTORING
7.1 O que é o Refactoring?
   7.1.1 Refactorings mais comuns
   7.1.2 As origens
   7.1.3 Pré-requisitos
   7.1.4 Refactoring Automático
7.2 Refactoring no Processo de Desenvolvimento
   7.2.1 Refactoring e Desenho
   7.2.2 Refactoring e Performance
   7.2.3 Refactoring e Aplicações Legadas
   7.2.4 Refactoring e Paradigmas não Orientados-a-Objectos
7.3 Pontos-chave

8 REFACTORING APLICADO
8.1 A aplicação Catálogo de Livros
8.2 Corrigindo Código Doente
   8.2.1 Métodos demasiado grandes
   8.2.2 Comentários
   8.2.3 Eliminando Métodos Longos e Comentários
   8.2.4 Código duplicado
   8.2.5 Classes demasiado grandes
   8.2.6 Eliminando Código Duplicado e Classes grandes
   8.2.7 Alterações divergentes
   8.2.8 Eliminando alterações divergentes
   8.2.9 Longas listas de parâmetros
   8.2.10 Blocos de dados
   8.2.11 Eliminando longas listas de parâmetros e blocos de dados
   8.2.12 “Inveja”
   8.2.13 Eliminando as “Invejas”
   8.2.14 Classe de Dados
   8.2.15 Eliminando Classes de Dados
   8.2.16 Obsessão por Primitivas
   8.2.17 Eliminando a obsessão por Primitivas
   8.2.18 Alterações Transversais
   8.2.19 Eliminando alterações transversais
   8.2.20 Switches
   8.2.21 Eliminando Switches
   8.2.22 Generalização especulativa
8.3 Pontos-chave

9 CONCLUSÕES E PASSOS FUTUROS
9.1 O que aprendemos
   9.1.1 Os Objectos
   9.1.2 Domain-Driven Design
   9.1.3 Desenvolvimento Test-Driven
   9.1.4 Refactoring
9.2 Próximos passos
   9.2.1 Beber das fontes originais
   9.2.2 Padrões de Desenho e Refactoring
9.3 Palavras finais

REFERÊNCIAS

ÍNDICE REMISSIVO

 

CV DOS AUTORES

José Almeida é licenciado em Engenharia Informática pela FCT/UNL.
Actualmente, exerce funções de consultor na área de desenvolvimento aplicacional na Microsoft Consulting Services. Na sua actividade como consultor define, desenha e implementa soluções empresariais, e apoia clientes na optimização dos seus processos internos de desenvolvimento de software, promovendo a adopção de boas práticas da indústria. Nos seus interesses profissionais contam-se o desenho aplicacional e a investigação de técnicas de apoio à construção de software, como a automação de processos de construção, verificação e distribuição.

João Hugo Oliveira Senos Miranda é licenciado em Engenharia Informática e de Computadores pelo IST/UTL. Actualmente, exerce funções de engenheiro de software no Banco BPI. Ao longo da sua carreira exerceu funções de análise e desenvolvimento de software, sobretudo baseado em tecnologias Web.
Actualmente, assume funções de I&D tendo por objectivo a investigação e análise de metodologias, práticas e tecnologias que permitam melhorar a produtividade da equipa que integra e a qualidade do software por ela desenvolvido. O seu maior interesse profissional é o estudo de soluções que possibilitem o desenvolvimento de software com qualidade, em tempo útil e que possam ser aplicadas com eficiência e eficácia no ambiente extremamente competitivo das empresas de Tecnologias de Informação.

COMENTÁRIOS DOS LEITORES
Se o leitor não souber o que é desenvolvimento orientado a objectos,  domain-driven design ou refactoring e tiver curiosidade em aprender sobre  estes temas, então este livro é para si. Se, inclusivé, for um programador que não saiba exactamente como planear um projecto que pretenda começar, então vai encontrar muitas respostas neste livro.
É recomendado a estudantes de programação e programadores profissionais, obviamente. Pode ainda ser recomendado a gestores de projectos, analistas ou responsáveis técnicos já que parte do texto, especialmente os primeiros capítulos, estabelece o enquadramento conceptual das temáticas de batidas ao longo dos restantes capítulos.

Revista PROGRAMAR, Janeiro/2007

 

Este livro aborda, de forma estimulante e madura, vários aspectos de engenharia de software, em particular aqueles mais ligados ao desenho e à programação orientada por objectos como, por exemplo, aspectos de desenho conduzido pelo domínio, desenvolvimento conduzido por testes, e refactoring.

O livro segue um estilo reflexivo, crítico e por vezes também didáctico. Os autores, para além de descreverem factos e abordagens, contam histórias, apresentam exemplos práticos, mas também adjectivam referências bibliográficas, reflectem e discutem os factos. É por tudo isto um livro estimulante. Por outro lado, a sua leitura pressupõe um razoável nível de experiência e de atenção, pois ao abordar essa grande abrangência de temas, com grande domínio de conhecimento e maturidade, nem todo esse conhecimento será captado numa primeira leitura por estudantes ou engenheiros porventura mais inexperientes.

É definitivamente um livro para suscitar reflexão, discussão e a aplicação das melhores práticas no contexto da engenharia de software.

Alberto Silva
Professor do Instituto Superior Técnico

 
Copyright @ 2015, Centro Atlântico, Lda. Todos os direitos reservados. Prezamos a sua Privacidade.