Post on 18-Dec-2014
description
ANÁLISE PROJETO E
PROGRAMAÇÃO PARA WEB
Profª. Maria Alice Jovinski
mjovinski@gmail.com
OBJETIVOS
Comparar e contrastar Análise e Projeto
Definir Análise e Projeto Orientados a Objetos
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
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
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;
REFERÊNCIA BIBLIOGRÁFICA
FURLAN, José David. Modelagem de objetosatravés da UML. São Paulo: Makron Book,1998.
RUMBAUGH, James et al. Modelagem eprojetos baseados em objetos. Rio deJaneiro: Campus, 1994.
COAD, Peter, YORDON, Edward. Análisebaseada em objetos. Rio de Janeiro: Campus,1992.
MARTIN, James. ODELL, James J. Análise eProjeto Orientados a Objeto. São Paulo:Makron Books, 1995.
AMBLER, Scott W. Análise e ProjetoOrientados a Objeto. Rio de Janeiro:Infobook, 1998. volume II.
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)
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;
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
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.
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;
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.
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.
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
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;
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;
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
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
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;
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;
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;
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;
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
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;
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
CLASSE, OBJETO E ATRIBUTO
Classe pessoa
É 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
ABSTRAÇÃOExemplo
Avião
Esporte
INSTÂNCIA
Representa cada ocorrência de um OBJETO
formados a partir de uma CLASSE.
Funcionário1 Ana
2 João
3 Fátima
4 Pedro
5 Carlos
Outra palavra para objeto. Dizemos que objeto é
uma instância de uma classe.
INSTÂNCIA
Objeto Funcionário 2
(instância)Ana Maria
Av. Curitiba, 444
05/02/69
999-9999Exemplo
Classe Funcionário
possui nome
possui endereço
possui data de
nascimento
possui telefoneObjeto Funcionário 1
(instância)Carlos
Av. Curitiba, 44
05/03/69
999-9998
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;
OPERAÇÃO
É o que os Objetos de uma Classe sabem realizar
Cafeteira.esquenta
Cafeteira.aumentaTemperatura
Cafeteira.diminuiTempo
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);
Exemplo da implementação de um método em JAVA:
void remover(ActionEvent e){
try
{
deleteRow();
saveChanges();
}
catch (Exception ex)
{
desabilita();
}
}
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
INTERAÇÃO ENTRE OBJETOS
IDPessoaClasse Funcionário
Funcionario-ID
RG
Nome
Endereço
Data Nascimento
IDENTIFICADOR ÚNICO
É um ou vários ATRIBUTOS, cuja função é permitir
a individualização de cada INSTÂNCIA;
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;
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;
Cliente
Faz
Pedido
Figura – Associação: Relacionamento Cliente-Pedido
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.
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;
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;
Todo
Partes
Figura – Todo-Parte: Classe Casa e classes compostas
? ? ? ?
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
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
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;
HERANÇA
Representa a propriedade pela qual uma CLASSE
pode herdar características e comportamento de
uma outra CLASSE
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;
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;
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
Pessoa
Estudante Professor Funcionário Diretor
Figura – Herança: Classe Pessoa e classes derivadas
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;
GARANTIA DE ENCAPSULAMENTO
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;
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.
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.
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;
POLIFORMISMO
Habilidade para usar a mesma mensagem para
invocar comportamentos diferentes do objeto.
Exemplo
Funcionário
Livro
Operação Criar Exemplar
Banco
Agência
... a estrutura (atributos) de cada classe é diferente
POLIFORMISMO
EXEMPLO DE POLIFORMISMO