Análise e Projeto Orientados  
por Objetos  
Apresentação da Disciplina  
Edirlei Soares de Lima  
<edirlei@iprj.uerj.br>  
Objetivos da Disciplina  
Apresentar e discutir técnicas avançadas de Análise e  
Projeto de Software empregadas no processo de  
desenvolvimento, focando no reuso e na flexibilidade  
do desenvolvido com Orientação a Objetos.  
Ao final do curso, os alunos devem ser capazes de:  
Transformar o resultado de uma análise orientada a objetos  
em um projeto flexível e reutilizável;  
Reconhecer situações onde padrões de projeto devem ser  
aplicados;  
Introdução  
Saber programar ≠ saber fazer um bom software  
O que é bom software?  
Extensível, reutilizável, bom desempenho, ...  
Programação orientada a objetos garante isso?  
Não, mas um bom projeto (OO) garante!  
Desenvolvimento Orientado por Objetos  
Análise OO: se dedica a desenvolver um modelo orientado a  
objeto do domínio da aplicação.  
Os objetos identificados refletem entidades e operações associadas  
com o problema a ser resolvido.  
Projeto OO: se dedica a desenvolver um modelo orientado a  
objeto de um sistema de software para implementar os  
requisitos.  
Os objetos em um projeto OO estão relacionados à solução do  
problema que está sendo resolvido.  
Programação OO: realiza um projeto de software em uma  
linguagem de programação OO.  
Processo de Desenvolvimento  
Cenário Exemplo  
Cenário Exemplo  
Você implementou o sistema...  
Mas e se agora:  
Shoppings pudessem ser compostos?  
Novas formas de pagamento se tornassem disponíveis?  
Um serviço de busca de produtos tivesse que ser  
disponibilizado só aos clientes?  
O gerente de uma loja fosse cliente de outra loja?  
A forma de armazenamento dos dados fosse alterada?  
...  
Cenário Exemplo  
Criar um projeto flexível é o segredo para gerenciar melhor as  
alterações de software  
Mudança de requisitos são frequentes  
Mudança é a norma, não a exceção!  
A expressão “E SE...” deve ser algo presente durante o projeto  
do software  
E se algum ator for adicionado?  
E se uma nova funcionalidade for adicionada?  
E se o sistema for utilizado em outro contexto?  
Análise e Projeto?  
Análise:  
Modela o problema;  
Atividades necessárias para entender o  
domínio do problema (o que deve ser  
feito);  
Enfatiza a investigação do problema e dos  
seus requisitos.  
Projeto:  
Modela a solução satisfazendo os  
requisitos;  
Atividades de criação (como pode ser  
feito);  
Em última instância, projetos podem ser  
implementados.  
Analise e Projeto Orientados por  
Objetos?  
Análise Orientada a Objetos: Objetivo é encontrar e  
descrever os objetos (ou conceitos) no domínio do  
problema.  
Projeto Orientado a Objetos: Enfatiza a definição dos  
objetos de software e como eles colaboram para a  
satisfação dos requisitos.  
Padrões de Projeto de Software  
Problemas no desenvolvimento de software se  
repetem...  
Bons desenvolvedores aplicam boas soluções para resolve-  
los.  
Por que não reutilizar as boas soluções em outros  
projetos?  
Padrões de software!  
É fundamental ter um repertório de soluções, de  
Padrões de Projeto.  
O que são padrões de Software?  
Um padrão de software consiste na descrição de um  
problema que ocorre com frequência e a base de  
uma solução para este problema.  
Baseia-se na reutilização de ideias... não de código!  
Programa da Disciplina  
Parte 1 Análise e Projeto Orientados por Objetos  
Parte 2 Padrões de Projeto GRASP  
Parte 3 Padrões GoF (Gang of Four)  
Parte 4 Projeto Prático  
Critério de Avaliação  
Avaliação Teórica:  
Prova teórica envolvendo o conteúdo teórico e prático  
apresentado durante as aulas;  
Avaliação Prática:  
Trabalhos e exercícios desenvolvidos em grupo ou  
individualmente;  
Apresentação em aula;  
Critério de Avaliação  
G1:  
Prova: 8.0  
Trabalhos e Exercícios: 2.0  
G2:  
Prova: 3.0  
Trabalho Final: 7.0  
Media Final = (G1 + G2)/2  
Pré-Requisitos  
Engenharia de Software  
Programação Orientada a Objetos  
Material das Aulas  
Página do Curso:  
www.inf.puc-rio.br/~elima/poo/  
Contato:  
Bibliografia Principal  
Craig Larman. Utilizando UML e Padrões,  
3
ª Edição, Bookman, 2007.  
Erich Gamma, Richard Helm, Ralph Johnson  
e John Vlissides. Padrões de Projeto,  
Bookman, 2010.