003 - classesdeespecificação
DESCRIPTION
modelo de diagrama de classesTRANSCRIPT
1
Modelagem de Classes de Especificação
2
Especificação de atributos
Análise e Projeto Orientado a Objeto
3
Especificação de atributos
No modelo de classes de domínio, os atributos, quando são representados, o são somente pelo nome.
No entanto, a especificação completa de um atributo deve seguir a sintaxe:
[/] [visibilidade] nome [: tipo] [= valor-inicial]
4
Sintaxe da UML para atributos
Visibilidade
Diz respeito ao nível de acesso do atributo. Isto é, quais atributos são acessíveis por outros objetos.
A propriedade de visibilidade serve para implementar o encapsulamento
Esta pode ser: Pública: qualquer objeto relacionado pode obter acesso ao atributo (é a
visibilidade default). Não use! Pois acaba com o encapsulamento. Representação: +
Protegida: só o próprio objeto e seus descendestes podem ter acesso ao atributo.
Representação: # Privada: só o próprio objeto tem acesso ao atributo.
Representação: -
5
Sintaxe da UML para atributos
Nome Diz respeito ao nome do atributo
Este deve seguir um padrão e as regras de nomes de identificadores.
EX: certidaoCasamento, sexo, estadoCivil, dataNascimento, RG,...
Tipo Especifica o tipo do atributo.
Este é dependente da LPOO a ser usada.
Pode ser um tipo primitivo ou um tipo criado pelo usuário
EX: String, Cliente, Float, Endereco,...
6
Sintaxe da UML para atributos
Valor Inicial Diz respeito a um valor inicial para o atributo.
Este é automaticamente definido quando o objeto é instanciado.
EX: saldo = 0, debitado = true,...
Atributo Derivado Especifica se o atributo pode ser obtido a partir do valor de outro(s)
atributo(s) (são definidos por questões de desempenho).
Representação : /
EX: /idade, /salarioLiquido,...
7
Sintaxe da UML para atributos
Escopo de um atributo Diz se o atributo é do objeto ou da classe (estático).
Representação: Sublinha-se o atributo, quando este for da classe
EX: quantidadeClientes idadeMedia,...
Exemplo completo:
#nome : String-dataNascimento : Data-telefone : String#/idade : int#limiteCr…dito : Moeda = 500.0-quantidadeClientes : int-idadeM…dia : float
Cliente
8
Especificação de operações
Análise e Projeto Orientado a Objeto
9
Especificação de operações
Operação: um processamento realizado por (um objeto de) uma classe. Em termos de implementação: é uma rotina associada a uma classe.
Na construção do modelo de interações, operações identificadas na análise são validadas, e várias outras operações são identificadas. Essas operações devem ser adicionadas ao diagrama de classes e
documentadas através da definição de sua assinatura.
A especificação UML de uma operação tem pontos em comum com a de um atributo. Sua sintaxe básica é a seguinte:
[visibilidade] nome([parâmetros]): [tipo-retorno]
10
Sintaxe da UML para operações Visibilidade
Aplica os mesmos conceitos usados em atributo (+,# e -) Definir os seletores (obter/get) e os modificadores (definir/set)
Nome Semelhante ao atributo, mas deve expressar uma ação
EX:obterNome(), definirTelefone(),... Parâmetros
São as informações recebidas e depois executadas pela operação Cada parâmetro tem a seguinte sintaxe:
nome_parâmetro: tipo_parâmetro
11
Sintaxe da UML para operações
Tipo-retorno Semelhante a tipo de atributo. Pode ser primitivo ou criado pelo usuário. Nem todas as operações retornam um valor.
Escopo de uma operação Semelhante ao escopo de um atributo (objeto ou classe)
+obterNome() : String+definirNome(in umNome : String)+obterDataNascimento() : Data+definirDataNascimento(in umaData : Data)+obterTelefone() : String+definirTelefone(in umTelefone : String)+obterLimiteCr…dito() : Moeda+definirLimiteCr…dito(in umLimiteCr…dito : float)+obterIdade() : int+obterQuantidadeClientes() : int+obterIdadeM…dia() : float
Cliente
12
Especificação de Relacionamentos
Análise e Projeto Orientado a Objeto
13
Especificação de Relacionamentos
Na UML, há três tipos de relacionamentos entre objetos: Associações Dependências Generalizações
No modelo de classes de domínio, os relacionamentos entre objetos foram identificados como associações.
Observação: A consideração desses detalhes é mais adequada no modelo de
especificação, mas nada impede usá-los no modelo de domínio.
14
De associações a agregações ou composições
Uma associação pode ser de dois tipos especiais: Agregação: um tipo de associação fraca entre um todo e suas partes Composição: Idem anterior, entretanto, existe uma forte associação.
Uma agregação pode ser definida já no modelo de domínio ou apenas no modelo de especificação. Todavia a definição de composições é mais adequada no modelo de especificação.
Agregação X Composição Agregação
Os obj. Partes são criados/destruídos independentemente do obj. Todo Um obj. Parte pode ser utilizado para compor diversos objs. Todos A destruição de um obj. Todo não implica na destruição dos objs. Parte
Composição Os objs. Parte pertencem a um único obj. Todo
Por isso, é também conhecida como agregação não-compartilhada Objs. Parte são sempre criados e destruídos pelo obj. Todo A destruição de um obj. Todo implica na destruição de um obj. Parte
15
De associações a agregações ou composições
Mais exemplos de uma composição:
Composições (ou agregações) podem se estender por diversos níveis, formando hierarquias de composição (agregação).
Autom‘vel
Roda
Motor
1
4
1
1
CapŒtulo Se«√o Par¡grafo1 * 1 *
16
Restrições sobre associações
Restrições podem ser adicionadas sobre uma associação para condicionar a forma pela qual a associação deve ser implementada.
Duas das restrições sobre associações predefinidas pela UML são: subset (subconjunto)
xor (ou exclusivo).
17
Restrições sobre associações
EdifŒcioPessoa
1*
Reside
0..11
{subset}
Administra
Exemplo de restrições sobre associações :
Uma pessoa para administrar um edifício tem que residir neste
18
Restrições sobre associações
{xor}ContaBanc¡ria
Pessoa
Institui«√o
* 1..*
*
1..*
Exemplo de restrições sobre associações :
Uma conta bancária é apenas de Pessoa ou de uma Instituição
19
Navegabilidade de associações
Serve para indicar que um objeto “visualiza” (conhece) outro objeto associado a ele.
Associações, agregações e composições podem ser bidirecionais e unidirecionais. Uma associação bidirecional indica que há um conhecimento mútuo
entre os objetos associados. Por sua vez, Em uma associação unidirecional, apenas um objeto conhece o outro
Na UML, associações são, por omissão, navegáveis em ambos os sentidos.
Uma associação unidirecional é representada adicionando-se um sentido à seta da associação.
20
Navegabilidade de associações
Exemplo de navegabilidade de associação
Esse diagrama indica que objs. de Pedido possuem, cada um, uma referência para um objeto Cliente.
Por outro lado, um obj. de Cliente não possui referências para objs. associados em Pedido
-nome : String-dataNascimento : Data-telefone : String-/idade : int-limiteCr…dito : Moeda = 500.0-quantidadeClientes : int-idadeM…dia : float
Cliente
+obterTotal() : Moeda
-data : Data-hora : Hor¡rio-situa«√o : ESitua«√o
Pedido
1 0..*
Realiza
21
Navegabilidade de associações
No modelo de domínio, a navegabilidade da associação não é definida.
Entretanto, no modelo de classes de especificação, a navegabilidade de todas as associações deve ser definida. Isto facilita a implementação e manutenção do SW
22
Implementando as associações
Para associações 1:1, a implementação é trivial: Defini-se apenas um atributo do tipo B na classe A.Se a navegabilidade for bidirecional: aplica-se o procedimento acima para as duas classes.
Portanto, em associações 1:1, não há necessidade de um refinamento adicional do diagrama de classes.
Todavia, em associações 1:N ou N:N, detalhes adicionais podem ser representados para esclarecer como implementar tais associações.
O detalhamento de associações se baseia em classes que representam coleções de elementos Ex. Classes Parametrizadas
23
Classe Parametrizada
Uma coleção pode ser representada em um diagrama de classes através uma classe parametrizada (template) . Esta é uma classe genérica que é instanciada para obter outras classes
normais. Possui operações ou atributos cuja definição é feita em função dos
parâmetros.
Uma coleção pode ser definida a partir de uma classe parame-trizada, onde o parâmetro é o tipo do elemento da coleção.
Notações UML para uma classe parametrizada. Exemplo: classe parametrizada Lista:
Lista
Tipo
Lista<Tipo>
24
Refinando associações 1:N
Classes parametrizadas são normalmente utilizadas para detalhar associações 1:N. Idéia básica: definir uma classe parametrizada cujo parâmetro é a
classe correspondente ao lado muitos da associação. A utilização da classe parametrizada resulta na transformação
de uma associação 1:N em uma associação 1:1. Formas alternativas para representar uma associação 1:N.
ListaT
ListaEmpregados
Empregado
Departamento
*
1
Departamento
1
1
Empregado
Lista<Empregado> Empregado
Departamento
1
1
25
Herança
Relação de especialização entre DUAS classesUma delas corresponde a um conceito mais genéricoA outra, a um conceito mais específico
26
Herança
27
Herança É Unidirecional
Estudante de graduação é uma espécie de estudante, masestudante NÃO é uma espécie de estudante de graduação
28
Níveis Hierárquicos de Herança
29
Níveis Hierárquicos de Herança
30
Restrições sobre Generalização/Especialização
31
Restrições sobre Generalização/Especialização
32
Restrições sobre Generalização/Especialização
33
Restrições sobre Generalização/Especialização
34
Restrições sobre Generalização/Especialização
35
Papel e Herança
Evitar
36
Herança de Operações e Polimorfismo
•Pode ser que um comportamento de alguma operação herdada seja diferente para a subclasse.
•Nesse caso, a subclasse deve redefinir o comportamento da operação.
•Entretanto, a assinatura da operação pode ser reutilizada pela subclasse.
•A subclasse deverá implementar o novo comportamento desejado e manter a assinatura original.
37
Operações Polimórficas
•São operações de mesma assinatura definidas em diversos níveis de uma hierarquia de generalização e que possuem comportamento diferente.
•Essas operações devem ter a assinatura repetida na(s) subclasse(s) para indicar que elas estão sendo redefinidas.
38
Operações Polimórficas
39
Operações Abstratas
40
Operações Abstratas
41
Classificação Dinâmica