Weitere ähnliche Inhalte Ähnlich wie Analise e Desenho Orientado a Objetos com UML (20) Mehr von Rildo (@rildosan) Santos (20) Analise e Desenho Orientado a Objetos com UML1. com UML
Análise e Desenho
Orientado a Objetos
Capacitação Engenharia de Software Análise e Desenho Orientado a Objetos com UML
Rildo F Santos
rildo.santos@etecnologia.com.br
rildo.santos@companyweb.com.br
Twitter: @rildosan
Blog: http://rildosan.blogspot.com/
Todos os direitos reservados e protegidos © 2006 e 2010
Versão 27 Rildo Santos (rildo.santos@etecnologia.com.br)
Versão 27 |
2. Análise e Desenho Orientado a Objetos com UML
Conteúdo
Capacitação Engenharia de Software
Parte 1 - Principais Conceitos da Orientação a Objetos e introdução
UML
Parte 2 – Especificação de Requisitos de Software
Parte 3 – Analise Conceitual
Parte 4 – Desenho (design) do Modelo de Especificação de Software
Parte 5 – Arquitetura de Software
Todos os direitos reservados e protegidos © 2006 e 2010
Versão 27 Rildo Santos (rildo.santos@etecnologia.com.br) 2
3. Capacitação Engenharia de Software Análise e Desenho Orientado a Objetos com UML
Principais Conceitos da
Orientação a Objetos e UML
Objetivo desta parte:
É apresentar e discutir os principais conceitos da
Orientação a Objetos e fazer uma breve introdução a UML
Versão 27 Rildo Santos (rildo.santos@etecnologia.com.br)
Todos os direitos reservados e protegidos © 2006 e 2010 3
4. Análise e Desenho Orientado a Objetos com UML
Orientação a Objetos. Principais Conceitos:
Capacitação Engenharia de Software
Objetivo
Objetivo:
Apresentar os principais conceitos da orientação a objetos. Será demonstrado os seguintes
conceitos: Classes, Objetos, Atributos, Métodos, Classe Abstrata, Abstração de Dados,
Herança, Polimorfismo e Encapsulamento
Versão 27 Rildo Santos (rildo.santos@etecnologia.com.br)
Todos os direitos reservados e protegidos © 2006 e 2010 4
5. Análise e Desenho Orientado a Objetos com UML
Orientação a Objetos. Principais Conceitos:
Capacitação Engenharia de Software
Introdução. Desenvolvimento de Software Orientada a Objetos
Influência escolha da
Ferramentas
Ferramentas
Tecnologia OO
e
Artefatos
Atividades
Suporte as atividades
WorkFlows
Metodologia/Fases
Jacobson pyramid “rational enterprise philosophy”
Versão 27 Rildo Santos (rildo.santos@etecnologia.com.br)
Todos os direitos reservados e protegidos © 2006 e 2010 5
6. Análise e Desenho Orientado a Objetos com UML
Orientação a Objetos. Principais Conceitos:
Capacitação Engenharia de Software
Objetos do Mundo Real
Podemos encontrar várias definições para o termo “objeto”, entre eles:
“Objeto pode ser qualquer coisa na natureza que possua
características e comportamentos”
Veja alguns exemplos de objetos:
Pessoa Cão Partida Barco
de Futebol
Os objetos podem ser físico (aqueles que podemos pegar, exemplos: uma pessoa,
um animal, um barco, um livro, um carro, uma casa e etc) e os conceituais
(aqueles que não podemos pegar, tais como: uma partida de futebol, uma ligação
telefônica, uma conta corrente e etc...)
Versão 27 Rildo Santos (rildo.santos@etecnologia.com.br)
Todos os direitos reservados e protegidos © 2006 e 2010 6
7. Análise e Desenho Orientado a Objetos com UML
Orientação a Objetos. Principais Conceitos:
Capacitação Engenharia de Software
Objetos do Mundo Real
Objetos
O termo orientação a objetos significa organizar o mundo real
como uma coleção de objetos que incorporam estrutura de
dados (propriedades ou características) e um conjunto de
operações que manipulam estes dados.
Classes
Objetos Objeto: Pessoa Propriedades Operações
Andar
Atributos Nome
Correr
Data de Nascimento
Métodos Massa (peso)
Trabalhar
Chorar
Altura
Abstração de Dados Dançar
Herança
Objeto: Pássaro Propriedades Operações
Polimorfismo
Espécie Andar
Encapsulamento Cor das penas Correr
Tamanho Voar
Peso Pousar
Versão 27 Rildo Santos (rildo.santos@etecnologia.com.br)
Todos os direitos reservados e protegidos © 2006 e 2010 7
8. Análise e Desenho Orientado a Objetos com UML
Orientação a Objetos. Principais Conceitos:
Capacitação Engenharia de Software
Objetos do Mundo Real
Os objetos tem um identificador único (que podemos chamar de nome do objeto), tem
conjunto de propriedades (que podemos chamar de características e/ou atributos) e
comportamentos (que podemos chamar de operações).
Atributos
cor
Número chassi
Ano-fabricação
Identificador
Carro
Operações
acelerar
O que são operações ? parar
- São coisas que objeto deve
saber fazer.
Versão 27 Rildo Santos (rildo.santos@etecnologia.com.br)
Todos os direitos reservados e protegidos © 2006 e 2010 8
9. Análise e Desenho Orientado a Objetos com UML
Orientação a Objetos. Principais Conceitos:
Capacitação Engenharia de Software
Objetos do Mundo Real
Quando atribuímos valores aos objetos, ou seja, as propriedades (atributos), podemos dizer que
ele tem um estado
Atributos
cor branco
Número chassi VW1003G345
Ano-fabricação 1966
Identificador
Carro
Operações
acelerar estado
parar
Versão 27 Rildo Santos (rildo.santos@etecnologia.com.br)
Todos os direitos reservados e protegidos © 2006 e 2010 9
10. Análise e Desenho Orientado a Objetos com UML
Orientação a Objetos. Principais Conceitos:
Capacitação Engenharia de Software
Objetos do Mundo Real
Os nomes dos objetos geralmente são substantivo no singular, tais como: cliente, conta-corrente,
pessoa e etc.
Os atributos também são substantivos, exemplo: cor, tamanho, peso, idade, número e etc.
Já as operações usualmente são verbos, como: acelerar, validar, verificar, calcular e etc
Atributos
cor branco
Substantivo
Número chassi VW1003G345
Ano-fabricação 1966
Identificador
Carro
Operações
acelerar
parar
verbos
Versão 27 Rildo Santos (rildo.santos@etecnologia.com.br)
Todos os direitos reservados e protegidos © 2006 e 2010 10
11. Análise e Desenho Orientado a Objetos com UML
Orientação a Objetos. Principais Conceitos:
Capacitação Engenharia de Software
Objetos do Mundo Real
Modelagem de objeto:
Identificador Carro
Nome (identificador)
Representação na
Orientação a objetos
Carro
Atributos cor
número chassi
cor branco
ano-fabricação
Número chassi VW1003G345 Propriedades
acelerar (atributos)
Ano-fabricação 1966 parar
Operações
acelerar
parar Operações
Versão 27 Rildo Santos (rildo.santos@etecnologia.com.br)
Todos os direitos reservados e protegidos © 2006 e 2010 11
12. Análise e Desenho Orientado a Objetos com UML
Orientação a Objetos. Principais Conceitos:
Capacitação Engenharia de Software
Objetos do Mundo Real
Modelagem de objeto:
Para representar os objetos do mundo real criamos classes, E
aí partir destas classes podemos criar os “objetos”.
Podemos dizer que um objeto é uma “instance” (espécie) da
classe.
Carro As classes são “blueprint” (projeto) para os objetos. São fôrmas
cor de objetos.
número chassi
ano-fabricação O que é
acelerar uma classe ?
parar
Representação na
Orientação a objetos
Versão 27 Rildo Santos (rildo.santos@etecnologia.com.br)
Todos os direitos reservados e protegidos © 2006 e 2010 12
13. Análise e Desenho Orientado a Objetos com UML
Orientação a Objetos. Principais Conceitos:
Capacitação Engenharia de Software
Classe
Definição de Classe:
Uma classe descreve um conjunto de objetos que compartilham os
mesmos atributos, operações, métodos, relacionamentos e semântica
Classes As classes são as partes mais importantes de qualquer sistema orientado a
objetos.
Objetos Usamos as classes para capturar o vocabulário do sistema que está em
Atributos desenvolvimento. Essas classes podem incluir abstrações que são parte do domínio do
problema, assim como as classes que fazem a implementação. Podemos usar ainda as
Métodos classes para representar itens de software, de hardware e até itens que sejam somente
conceituais.
Abstração de Dados
Exemplo:
Herança A classe Pessoa deverá ter atributos e métodos comuns
Polimorfismo
Pessoa Nome da Classe
Encapsulamento
nome Atributos
idade
getNome()
getIdade()
Nota: Dicionário Aurélio Métodos
Em programação ou modelagem orientada a objetos (v. orientação a objetos), categoria descritiva setNome()
geral, que abrange o conjunto de objetos que compartilham uma ou mais características quanto a
seus itens de dados e procedimentos associados. 22. Lóg. Agrupamento de objetos que têm uma ou
setIdade()
mais características em comum.
Versão 27 Rildo Santos (rildo.santos@etecnologia.com.br)
Todos os direitos reservados e protegidos © 2006 e 2010 13
14. Análise e Desenho Orientado a Objetos com UML
Orientação a Objetos. Principais Conceitos:
Capacitação Engenharia de Software
Classe
Exemplo de Classe:
3
1 Livro
Legenda:
1 – Objeto no mundo real
Classes 2 – Classe Livro
Objetos 3 – Objeto da classe Livro
Atributos
Métodos
Abstração de Dados
Herança
Polimorfismo 2 ISBN 0747551006
Encapsulamento Titulo: Harry Potter and the
Order of the Phoenix
Autor: J. K. Rowling
Versão 27 Rildo Santos (rildo.santos@etecnologia.com.br)
Todos os direitos reservados e protegidos © 2006 e 2010 14
15. Análise e Desenho Orientado a Objetos com UML
Orientação a Objetos. Principais Conceitos:
Capacitação Engenharia de Software
Classe e Objeto
Classe e Objeto. Exemplo:
ISBN 0747551006
Titulo: O Poder da inteligência
Emocional
Classes Autor: Daniel Goleman
Objetos
Atributos ISBN 0747551006
Métodos Titulo: Harry Potter and the
Order of the Phoenix
Abstração de Dados Autor: J. K. Rowling
Herança
Polimorfismo ISBN 8571643512
Titulo: AS JANELAS DO
Encapsulamento PARATII
Autor: Amir Klink
Uma coleção de livros
pode ser representada Cada livro desta coleção é
por uma classe chamada “instance” (objeto) da classe livro.
Livro.
Versão 27 Rildo Santos (rildo.santos@etecnologia.com.br)
Todos os direitos reservados e protegidos © 2006 e 2010 15
16. Análise e Desenho Orientado a Objetos com UML
Orientação a Objetos. Principais Conceitos:
Capacitação Engenharia de Software
Classe e Objeto
Classe e Objeto. Exemplo:
Identificador Carro
Classe (Modelo) Objeto (“instance”)
Carro fusca:Carro
cor cor=“branco”
Atributos número chassi número chassi=“VW1003G345
cor branco ano-fabricação ano-fabricação=1966
Número chassi VW1003G345
Acelerar()
Ano-fabricação 1966 parar()
Operações
acelerar
parar
Versão 27 Rildo Santos (rildo.santos@etecnologia.com.br)
Todos os direitos reservados e protegidos © 2006 e 2010 16
17. Análise e Desenho Orientado a Objetos com UML
Orientação a Objetos. Principais Conceitos:
Capacitação Engenharia de Software
Classe e Objeto
Classe e Objeto. Exemplo:
Classe
Classes Cliente
nome
Objetos cpf
idade
Atributos
Métodos
Abstração de Dados
Herança Objetos
Polimorfismo
Encapsulamento
Cliente: clientemulher Cliente: clientehomem
nome = Marina nome = Felipe
cpf = 022.200.708-12 cpf = 039.217.908-22
idade = 16 idade = 42
Versão 27 Rildo Santos (rildo.santos@etecnologia.com.br)
Todos os direitos reservados e protegidos © 2006 e 2010 17
18. Análise e Desenho Orientado a Objetos com UML
Orientação a Objetos. Principais Conceitos:
Capacitação Engenharia de Software
Classe, Responsabilidade e Colaboração
Responsabilidades
Definição de Responsabilidades:
Um contrato ou obrigação em um tipo ou de uma classe
Ao criar uma classe você estará criando uma declaração de que todos os objetos dessa
Classes classe têm o mesmo tipo de estado e o mesmo tipo de comportamento.
Em nível mais abstrato, esses atributos e operações são apenas as características com
Objetos quais as responsabilidades das classes executadas.
Atributos
Uma classe chamada de Transação de Pagamento tem a responsabilidade de
Métodos conhecer as informações inerente a operação, tais como número da transação,
Abstração de Dados situação, valor, data, tipo de pagamento e etc.
Herança TransacaoPagamento
Polimorfismo numero
valor
Encapsulamento data
situação
TipoPagamento
Responsabilidades
Responsabilidade:
-- Saber o número da
transação, data, valor
-- Conhecer o tipo de
pagamento...
Versão 27 Rildo Santos (rildo.santos@etecnologia.com.br)
Todos os direitos reservados e protegidos © 2006 e 2010 18
19. Análise e Desenho Orientado a Objetos com UML
Orientação a Objetos. Principais Conceitos:
Capacitação Engenharia de Software
Classe, Responsabilidade e Colaboração
Colaboração:
Definição de Colaboração:
Ás vezes uma classe precisa colaborar com outra classe para
cumprir suas responsabilidades
Classes
A classe Transação de Pagamento tem a responsabilidade de conhecer as
Objetos informações: número da transação, situação, valor, data, tipo de pagamento e etc.
As informações sobre tipo de pagamentos estão outras classes que especifica os
Atributos dados para cada tipo de pagamento. Exemplo: CartaoCredito e BoletoBancario.
Métodos Desta forma precisamos ter uma colaboração entre as classes para atender as
responsabilidades.
Abstração de Dados
Herança TransacaoPagamento CartaoCredito
Polimorfismo numero
valor
Encapsulamento data
situação
TipoPagamento Colaboração BoletoBancario
Responsabilidade:
-- Saber o número da
transação, data, valor
-- Conhecer o tipo de
pagamento...
Versão 27 Rildo Santos (rildo.santos@etecnologia.com.br)
Todos os direitos reservados e protegidos © 2006 e 2010 19
20. Análise e Desenho Orientado a Objetos com UML
Orientação a Objetos. Principais Conceitos:
Capacitação Engenharia de Software
Classe, Responsabilidade e Colaboração
Classes, Responsabilidades e Colaboração:
Para descrever responsabilidades utilize apenas texto em formato livre. Na prática
uma única responsabilidade pode ser escrita como expressão, ou uma oração ou
breve parágrafo.
Classes O CRC (Cartão de Responsabilidade e Colaboração) é uma técnica usada para
capturar e representar as classes, suas responsabilidade e colaborações.
Objetos Outra técnica que pode ser usada é a Análise de Caso de Uso.
Atributos
Métodos Nome da classe Cartão CRC
Abstração de Dados
Herança Responsabilidades Colaborações
Polimorfismo
Encapsulamento
Aluno
-- Deve conhecer os Matricula
dados dos aluno: Pessoa
Nome Curso
Número da Matricula
Curso
Versão 27 Rildo Santos (rildo.santos@etecnologia.com.br)
Todos os direitos reservados e protegidos © 2006 e 2010 20
21. Análise e Desenho Orientado a Objetos com UML
Orientação a Objetos. Principais Conceitos:
Capacitação Engenharia de Software
Resumo: Classe e Objeto
Resumindo:
Um objeto possui:
• um estado (definido pelo conjunto de valores dos seus
atributos em determinado instante)
Classes • um comportamento (definido pelo conjunto de métodos
Objetos definido na sua interface)
Atributos • uma identificação única
Métodos
Uma classe possui:
Abstração de Dados • Atributos
Herança • Métodos
Polimorfismo • Responsabilidades (o que ela deve saber fazer)
Encapsulamento • Colaboração (interação com outras classes)
Versão 27 Rildo Santos (rildo.santos@etecnologia.com.br)
Todos os direitos reservados e protegidos © 2006 e 2010 21
22. Análise e Desenho Orientado a Objetos com UML
Orientação a Objetos. Principais Conceitos:
Capacitação Engenharia de Software
Atributo
Definindo Atributo:
• É uma característica (uma propriedade) presente no objeto.
• Os valores dos atributos é igual ao Estado do Objeto.
Classes • Somente atributos que são de relevantes ao sistema devem ser
Objetos descritos na classe.
Cliente
Atributos nome
Métodos cpf
idade
Abstração de Dados
Herança
Polimorfismo
Encapsulamento
Cliente: clientemulher
nome = Marina
atributos cpf = 022.200.708-12
idade = 16
Versão 27 Rildo Santos (rildo.santos@etecnologia.com.br)
Todos os direitos reservados e protegidos © 2006 e 2010 22
23. Análise e Desenho Orientado a Objetos com UML
Orientação a Objetos. Principais Conceitos:
Capacitação Engenharia de Software
Método
Escrevendo os métodos.
Para cada atributo é recomendado escrever um par de métodos, os nomes destes
métodos devem começar com setXXXX( ) e getXXX( )
Classes
setCodigo():
Objetos Para trocar o valor do atributo
Atributos Cliente getCodigo():
Métodos codigo
Para recuperar o valor do atributo
nome Exemplo:
Abstração de Dados Valor do atributo: nome = null
getCodigo()
Herança setNome(“Duke”).
setCodigo()
Métodos Agora valor do atributo nome = “Duke”
Polimorfismo getNome()
setNome() getNome(), retornará “Duke”
Encapsulamento
Versão 27 Rildo Santos (rildo.santos@etecnologia.com.br)
Todos os direitos reservados e protegidos © 2006 e 2010 23
24. Análise e Desenho Orientado a Objetos com UML
Orientação a Objetos. Principais Conceitos:
Capacitação Engenharia de Software
Método
Definição de Método:
Definição:
Método é a implementação de uma operação.
Classes Definição de Operação:
É a implementação de um serviço que pode ser solicitado por qualquer
Objetos
objeto da classe com a finalidade de afetar um comportamento.
Atributos
Métodos Chamando os métodos
Para chamar um método de um objeto é necessário enviar uma mensagem para ele.
Abstração de Dados As mensagens identificam os métodos a serem executados no objeto receptor.
Herança Por definição todas as mensagens devem retornar pelo menos um valor.
Polimorfismo ContaCorrente
Encapsulamento conta
saldo
setDeposito()
Métodos getSaldo()
setSaque()
Versão 27 Rildo Santos (rildo.santos@etecnologia.com.br)
Todos os direitos reservados e protegidos © 2006 e 2010 24
25. Análise e Desenho Orientado a Objetos com UML
Orientação a Objetos. Principais Conceitos:
Capacitação Engenharia de Software
Mensagem
Definição de Mensagem:
Definição:
Mensagem é uma chamada de uma operação sobre um objeto,
compreendendo um nome da operação e uma lista de valores de
Classes argumentos. (Rumbaugh)
Objetos Um mensagem representa a requisição de um objeto remetente a um objeto receptor
Atributos para este último execute alguma operação definida para sua classe.
Essa mensagem deve conter informações suficientes para que a operação do objeto
Métodos receptor possa ser executada.
Abstração de Dados
Herança
Polimorfismo
Encapsulamento
Versão 27 Rildo Santos (rildo.santos@etecnologia.com.br)
Todos os direitos reservados e protegidos © 2006 e 2010 25
26. Análise e Desenho Orientado a Objetos com UML
Orientação a Objetos. Principais Conceitos:
Capacitação Engenharia de Software
Resumo: Métodos
Resumindo:
Os métodos são a implementação das operações de objetos.
Os métodos são responsáveis pelo comportamento do objeto.
A mudança de estado de um objeto deve ocorrer através dos
Classes métodos.
Objetos
Atributos Desta forma podemos dizer que os métodos “encapsulam” os
Métodos atributos.
Abstração de Dados
Herança
Polimorfismo
Encapsulamento
Versão 27 Rildo Santos (rildo.santos@etecnologia.com.br)
Todos os direitos reservados e protegidos © 2006 e 2010 26
27. Análise e Desenho Orientado a Objetos com UML
Orientação a Objetos. Principais Conceitos:
Capacitação Engenharia de Software
Classe Concreta e Abstrata
Temos dois tipos de classes:
Classe concreta:
São aquelas classes que podem
sofrer “instance” (criação de
objetos) e tem seus métodos
implementados por completo.
E a Classe abstrata ?
São aquelas classes que não
podem sofrer “instance” e seus
métodos não são implementados
por completo (geralmente apenas
assinado).
Versão 27 Rildo Santos (rildo.santos@etecnologia.com.br)
Todos os direitos reservados e protegidos © 2006 e 2010 27
28. Análise e Desenho Orientado a Objetos com UML
Orientação a Objetos. Principais Conceitos:
Capacitação Engenharia de Software
Abstração de Dados
Exemplo:
Um a empresa de transporte possui uma frota de veículo, esta frota é composta por caminhões, peruas
e motos.
Estes veículos têm algumas características semelhantes como cor, peso, tamanho e capacidade de
carga. Entretanto, cada veículo possui outras características diferentes como número de eixos sistema
de freio, tipo de motor e etc.
A abstração de dados é utilizada neste caso para identificar todas as propriedades comuns e reuni-las
em novo conjunto, isto lembra alguns princípios da matemática como fatoração.
Desta forma estaríamos fazendo um melhor aproveitamento das informações que se repetem e também
estamos fazendo que as características diferentes sejam tratada de forma diferenciada.
O que é
abstração
de dados ?
Versão 27 Rildo Santos (rildo.santos@etecnologia.com.br)
Todos os direitos reservados e protegidos © 2006 e 2010 28
29. Análise e Desenho Orientado a Objetos com UML
Orientação a Objetos. Principais Conceitos:
Capacitação Engenharia de Software
Abstração de Dados
Definição de Abstração de Dados:
Definição de abstração:
“Habilidade mental que permite aos seres humanos visualizarem os problemas
do mundo real com vários graus de detalhes, dependendo do contexto corrente
Classes do problema. (Jim Rumbaugh).
Objetos Qual é a função da abstração ?
Atributos A função da abstração é capturar as propriedades e os comportamentos essenciais,
como se fosse uma fatoração, desta forma determina-se o que é importante e o que
Métodos não é.
Abstração de Dados Exemplo
Herança
Polimorfismo Contribuinte
Encapsulamento Abstração
Contribuinte Contribuinte
Pessoa Física Pessoa Jurídica
especialização
Versão 27 Rildo Santos (rildo.santos@etecnologia.com.br)
Todos os direitos reservados e protegidos © 2006 e 2010 29
30. Análise e Desenho Orientado a Objetos com UML
Orientação a Objetos. Principais Conceitos:
Capacitação Engenharia de Software
Abstração de Dados
Exemplo de Abstração de Dados:
Abstração: nos ajuda a lidar com a complexidade.
Exemplo
Classes Generalização
Objetos
MeiodeComunicação
Atributos
Métodos
Abstração de Dados
Carta Telefone Jornal
Herança
Polimorfismo
Encapsulamento
Especialização
As classes Contribuinte e MeiodeComunuicação são abstratas e ambas podem
representam um domínio.
Versão 27 Rildo Santos (rildo.santos@etecnologia.com.br)
Todos os direitos reservados e protegidos © 2006 e 2010 30
31. Análise e Desenho Orientado a Objetos com UML
Orientação a Objetos. Principais Conceitos:
Capacitação Engenharia de Software
Abstração de Dados
Abstração de Dados e Classe Abstrata:
Uma classe abstrata é uma classe que:
• Provê organização
• Não possui “instances”, ou seja, não possui objetos.
Classes • Possui uma ou mais operações (métodos) abstratas
Objetos public abstract class ContaBancaria extends Object {
Atributos public ContaBancaria() { }
protected int numerocontacorrente;
Métodos public abstract int getNumeroContaCorrente();
Abstração de Dados }
public abstract void setNumeroContaCorrente(int numerocontacorrente);
Herança
Polimorfismo
Encapsulamento
Versão 27 Rildo Santos (rildo.santos@etecnologia.com.br)
Todos os direitos reservados e protegidos © 2006 e 2010 31
32. Análise e Desenho Orientado a Objetos com UML
Orientação a Objetos. Principais Conceitos:
Capacitação Engenharia de Software
Abstração de Dados, exemplo:
Veja agora a classe Pessoa, que é public abstract class Pessoa {
abstrata, pois, possui um método //métodos
public abstract String getNome()
abstrato.
public void setNome(String nome){
this.nome = nome;
}
Um método abstrato não possui public abstract int calcIdade(Date
public abstract int getIdade()
implementação somente assinatura d1, Date d2);
(declaração) public void setIdade(int idade)
public void setIdade(int idade)
{ {
this.idade = idade;
this.idade = idade;
} }
}
Um método concreto possui implementação
assinatura e implementação.
Versão 27 Rildo Santos (rildo.santos@etecnologia.com.br)
Todos os direitos reservados e protegidos © 2006 e 2010 32
33. Análise e Desenho Orientado a Objetos com UML
Orientação a Objetos. Principais Conceitos:
Capacitação Engenharia de Software
Resumo: Classe Abstrata
Resumindo:
Uma classe abstrata deve ter métodos abstratos.
Uma classe abstrata não possui “instance”
Classes
Objetos
Atributos
Métodos
Abstração de Dados Como eu faço
Herança para usar uma
Polimorfismo classe abstrata ?
Encapsulamento
Versão 27 Rildo Santos (rildo.santos@etecnologia.com.br)
Todos os direitos reservados e protegidos © 2006 e 2010 33
34. Análise e Desenho Orientado a Objetos com UML
Orientação a Objetos. Principais Conceitos:
Capacitação Engenharia de Software
Abstração de Dados
Comparação entre Classe Abstrata e Classe Concreta
Classe Abstrata Classe Concreta
Os métodos podem ser assinados e
Os métodos devem ser somente assinados
implementados
Não pode sofrer “instance” Poder sofrer “instance”
Relacionamento somente através de
Todos os tipos de relacionamentos
HERANÇA
Versão 27 Rildo Santos (rildo.santos@etecnologia.com.br)
Todos os direitos reservados e protegidos © 2006 e 2010 34
35. Análise e Desenho Orientado a Objetos com UML
Orientação a Objetos. Principais Conceitos:
Capacitação Engenharia de Software
Herança
Definição de Herança:
Definição:
Mecanismo baseado em objetos que permite que as classes compartilhem atributos
e operações baseadas em um relacionamento, geralmente generalização.
Classes (Rumbaugh)
Objetos Uma classe derivada herda a estrutura de atributos e métodos de sua
Atributos classe “base”, mas pode seletivamente:
• adicionar novos métodos
Métodos • estender a estrutura de dados
• redefinir a implementação de métodos já existentes
Abstração de Dados
Herança Uma classe “pai” ou super classe proporciona a funcionalidade que é comum a todas as
suas classes derivadas, filhas ou sub classe, enquanto que a classe derivada
Polimorfismo proporciona a funcionalidade adicional que especializa seu comportamento.
Encapsulamento Exemplo:
Animal
classe pai
Animal Doméstico Animal Selvagem
classe filha
Versão 27 Rildo Santos (rildo.santos@etecnologia.com.br)
Todos os direitos reservados e protegidos © 2006 e 2010 35
36. Análise e Desenho Orientado a Objetos com UML
Orientação a Objetos. Principais Conceitos:
Capacitação Engenharia de Software
Herança
Exemplo de Herança:
Classes Podemos dizer que Pós-
Hierarquia de Classes Graduação é tipo de Curso
Objetos Universitário, assim como
Curso
Atributos Super classe Universitário
Curso de Especialização ou
de Extensão.
Métodos ou classe pai
Abstração de Dados
Herança Graduação Pós-Graduação
Polimorfismo extends
Encapsulamento Sub classe
ou classe filha Especialização Extensão
Validação: Pode ser feita através de uma expressão que resulte um valor verdadeiro
Exemplo:
Graduação é tipo de Curso Universitário = Verdadeiro
Versão 27 Rildo Santos (rildo.santos@etecnologia.com.br)
Todos os direitos reservados e protegidos © 2006 e 2010 36
37. Análise e Desenho Orientado a Objetos com UML
Orientação a Objetos. Principais Conceitos:
Capacitação Engenharia de Software
Polimorfismo
Definição de Polimorfismo:
Definição:
“Polimorfismo” é uma operação que pode assumir múltiplas formas, a propriedade
segundo o qual uma operação pode comportar-se diferentemente em classes
Classes diferentes” (Rumbaugh)
O polimorfismo é o responsável pela extensibilidade na programação orientada a
Objetos objetos.
Atributos Promove o reúso.
Métodos Exemplo:
Abstração de Dados
Billhetagem
Herança Telefone Móvel
Polimorfismo calcularConta(telefone)
Encapsulamento
Telefone Fixo
Versão 27 Rildo Santos (rildo.santos@etecnologia.com.br)
Todos os direitos reservados e protegidos © 2006 e 2010 37
38. Análise e Desenho Orientado a Objetos com UML
Orientação a Objetos. Principais Conceitos:
Capacitação Engenharia de Software
Polimorfismo
Overloading de Método
Possibilidade de reúso do nome do método para diferentes implementações, em
tempo de execução, a aplicação, escolherá o método mais adequado para cada
chamada, veja o exemplo.
Classes
Objetos
Atributos TesteSoma Soma
Métodos somar(int a, int b)
somar(float a, float b)
Abstração de Dados somar(char a, char b)
Herança somar(long a, long b))
Polimorfismo
Encapsulamento
Para cada tipo de dados existe um método, o reúso do nome do método é permitido,
entretanto, a lista de argumentos deve ser diferente, veja o exemplo acima: o método
somar é definido várias vezes, contudo, com uma lista de argumentos diferentes,
desta forma evitaremos problemas como ambigüidade.
Versão 27 Rildo Santos (rildo.santos@etecnologia.com.br)
Todos os direitos reservados e protegidos © 2006 e 2010 38
39. Análise e Desenho Orientado a Objetos com UML
Orientação a Objetos. Principais Conceitos:
Capacitação Engenharia de Software
Polimorfismo
Overridde de Método
Uma sub classe (classe filha) pode mudar o comportamento herdado da
Super classe (classe pai), ou seja, um método herdado poderá ser
modificado. Veja o exemplo abaixo:
Classes Conta Bancária
Objetos getSaldo()
Atributos
Métodos
Abstração de Dados Conta Corrente Conta Poupança Investimentos
Herança getSaldo() getSaldo() getSaldo()
Polimorfismo
Encapsulamento O método getSaldo é herdado da Superclasse (Conta Bancária), entretanto para cada tipo de
Conta o método tem uma implementação diferente. Por exemplo:
- Para apurar o saldo da Conta Corrente saldo atual = (soma dos depósitos + saldo anterior) -
saques
Para a conta poupança seria saldo atual = (soma dos depósitos + saldo anterior + juros) -
saques
Para a conta de investimentos seria saldo atual = (soma dos aplicações + saldo anterior +
juros) - resgates - ir
Versão 27 Rildo Santos (rildo.santos@etecnologia.com.br)
Todos os direitos reservados e protegidos © 2006 e 2010 39
40. Análise e Desenho Orientado a Objetos com UML
Orientação a Objetos. Principais Conceitos:
Capacitação Engenharia de Software
Encapsulamento
Principais Conceitos
Definição de Encapsulamento:
É uma proteção adicional dos dados do objeto de possíveis modificações
impróprias, forçando o acesso a um nível mais baixo para tratamento do dados.
Classes
Objetos Public
Operações/métodos/interface
Atributos
Métodos
Abstração de Dados
Herança
Polimorfismo
Private
Encapsulamento Dados/Atributos/propriedades
Exemplo:
Quanto temos a edição de um arquivo protegida por senha, podemos dizer que ele
está protegido, pois, apenas aquele que tem a senha poderá editá-lo. Os demais
somente estão aptos a le-lo.
Versão 27 Rildo Santos (rildo.santos@etecnologia.com.br)
Todos os direitos reservados e protegidos © 2006 e 2010 40
41. Análise e Desenho Orientado a Objetos com UML
Orientação a Objetos. Principais Conceitos:
Capacitação Engenharia de Software
Encapsulamento
Benefícios do Encapsulamento:
Benefícios
- Segurança:
Protege os atributos dos objetos de terem seus valores corrompidos por
Classes outros objetos.
- Independência:
Objetos “Escondendo” seus atributos, um objeto protege outros objetos de
Atributos complicações de dependência de sua estrutura interna
Métodos
Abstração de Dados
Pessoa
Herança nome
Polimorfismo idade setNome() nome getNome()
Encapsulamento setNome()
getNome()
setIdade() setIdade() idade getIdade()
getIdade()
encapsulamento
Versão 27 Rildo Santos (rildo.santos@etecnologia.com.br)
Todos os direitos reservados e protegidos © 2006 e 2010 41
42. Análise e Desenho Orientado a Objetos com UML
UML. Linguagem de Modelagem Unificada
Capacitação Engenharia de Software
A versão da UML abordada é versão 1.5
Versão 27 Rildo Santos (rildo.santos@etecnologia.com.br)
Todos os direitos reservados e protegidos © 2006 e 2010 42
43. Análise e Desenho Orientado a Objetos com UML
UML. Linguagem de Modelagem Unificada
Capacitação Engenharia de Software
Introdução
Por que modelar sistemas ?
Construímos modelos para compreender melhor o sistema que estamos desenvolvendo.
Com a modelagem, podemos alcançar alguns objetivos:
1 - Os modelos ajudam a visualizar o sistema como ele é ou como desejamos que seja;
2 - Os modelos permitem especificar a estrutura ou o comportamento de um sistema;
3 - Os modelos proporcionam um guia para a construção do sistema;
4 - Os modelos ajudam na documentação do sistema.
O Que é Modelagem Visual?
“A Modelagem captura as partes essenciais do sistema.” (Rumbaugh)
Versão 27 Rildo Santos (rildo.santos@etecnologia.com.br)
Todos os direitos reservados e protegidos © 2006 e 2010 43
44. Análise e Desenho Orientado a Objetos com UML
UML. Linguagem de Modelagem Unificada
Capacitação Engenharia de Software
Introdução
O Que é Modelagem Visual?
Modelagem visual significa modelar com a utilização de uma notação padrão.
Precisamos adotar uma notação padrão (linguagem) e uma ferramenta.
UML (Linguagem de Modelagem Unificada) é a linguagem de modelagem visual
considerada padrão de mercado.
A UML (Linguagem de Modelagem Unificado)
é mantida pelo OMG (www.omg.org/uml).
Versão 27 Rildo Santos (rildo.santos@etecnologia.com.br)
Todos os direitos reservados e protegidos © 2006 e 2010 44
45. Análise e Desenho Orientado a Objetos com UML
UML. Linguagem de Modelagem Unificada
Capacitação Engenharia de Software
Introdução
A UML (Linguagem de Modelagem Unificada) é uma linguagem-padrão para elaboração
da estrutura de projetos de software. A UML poderá ser usada para:
• Visualização
• Especificação
• Construção de modelos e diagramas
• Parte da documentação.
A UML é adequada para a modelagem de sistemas, cuja a abrangência poderá incluir
sistemas de informação corporativos a serem distribuídos a aplicação baseadas em Web
e até sistemas complexos embutidos de tempo real.
A UML é apenas uma linguagem e, portanto, é somente uma parte de um método para
desenvolvimento de software. Ela é independente do processo, apesar de ser
perfeitamente utilizada em processo orientado a casos de usos, centrado na arquitetura,
iterativo e incremental.
Versão 27 Rildo Santos (rildo.santos@etecnologia.com.br)
Todos os direitos reservados e protegidos © 2006 e 2010 45
46. Análise e Desenho Orientado a Objetos com UML
UML. Linguagem de Modelagem Unificada
Capacitação Engenharia de Software
Principais Digramas:
ESTÁTICOS
. Diagrama de Classes
. Diagrama de Objetos Estrutura do sistema
. Diagrama de Componentes
. Diagrama de Distribuição
DINÂMICOS
. Diagrama de Casos de Uso
. Diagramas de Interação Comportamento do sistema
- Diagrama de Seqüência
- Diagrama de Colaboração
. Diagrama de Atividade
. Diagrama de Estados
Versão 27 Rildo Santos (rildo.santos@etecnologia.com.br)
Todos os direitos reservados e protegidos © 2006 e 2010 46
47. Análise e Desenho Orientado a Objetos com UML
UML. Linguagem de Modelagem Unificada
Capacitação Engenharia de Software
Processo de Desenvolvimento:
Processo de Desenvolvimento
Modelo Casos Modelo Objetos
Modelo de Classes
Uso de Negócio de Negócio
Realização Análise Desenho
Necessidades dos Visão Modelo de dos Casos de Uso Classes Classes
Stakeholders Casos de Uso
Casos de Teste
Componentes
Defeitos Script de Testes
Versão 27 Rildo Santos (rildo.santos@etecnologia.com.br)
Todos os direitos reservados e protegidos © 2006 e 2010 47
48. Análise e Desenho Orientado a Objetos com UML
UML. Linguagem de Modelagem Unificada
Capacitação Engenharia de Software
A Linguagem:
• Linguagem = Sintaxe + semântica
– syntax = rules by which language elements (e.g., words) are assembled
into expressions (e.g., phrases, clauses)
– semantics = rules by which syntactic expressions are assigned
meanings
• Notação = (UML Notation Guide) – define uma sintaxe gráfica UML
• Semântica = (UML Semantics) – define uma semântica UML
Versão 27 Rildo Santos (rildo.santos@etecnologia.com.br)
Todos os direitos reservados e protegidos © 2006 e 2010 48
49. Análise e Desenho Orientado a Objetos com UML
UML. Linguagem de Modelagem Unificada
Capacitação Engenharia de Software
Elementos:
• Elementos estruturais:
– classe, interface, colaboração, caso de uso, classe ativa, componente
e nó
• Elementos comportamentais:
– Interação e máquina de estados
• Elementos de agrupamento:
– Pacote e subsistema
Versão 27 Rildo Santos (rildo.santos@etecnologia.com.br)
Todos os direitos reservados e protegidos © 2006 e 2010 49
50. Análise e Desenho Orientado a Objetos com UML
UML. Linguagem de Modelagem Unificada
Capacitação Engenharia de Software
Visão: 4 + 1
Visão de Visão da
Projeto Implementação
Codificação
Funcionalidade Montagem
Vocabulário
Visão de
Caso de Uso
Visão do Visão da
Processo Implantação
Desempenho Topologia do Sistema
Escalabilidade Distribuição
Throughput Instalação
Conceitual Físico
Versão 27 Rildo Santos (rildo.santos@etecnologia.com.br)
Todos os direitos reservados e protegidos © 2006 e 2010 50
51. Análise e Desenho Orientado a Objetos com UML
UML. Linguagem de Modelagem Unificada
Capacitação Engenharia de Software
Visões:
Visão de Caso
de Uso
• A visão do caso de uso abrange os casos de usos que descrevem o comportamento do sistema
conforme é visto pelos seus usuários finais, analistas e pessoal de teste. Essa visão não
especifica realmente a organização do sistema de software. Porém , ela existe para especificar as
forças que determinam a forma da arquitetura do Sistema. Com a UML, os aspectos estáticos
dessa visão são representados em diagramas de caso de uso, enquanto os aspectos dinâmicos
são representados em diagrama de interação, diagrama de estados e diagrama de atividades
Visão de Projeto
• A visão de projeto de um sistema abrange as classes e colaborações que formam o vocabulário do
problema e da solução. Essa perspectiva proporciona principalmente um suporte para os requisitos
funcionais do sistema, ou seja, os serviços que o sistema deverá fornecer a seus usuários finais.
Com a UML, os aspectos estáticos dessa visão são capturados em diagramas de classes e de
objetos; os aspectos dinâmicos são capturados em diagramas de interações, de estados e de
atividades.
Versão 27 Rildo Santos (rildo.santos@etecnologia.com.br)
Todos os direitos reservados e protegidos © 2006 e 2010 51