Este documento fornece uma introdução aos conceitos de Análise e Projeto Orientados a Objetos (APOO). Discute a diferença entre análise e projeto, conceitos fundamentais de OO como classe, objeto, atributo e método, e técnicas de modelagem como associação, agregação e herança.
2. OBJETIVOS
Comparar e contrastar Análise e Projeto
Definir Análise e Projeto Orientados a Objetos
3. EMENTA
Introdução a análise orientada a objeto
Modelagem estática de objetos
Conceitos avançados de modelagem
Modelagem dinâmica
Modelagem funcional
Metodologia orientada a objeto
4. O QUE VAMOS APRENDER NA DISCIPLINA?
Saber uma linguagem de programação orientada a
objeto (OO) não é suficiente para criar sistemas
OO.
Tem que saber Análise e Projeto OO (APOO)
Isto é, Análise e Projeto usando uma perspectiva de
objetos
Nesta disciplina, vamos nos concentrar na fase de
Projeto, supondo que a Análise já foi feita.
Na prática, a análise e o projeto são feitos em ciclos.
Em cada ciclo, a análise vem antes do projeto
5. O QUE VAMOS APRENDER NA DISCIPLINA?
Usaremos a linguagem UML (Unified Modeling
Language) para criar modelos (de análise e de
projeto):
Um modelo é uma representação abstrata dos aspectos
essenciais de um sistema;
O que é "essencial" depende do momento da
modelagem;
A UML usa uma representação principalmente gráfica
para representar os modelos;
UML é muito popular hoje em dia para modelar
sistemas;
6. REFERÊNCIA BIBLIOGRÁFICA
FURLAN, José David. Modelagem de objetos
através da UML. São Paulo: Makron Book,
1998.
RUMBAUGH, James et al. Modelagem e
projetos baseados em objetos. Rio de
Janeiro: Campus, 1994.
COAD, Peter, YORDON, Edward. Análise
baseada em objetos. Rio de Janeiro: Campus,
1992.
MARTIN, James. ODELL, James J. Análise e
Projeto Orientados a Objeto. São Paulo:
Makron Books, 1995.
AMBLER, Scott W. Análise e Projeto
Orientados a Objeto. Rio de Janeiro:
Infobook, 1998. volume II.
7. DIFERENÇAS ENTRE ANÁLISE E PROJETO
Primeira alternativa:
A análise modela o problema e consiste das atividades
necessárias para entender o domínio do problema (o
que deve ser feito). É uma atividade de investigação.
O projeto modela a solução e consiste das atividades
de criação (como pode ser feito).
Análise Projeto
Modelagem do
problema
(entender)
Modelagem da
solução
(criar)
8. DIFERENÇAS ENTRE ANÁLISE E PROJETO
Segunda alternativa:
A análise consiste de todas as atividades feitas com ou
para o conhecimento do cliente. A informação produzida
é aquela que o cliente deve discutir e aprovar;
O projeto inclui as atividades que resultam em
informação que interessa apenas ao programador;
Com essa definição, a análise invade um pouco o "lado
da solução", pois o cliente deve discutir alguns tipos de
interações que ocorrerão na interface do usuário, etc;
9. DIFERENÇAS ENTRE ANÁLISE E PROJETO
Análise Projeto
Análise = informação
importante para o cliente
discutir e aprovar
Projeto = informação
importante para o
programador apenas
10. POR QUE A CONSTRUÇÃO DE SOFTWARE NÃO
APRESENTA A MESMA CONSTÂNCIA QUE OUTRAS
ÁREAS?
Engenharia Civil?
Principais equívocos:
Quando se pensa em construir uma casa, um prédio, um
navio, ou qualquer obra de Engenharia Civil, Naval ou
Eletrônica inicia-se co uma planta. Engenheiros, arquitetos,
colocam à sua disposição anos de trabalho e conseqüente
experiência. Nada se inicia, em termos de construção, antes
que a concepção do projeto esteja terminada.
No exemplo da construção civil, tudo é pensado, antes mesmo
de um tijolo ser assentado, partindo-se do pressuposto de que
o terreno é conhecido e a área a ser construída obedecerá às
regras de zoneamento da prefeitura local.
11. POR QUE A CONSTRUÇÃO DE SOFTWARE NÃO
APRESENTA A MESMA CONSTÂNCIA QUE OUTRAS
ÁREAS?
Por anos, tentamos construir software tendo como
termo de comparação a construção civil;
O problema é que os requisitos de um software
sofrem mudanças. Elas ocorrem porque o
interessado no software passa por mudanças
mostradas adiantes, não importando o tamanho do
software;
12. Os sistemas desenvolvidos hoje possui
características diferentes dos sistemas de
10 a 15 anos atrás.
Implementação Orientado a Objetos (IOO)
teve início nos anos 70 com a linguagem
SIMULA, parte da linguagem Smaltalk.
Os conceitos básicos do desenvolvimento
de software OO levaram mais de 10 anos
para amadurecerem.
13. O QUE É ANÁLISE E PROJETO ORIENTADOS A
OBJETOS?
A perspectiva empregada é de objetos (coisas,
conceitos ou entidades)
É um novo modo de estudar problemas com
utilização de modelos fundamentados em conceitos
do mundo real.
14. ORIENTAÇÃO A OBJETOS
Características
– Forma natural de enxergar a realidade
– Forma natural de modelar
– Forma natural de codificar
O mundo é Orientado a Objetos
15. O QUE SIGNIFICA “BASEADO EM OBJETOS”?
Significa que o software é organizado como uma
coleção de objetos separados que incorporam
tanto a estrutura quanto o comportamento dos
dados;
Isso contrasta com a programação convencional,
segundo a qual a estrutura e o comportamento dos
dados tem pouca vinculação entre si;
16. ORIENTAÇÃO À OBJETOS (OO)
A análise e Projeto OO tem como meta identificar o
melhor conjunto de objetos para descrever um
sistema de software;
O funcionamento deste sistema se dá através do
relacionamento e troca de mensagens entre estes
objetos;
17. VANTAGENS
Dentre as vantagens que a OO proporciona,
destacam-se:
Reusabilidade:
de código;
de objetos encapsulados;
Componentes, Frameworks, etc.
Manutenibilidade:
Mudanças bem localizadas, não acarretando propagações
descontroladas.
Confiabilidade:
Devido ao encapsulamento, que torna as estruturas de dados
privado aos objetos.
Extensibilidade
Aumento da Produtividade
18. CONCEITOS DE ORIENTAÇÃO A OBJETOS
Conceitos de OO que são imprescindíveis para o
entendimento do processo de desenvolvimento:
Objeto
Identidade
Mensagem
Classe
Métodos e Atributos
Abstração
Encapsulamento
Herança
Polimorfismo
19. SISTEMA ORIENTADO A OBJETOS
Um sistema orientado a objetos é uma coleção de
objetos que interagem entre si;
Um objeto interage com outro através de uma
mensagem que causa um estímulo;
20. OBJETOS E CLASSES
Um objeto é qualquer indivíduo, lugar, evento,
coisa, tela, relatório ou conceito que seja aplicável
ao sistema:
Em um sistema universitário, “João” é um estudante-
objeto;
Ele atende a diversos seminários-objetos e está trabalhando
em um mestrado-objeto.
Em um sistema bancário, “João”é um cliente-objeto e
possui uma conta corrente-objeto da qual ele emite
cheques-objetos borrachudos;
21. OBJETOS E CLASSES
Por exemplo, num sistema de informação para uma
biblioteca, alguns dos conceitos são Livro,
Biblioteca, Usuário;
Objetos são, semelhantes a outros tipos de
objetos. Estudantes compartilham de
características semelhantes (fazem o mesmo tipo
de coisas, são descritos da mesma forma), cursos
compartilha características semelhantes, itens de
um inventário também;
22. CLASSES
Uma classe descreve um conjunto de objetos: as
instâncias da classe;
Uma classe descreve o comportamento e a
composição do estado de todos os seus objetos;
Cada classe deve ter um nome distinto;
23. ATRIBUTOS
É uma característica particular possuída por todos
os OBJETOS de uma CLASSE e assume valores
específicos para cada OBJETO
Classe Funcionário
(possui) CPF
(possui) RG
(possui) Nome
(possui) Endereço
24. ATRIBUTO
Algo que um objeto ou uma classe sabem;
Um atributo é basicamente um único dado ou
informação;
Podem ser simples, como um número inteiro, ou
podem ser objetos complexos, como um endereço
de um cliente;
25. Exemplo
Valor:
nome = João, endereço = rua ..... , data de nascimento =
05/07/71 telefone = 999-9999
Classe Funcionário
(possui) nome
(possui) endereço
(possui) data de
nascimento
(possui) telefone
ATRIBUTO
27. É o ato de definir um objeto conceitual a partir de
OBJETOS do mundo real que possuam as
mesmas características e comportamento,
podendo ser classificados como pertencentes a
um mesmo tipo;
Dinheiro
ABSTRAÇÃO
29. INSTÂNCIA
Representa cada ocorrência de um OBJETO
formados a partir de uma CLASSE.
Funcionário
1 Ana
2 João
3 Fátima
4 Pedro
5 Carlos
Outra palavra para objeto. Dizemos que objeto é
uma instância de uma classe.
30. INSTÂNCIA
Objeto Funcionário 2
(instância)
Ana Maria
Av. Curitiba, 444
05/02/69
999-9999
Exemplo
Classe Funcionário
possui nome
possui endereço
possui data de
nascimento
possui telefone
Objeto Funcionário 1
(instância)
Carlos
Av. Curitiba, 44
05/03/69
999-9998
31. OPERAÇÃO
Um serviço que é requisitado a um objeto como parte de
seu comportamento em resposta a estímulos. Uma
operação tem uma assinatura que pode restringir quais
parâmetros reais são possíveis;
32. OPERAÇÃO
É o que os Objetos de uma Classe sabem realizar
Cafeteira.esquenta
Cafeteira.aumentaTemperatura
Cafeteira.diminuiTempo
33. MÉTODO
Cada método possui uma assinatura, um tipo de
retorno (primitivo ou classe) e uma implementação;
A assinatura de um método é composta por um
nome e uma lista de parâmetros;
Cada parâmetro tem um nome e um tipo (primitivo
ou classe);
34. Exemplo da implementação de um método em JAVA:
void remover(ActionEvent e)
{
try
{
deleteRow();
saveChanges();
}
catch (Exception ex)
{
desabilita();
}
}
35. MENSAGEM
Representa o mecanismo de invocação de uma
OPERAÇÃO;
É o mecanismo utilizado para solicitar uma
OPERAÇÃO. É a forma de conseguir executar
uma OPERAÇÃO;
Operação Abrir
Evento
ao abrir mensagem
38. ASSOCIAÇÃO
Vem do relacionamento entre as entidades
do mundo real, e é usada para agrupar
certos objetos que ocorrem em algum ponto
no tempo ou sob circunstâncias similares;
Uma conexão de ocorrência é um
relacionamento que um objeto precisa ter
com outro(s) objeto(s), para cumprir suas
responsabilidades;
39. ASSOCIAÇÃO
Os objetos estão associados ou relacionados uns
com os outros.
Estudantes FREQUENTAM cursos;
Professores MINISTRAM aulas;
Criminosos ROUBAM bancos;
Frequentar, ministrar, roubar são verbos que
definem relações entre objetos;
Um relacionamento entre instâncias tem o mesmo
conceito que um relacionamento em um diagrama
de entidade e relacionamento ou modelo de dados;
41. ASSOCIAÇÃO
Não temos apenas que identificar o(s)
relacionamento(s) entre objetos, temos também
que descrever o relacionamento
Não é suficiente saber que estudantes frequentam
cursos.
Quantos cursos os estudantes frequentam? Nenhum ou
vários?
Os estudantes frequentam cursos, e os cursos são
frequentados por estudantes? Quantos estudantes estão
envolvidos em cada curso?
Temos que identificar a cardinalidade e a opcionalidade
do relacionamento.
42. A cardinalidade nos diz quantos objetos estão
envolvidos em um relacionamento entre instâncias;
A opcionalidade indica se é preciso ou não fazer
algo;
43. AGREGAÇÃO
Algumas vezes um objeto é constituído de outros
objetos:
Um avião é composto de fuselagem, asas, motores,
trem de pouso
Uma remessa de um navio é composta de um ou mais
pacotes.
Estes são exemplos do conceito de agregação, que
representa relacionamentos do tipo “faz parte de”:
Um motor faz parte de um avião, um pacote faz parte
de uma remessa e um funcionário faz parte de uma
equipe;
45. HERANÇA ENTRE CLASSES
Duas classes podem ter uma relação de
generalização e especialização: uma classe geral
(superclasse) e uma classe específica
(subclasse);
Uma subclasse herda todas as propriedades
(atributos e métodos) da sua superclasse
46. EXEMPLOS DE HERANÇA
A subclasse Estudante herda as propriedades da
superclasse Pessoa;
A subclasse Quadrado herda as propriedades da
superclasse Poligono;
A subclasse Triangulo herda as propriedades da
superclasse Poligono;
A subclasse TrianguloRetangulo herda as
propriedades da superclasse Triangulo
47. Pessoas
HERANÇA
Conceito: é o mecanismo para expressar a
similaridade entre Classes, simplificando a definição
de Classes iguais a outras que já foram definidas;
48. HERANÇA
Representa a propriedade pela qual uma CLASSE
pode herdar características e comportamento de
uma outra CLASSE
49. HERANÇA
Permite a reutilização de especificações
comuns, logo no início das atividades de
análise;
Define uma relação entre classes do tipo é-
um(a), onde uma classe compartilha a
estrutura e o comportamento definidos em uma
ou mais classes;
Superclasse Abstrata ou mãe: não é
instanciável é utilizada como MODELO;
50. HERANÇA
O reconhecimento da similaridade entre classes
forma uma hierarquia de classes, onde
superclasses representam abstrações
generalizadas e subclasses representam
abstrações, onde atributos e serviços específicos
são adicionados, modificados ou removidos;
51. HERANÇA
As classes são conectadas por uma estrutura de
generalização e especialização;
Ex:
Padronização de Interface
Classes: acervo, Livro e Revistas
53. ENCAPSULAMENTO
Separação dos aspectos externos de um objeto
dos seus detalhes internos de implementação;
O estado de um objeto somente é acessível a
partir da implementação de seu comportamento;
55. ENCAPSULAMENTO (OCULTAMENTO DA INFORMAÇÃO)
É a combinação de atributos e operações em uma
classe;
Objetivo é restringir o escopo ou visibilidade da
informação para obter melhor legibilidade,
manutebilidade e principalmente reutilizabilidade no
desenvolvimento de um novo sistema;
56. ENCAPSULAMENTO (OCULTAMENTO DA INFORMAÇÃO)
Controle de Acesso
Determina como uma classe será utilizada por outras classe;
Privado – Private
É utilizado para impedir que um método ou variável seja
acessado a partir de uma outra classe, porem são totalmente
acessíveis internamente a classe onde foram declarados.
Esta restrição afeta inclusive a herança – as subclasses não
herdam estes membros privados.
Público – Public
Este modificador dá acesso a um membro da classe a partir de
outra classe, tornando-o completamente disponível para outra
classe, por isso deve ser evitado.
57. ENCAPSULAMENTO (OCULTAMENTO DA INFORMAÇÃO)
Controle de Acesso:
Protegido – Protected
Deve existir Herança;
Protegida dentro da classe, porem pública para as
subclasses e é privado para as demais classes que se
associam a ela.
58. ENCAPSULAMENTO CALCULADORA
Tem oculto seus
registradores, que são
ocultos por uma interface
que disponibiliza para o
usuário apenas serviços
de +, -, / * e outras;
Processo pelos quais se
obtêm um resultado não
estão diretamente
visíveis para quem esta
usando a calculadora;