Upload
nguyenkhuong
View
247
Download
0
Embed Size (px)
Citation preview
Régis Simão – Diagrama de Classes 1/42
Diagrama de Classes
Régis Patrick Silva Simão
Régis Simão – Diagrama de Classes 2/42
Agenda
Introdução
Objetos
Classes
Atributos
Operações & Métodos
Relacionamentos
Relacionamento: Associação
Nome de Relacionamento
Papeis de Relacionamento
Multiplicidade
Navegabilidade
Classes de Associação
Associações OU
Relacionamento: Agregação
Relacionamento: Composição
Relacionamento: Generalização
Restrições
Interface
Relacionamento: Realização
Relacionamento: Dependência
Pacote
Estereótipos
Bibliografia
Régis Simão – Diagrama de Classes 3/42
No mundo real, manuseiam-se objetos.
Com o intuito de diminuir a distância entre o mundo real e mundo da solução, modelam-se os elementos manuseados pelos sistemas como objetos.
O diagrama de classe modela a estrutura estática do sistema, isto é, os objetos manipulados por um sistema e seus relacionamentos.
Introdução
Régis Simão – Diagrama de Classes 4/42
Objetos
Número: 991Num. Série: 123Marca: Motorola
Número: 992Num. Série: 124Marca: Motorola
Número: 994Num. Série: 126Marca: Motorola
Número: 993Num. Série: 127Marca: Motorola
Régis Simão – Diagrama de Classes 5/42
São elementos mapeados do mundo real.
Possuem:
Informações;
Comportamentos;
Identidade única e
Relacionamentos.
Tem natureza dinâmica.
Objetos
Régis Simão – Diagrama de Classes 6/42
Classes
Número: 991Num. Série: 123Marca: Motorola
Número: 992Num. Série: 124Marca: Motorola
Número: 994Num. Série: 126Marca: Motorola
Número: 993Num. Série: 127Marca: Motorola
Régis Simão – Diagrama de Classes 7/42
Classe é a definição dos objetos, define:
Informações que os objetos devem possuir: atributos
Comportamento que os objetos podem executar: operações
Tem natureza estática.
Os relacionamentos entre as classes definem os relacionamentos que os objetos podem possuir.
O compartimento do nome da classe é sempre obrigatório, mas os compartimentos de atributos e operações são opcionais.
Classes
Régis Simão – Diagrama de Classes 8/42
Definem as informações que os objetos devem ter.
Visibilidade:
Privado (-) somente o próprio objeto tem acesso aos atributos privados
Público (+) qualquer outro objeto pode acessar os atributos públicos
Protegido (#) usado em relacionamento de generalização (herança), somente a própria classe e as classe filhas têm acesso aos métodos protegidos da classe pai
Atributos
Régis Simão – Diagrama de Classes 9/42
Recomendação: use atributos privados, obrigue o acesso a eles somente através de operações.
Sintaxe padrão:
Atributos
visibilidade nome: tipo [Multiplicidade] = valor-inicial
Régis Simão – Diagrama de Classes 10/42
Representam os comportamentos dos objetos
A operação é somente a descrição do comportamento (a assinatura do método)
O método é a implementação da operação
Operações e Métodos
Régis Simão – Diagrama de Classes 11/42
Visibilidade:
Privado (-) somente o próprio objeto tem acesso aos métodos privados
Público (+) qualquer outro objeto pode invocar os atributos públicos
Protegido (#) usado em relacionamento de generalização (herança), somente a própria classe e as classe filhas têm acesso aos métodos protegidos da classe pai
Sintaxe padrão:
Operações e Métodos
visibilidade nome (lista de parâmetros) : tipo-de-retorno
Régis Simão – Diagrama de Classes 12/42
Tipos de Operações:
Construtora
Operação que cria e/ou inicializa um objeto
Primeira operação executada
Executada no momento em que o objeto é instanciado
Seletora
Pode ler, mas não alterar o estado do objeto
Modificadora
Pode alterar o estado do objeto
Destrutora
Operação que finaliza um objeto
Última operação executada
Executada no momento em que o objeto é destruído
Operações e Métodos
Régis Simão – Diagrama de Classes 13/42
Os tipos de relacionamentos são:
Associação
Agregação
Composição
Generalização
Dependência
Realização
Um relacionamento também possuem informações, como:
Nome
Papeis
Multiplicidades
Outros
Relacionamentos
Régis Simão – Diagrama de Classes 14/42
Relacionamento: Associação
Relacionamento mais comum entre classes.
Mapeia o relacionamento entre os objetos do mundo real.
Represente uma dependência estrutural, pois, na implementação, uma classe pode ter atributos do tipo da outra classe. Isto dependerá da navegabilidade.
Régis Simão – Diagrama de Classes 15/42
Associação Unária.
Associação Binária.
Associação Ternária ou
Associação N-ária.
Relacionamento: Associação
Professor
Disciplina
Curso
Régis Simão – Diagrama de Classes 16/42
Identifica um relacionamento.
Pode-se usar um nome ou um verbo para nomear um relacionamento. O verbo deve ser usado juntamente com a navegabilidade para indicar o sentido de leitura do relacionamento.
Recomendação: somente use nomes de relacionamentos quando não tiver claro o significado do relacionamento. Cuidado para não poluir o diagrama.
Nome de Relacionamento
Régis Simão – Diagrama de Classes 17/42
Papeis de Relacionamento
Identifica a função que um objeto da classes assume no relacionamento.
Deve ser um substantivo.
Também possui visibilidade, pois, em caso de geração de código, este substantivo será o nome do atributo dentro da outra classe. Isto também depende da navegabilidade.
Régis Simão – Diagrama de Classes 18/42
Multiplicidade
Indica quantos objetos de uma classe participam do relacionamento com um objeto da outra classe.
Valores mais comuns:
1 – exatamente um
5 – exatamente cinco
0..1 – zero ou um
0..* – zero ou mais
* – zero ou mais
1..* – um ou mais
m..n – de m a n
3..5 – de 3 a 5
Régis Simão – Diagrama de Classes 19/42
Navegabilidade
Indica que dado um objeto pode-se alcançar outro objeto.
Na implementação, a navegabilidade vai definir se um uma classe juntamente com seu papel irão gerar um atributo dentro da outra classe.
Régis Simão – Diagrama de Classes 20/42
Semanticamente: Considerando duas classes, A e B, que se relacionam, a navegabilidade de A para B indica que a partir de um objeto de A pode-se obter rapidamente os objetos de B que se relacionam com o objeto de A.
Caso não haja navegabilidade de B para A, para se obter os objetos de A que se relacionam com um objeto de B, deve-se percorrer todos os objetos de A, perguntando se o objeto de B está associado aquele determinado objeto de A.
Navegabilidade
Classe A Classe B
Régis Simão – Diagrama de Classes 21/42
Unidirecional:
Indeterminada ou Bidirecional:
Navegabilidade
Régis Simão – Diagrama de Classes 22/42
Quando se usa a navegabilidade, ganha-se desempenho, pois, rapidamente se alcança outros objetos.
Mas perde-se em quantidade de espaço, pois exige-se mais ponteiros para referenciar os outros objetos.
Recomendação: não se preocupe com a navegabilidade logo de início, deixe para decidir a navegabilidade após os diagramas de seqüência, pois, você terá uma melhor visão de que objetos deseja-se alcançar.
Navegabilidade
Régis Simão – Diagrama de Classes 23/42
Quando existem atributos que são próprios do relacionamento, não pertencendo especificamente a uma das classes que participam do relacionamento.
A classe de associação tem as mesmas características de qualquer outra classe. Tem atributos, operações e relacionamentos.
Classes de Associação
Régis Simão – Diagrama de Classes 24/42
Associação OU
É o conceito de OU exclusivo.
Uma classe A pode ser relacionar com várias outras classes.
Mas quando se diz que estes relacionamentos pertencem a uma associação OU, cada objeto da classe A somente pode se relacionar com os objetos de uma mesma classes.
Régis Simão – Diagrama de Classes 25/42
Relacionamento: Agregação
Caso particular de associação
Representa um relacionamento do tipo Todo-Parte.
A vida do objeto parte não depende da vida do objeto todo.
Um objeto parte pode ser compartilhado por vários objetos “todos” (Agregação por Referência).
Também representa uma dependência estrutural, podendo gerar um atributo do tipo da classe “parte” dentro da classe que representa o todo.
Régis Simão – Diagrama de Classes 26/42
Relacionamento: Composição
Caso particular de agregação
Também representa um relacionamento do tipo Todo-Parte.
A vida do objeto parte depende da vida do objeto todo.
Um objeto parte não pode ser compartilhado por vários todos (Agregação por Valor).
Também representa uma dependência estrutural, sempre gera um atributo do tipo da classe parte dentro da classe que representa o todo.
Régis Simão – Diagrama de Classes 27/42
Relacionamento entre itens gerais e tipos mais específicos
Classe Mãe/Superclasse x Classe Filha/Subclasse
Relacionamento do tipo “é-um”
Subclasses herdam atributos, operações e relacionamentos da superclasse
Necessária para o polimorfismo
Relacionamento: Generalização
Régis Simão – Diagrama de Classes 28/42
Relacionamento: Generalização
Que subclasses são da mesma categoria?
Forma organizada por categoria
Régis Simão – Diagrama de Classes 29/42
Restrições
É um dos mecanismos de extensão da UML.
Indica uma restrição sobre um elemento da UML. Por exemplo, sobre associações onde gera a Associação OU.
Deve vir entre chaves ({,}), como {ou}.
Régis Simão – Diagrama de Classes 30/42
Restrições no relacionamento de Generalização:
Completo ou Incompleto: usado para indicar se todas as classes filhas de uma herança estão modeladas ou não.
Disjunção ou Sobreposição: usada para indicar se existem objetos de uma classe filha que também pode ser enquadrados como objeto de outra classe filha.
Restrições
Régis Simão – Diagrama de Classes 31/42
Exercício
Desenhe o diagrama de classes para o sistema de Assinatura de Revistas
Exercícios
Régis Simão – Diagrama de Classes 32/42
Interface
É uma classe que possui somente operações e relacionamentos do tipo Implementação e Dependência.
Isto é, não define atributos nem métodos.
Permite a utilização de chamadas polimórficas sem a utilização de herança.
Forma comum Forma estendida
Régis Simão – Diagrama de Classes 33/42
É um relacionamento entre uma interface e uma classe, onde a classe é obrigada a implementar os serviços definidos pela interface.
Entre interfaces, o relacionamento passa a ser a Generalização, pois a interface filha herda os serviços da interface mãe.
Relacionamento: Realização ou Implementação
Forma comum Forma estendida
Régis Simão – Diagrama de Classes 34/42
Usado quando uma classe depende de outra para realizar suas funções (comportamentos).
Representa uma dependência comportamental e não estrutural.
Na implementação, a dependência comportamental pode ocorrer através da passagem de um parâmetro ou de um objeto local de um método, do uso de objeto global ou classe abstrata, etc.
Relacionamento: Dependência
Régis Simão – Diagrama de Classes 35/42
Exemplo de uso de Dependência entre interfaces.
Relacionamento: Dependência
Régis Simão – Diagrama de Classes 36/42
Um pacote é um mecanismo de propósito geral para a organização de elementos em grupo.
Na modelagem, um pacote pode conter: classes, visões, relacionamentos, outros pacotes, etc
Em um sistema, um pacote contém um conjunto de classes e interfaces.
Pacote
Apresentacao+ frmInscricao
curso
+ Aluno+ Curso- Materia+ Pessoa
+ Professor
Controle
Régis Simão – Diagrama de Classes 37/42
O relacionamento entre pacotes é a Dependência.
Um pacote também possui o conceito de encapsulamento. Para isso, as classes também possui a informação sobre visibilidade:
Pública (+)
Classes que podem ser exportadas para outros pacotes
Privada (-)
Classes que não são exportadas
Pacote
curso
+ Aluno+ Curso- Materia+ Pessoa
+ Professor
Régis Simão – Diagrama de Classes 38/42
É um outro mecanismo de extensão da UML.
Serve para classificar os elementos (Categorizar), criando novos conceitos ou elementos não definidos na UML.
Exemplos:
Estereótipo de Relacionamento entre Casos de Uso:
Include
Extend
Estereótipo
Régis Simão – Diagrama de Classes 39/42
Exemplos:
Estereótipo de Classes
Boundary (Fronteira)
Control (Controle)
Entity (Entidade)
Estereótipo
Régis Simão – Diagrama de Classes 40/42
Exercício
Desenhe o diagrama de classes para o sistema de Vídeo Locadora
Exercícios
Régis Simão – Diagrama de Classes 41/42
FOWLER, Martin. UML Essencial. 3a. edição. Bookman, 2005.
BOOCH, Grady; RUMBAUGH, James; JACOBSON, Ivar. UML – Guia do Usuário. Campus, 2000.
Bibliografia
Régis Simão – Diagrama de Classes 42/42
FIM!!!