QUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptx
Aula 02 - UML e Padrões de Projeto
1. Especialização em Desenvolvimento Java
UML e Padrões de Projetos
Aula 02 – DIAGRAMA DE CLASSES
Prof. Vinícius de Paula - viniciusdepaula@unitri.edu.br
2. Diagrama de Classes
• Seu principal enfoque está em:
• Permitir a visualização das classes que irão compor o sistema com seus
respectivos atributos e métodos;
• Demonstrar como as classes do diagrama se relacionam,
complementam e transmitem informações entre si.
• Apresenta uma visão estática de como as classes estão
organizadas, preocupando-se em como definir a estrutura lógica das
mesmas.
UML e Padrões de Projeto Centro Universitário do Triângulo
2
3. Diagrama de Classes
• Na fase de análise, um modelo conceitual do diagrama de classes é
produzido.
• As informações que o software necessitará, em termos de classes e seus
atributos, bem como as associações entre as classes devem ser
representadas
• Já na fase de projeto, com base no modelo conceitual do diagrama
de classe é produzido o modelo de domínio.
• A solução do problema é enfocada.
• Os métodos que as classes poderão conter fazem parte de como o software
será desenvolvido e por este motivo eles devem aparecer no modelo de
domínio.
UML e Padrões de Projeto Centro Universitário do Triângulo
3
4. Atributos e Métodos
• Classes costumam ter:
• Atributos que armazenam os dados dos objetos da classe e;
• Métodos que são funções que uma instância da classe pode executar.
UML e Padrões de Projeto Centro Universitário do Triângulo
4
Nome da Classe
Atributos
Operações
Características
Comportamento
5. Visibilidade
• Marcações de acesso podem ser usadas para especificar o tipo de
acesso permitido aos atributos e métodos da classe.
+ público
# protegido
- privado
Nenhuma marcação para default
UML e Padrões de Projeto Centro Universitário do Triângulo
5
6. Relacionamentos
• Permite compartilhar informações e colaborar com a execução dos
processos do sistema.
• Descreve um vínculo que ocorre normalmente entre os objetos de uma
ou mais classes.
• Os relacionamentos são representados por linhas ligando as classes
envolvidas.
UML e Padrões de Projeto Centro Universitário do Triângulo
6
7. Tipos de Relacionamentos
• Os tipos de relacionamentos são:
• Associação
• Agregação
• Composição
• Especialização/Generalização
• Dependência
UML e Padrões de Projeto Centro Universitário do Triângulo
7
Associação
Herança
Dependência
Agregação
Composição
8. Associação Unária ou Reflexiva
• Ocorre quando existe um relacionamento de um objeto de uma
classe com objetos da mesma classe.
• No exemplo abaixo, um funcionário pode supervisionar outros
funcionários.
• O supervisor de um funcionário também é um funcionário da empresa e,
portanto, também se constitui em uma instância da classe Funcionario.
UML e Padrões de Projeto Centro Universitário do Triângulo
8
Um funcionário pode não supervisionar ninguém,
ou pode supervisionar um ou mais funcionários
9. Multiplicidade
• Procura determinar o número mínimo e máximo de objetos
envolvidos em cada extremidade da associação.
• Permite especificar o nível de dependência de um objeto para com
os outros envolvidos na associação.
UML e Padrões de Projeto Centro Universitário do Triângulo
9
1 empresa possui 1 ou mais pessoas ligadas a ela
1 pessoa está ligada a apenas 1 empresa
10. Tipos de Multiplicidade
• Não especificada
• Exatamente um
• Zero ou mais
• Muitos (mesmo que 0..*)
• Um e somente um
• Um ou mais
• Zero ou um
• Intervalo determinado
• Valores múltiplos
UML e Padrões de Projeto Centro Universitário do Triângulo
10
1
0..*
*
1..*
0..1
2..4
2, 4..6
1..1
11. Papéis
• Informações extras na associação que podem ajudar a explicar a
função de um objeto (o papel que este representa) dentro da
associação.
UML e Padrões de Projeto Centro Universitário do Triângulo
11
12. Associação Binária
• Ocorrem quando são identificados relacionamentos entre objetos de
duas classes distintas.
UML e Padrões de Projeto Centro Universitário do Triângulo
12
public class Funcionario {
private int nroMatricula;
private String nome;
private double salario;
private Dependente [] dependentes;
//métodos
}
public class Dependente {
private String nome;
private String parentesco;
//métodos
}
13. Navegabilidade
• É representada por uma seta em uma das extremidades e identifica
o sentido em que as informações são transmitidas entre os objetos
das classes envolvidas.
• No exemplo abaixo, um objeto da classe Funcionario poderá chamar
métodos da classe Dependente.
UML e Padrões de Projeto Centro Universitário do Triângulo
13
14. Agregação
• Demonstra que as informações de um objeto (objeto-todo) precisam
ser complementadas pelas informações contidas em um ou mais
objetos de outra classe (objetos-parte).
• O símbolo de agregação contém um losango na extremidade da classe
que contém os objetos-todo.
UML e Padrões de Projeto Centro Universitário do Triângulo
14Objetos da classe Pessoa são objetos-todo que precisam ter suas
informações complementadas pelos objetos da classe ContaComum,
que nesta associação são objetos-parte.
15. Agregação
• A associação de agregação pode, em muitos casos ser substituída
por uma associação binária simples.
• A função principal de uma de uma associação do tipo agregação é
identificar a obrigatoriedade de uma complementação das informações
de um objeto-todo por seus objetos-parte, quando este for consultado.
UML e Padrões de Projeto Centro Universitário do Triângulo
15
16. Composição
• É uma variação da agregação e considerada mais forte.
• O objeto-parte não pode existir sem o objeto-todo.
• Se o objeto-todo for destruído, o objeto-parte também será.
UML e Padrões de Projeto Centro Universitário do Triângulo
16
17. Composição
• É uma variação da agregação e considerada mais forte.
• O objeto-parte não pode existir sem o objeto-todo.
• Se o objeto-todo for destruído, o objeto-parte também será.
UML e Padrões de Projeto Centro Universitário do Triângulo
17
18. Generalização/Especialização
• Tem como objetivo representar a ocorrência de herança entre as
classes identificando as superclasses e subclasses.
UML e Padrões de Projeto Centro Universitário do Triângulo
18
19. Classe Associativa
• Classes produzidas quando as associações possuem a
multiplicidade muitos (*) em todas as suas extremidades.
• São necessárias nos casos em que existem atributos relacionados à
associação que não podem ser armazenados por nenhuma das classes
envolvidas.
UML e Padrões de Projeto Centro Universitário do Triângulo
19
20. Classe Associativa
• Classes produzidas quando as associações possuem a
multiplicidade muitos (*) em todas as suas extremidades.
• São necessárias nos casos em que existem atributos relacionados à
associação que não podem ser armazenados por nenhuma das classes
envolvidas.
UML e Padrões de Projeto Centro Universitário do Triângulo
20
Um ator pode atuar em muitos filmes, e um filme pode ter muitos atores atuando nele.
21. Classe Associativa
Caso um ator interpretasse dois papéis em um mesmo filme?
UML e Padrões de Projeto Centro Universitário do Triângulo
21
22. Classe Associativa
Caso um ator interpretasse dois papéis em um mesmo filme?
O uso da classe associativa não seria o mais adequado.
Poderíamos inserir uma classe normal atuando como uma classe
intermediária.
UML e Padrões de Projeto Centro Universitário do Triângulo
22
23. Classe Associativa
Caso um ator interpretasse dois papéis em um mesmo filme?
O uso da classe associativa não seria o mais adequado.
Poderíamos inserir uma classe normal atuando como uma classe
intermediária.
UML e Padrões de Projeto Centro Universitário do Triângulo
23
24. Dependência
• Identifica certo grau de dependência de uma classe em relação à
outra.
• Uma dependência difere de uma associação porque a conexão entre as
classes é temporária.
UML e Padrões de Projeto Centro Universitário do Triângulo
24
25. Dependência
• Identifica certo grau de dependência de uma classe em relação à
outra.
• Uma dependência difere de uma associação porque a conexão entre as
classes é temporária.
UML e Padrões de Projeto Centro Universitário do Triângulo
25
Funcionario não instancia um Automovel, apenas usa-o como parâmetro de um método
26. Realização
• Tipo de relacionamento especial que mistura características de
generalização e dependência.
• Usada para identificar classes responsáveis por executar funções para
outras classes.
UML e Padrões de Projeto Centro Universitário do Triângulo
26
27. Realização
• Tipo de relacionamento especial que mistura características de
generalização e dependência.
• Usada para identificar classes responsáveis por executar funções para
outras classes.
UML e Padrões de Projeto Centro Universitário do Triângulo
27
A classe Monitor implementa algum dos serviços oferecidos pela classe IMonitor.
28. Restrição
• Informações extras que definem condições a serem validadas
durante a implementação dos métodos de uma classe, das
associações entre as classes ou mesmo de seus atributos.
• Representadas por textos limitados por chaves.
UML e Padrões de Projeto Centro Universitário do Triângulo
28
29. Restrição
• Restrições podem ser aplicadas também para validar um atributo ou
método de uma classe.
UML e Padrões de Projeto Centro Universitário do Triângulo
29
30. Estereótipos
• Possibilitam certo grau de extensibilidade aos componentes ou
associações.
• Permite a identificação de componentes ou associações que, embora
semelhantes aos outros, tenham alguma característica que os
diferenciem.
• Existem 3 estereótipos predefinidos na UML bastante utilizados nos
diagramas de classes:
• <<entity>>
• <<boundary>>
• <<control>>
UML e Padrões de Projeto Centro Universitário do Triângulo
30
31. Classes Estereotipadas
• Entity: classe de entidade, geralmente implementa os objetos
persistentes.
• Boundary: classe de fronteira, geralmente interfaces gráficas.
• Control: classe de controle, geralmente implementa as regras de
negócio.
UML e Padrões de Projeto Centro Universitário do Triângulo
31
32. Estereótipo <<entity>>
• Tem por objetivo tornar explícito que uma classe é uma entidade.
• Uma entidade é uma classe contém informações recebidas e
armazenadas pelo sistema ou geradas por meio deste.
• Classes com o estereótipo <<entity>> também fornecem a
informação de que normalmente terão muitos objetos, podendo
ainda serem persistidos.
UML e Padrões de Projeto Centro Universitário do Triângulo
32
33. Estereótipo <<entity>>
• Tem por objetivo tornar explícito que uma classe é uma entidade.
• Uma entidade é uma classe contém informações recebidas e
armazenadas pelo sistema ou geradas por meio deste.
• Classes com o estereótipo <<entity>> também fornecem a
informação de que normalmente terão muitos objetos, podendo
ainda serem persistidos.
UML e Padrões de Projeto Centro Universitário do Triângulo
33
Fica explícito que a classe ContaComum é uma entidade, ela armazena informações
referentes ao problema que o sistema no qual ela está inserida procura solucionar.
34. Estereótipo Customizado
• No exemplo abaixo, definimos um novo estereótipo chamado
<<persistente>> para deixar claro que a classe tem que preservar
fisicamente suas instâncias.
UML e Padrões de Projeto Centro Universitário do Triângulo
34
35. Estereótipo <<boundary>>
• Identifica uma classe que serve de comunicação entre os atores
externos e o sistema propriamente dito.
• Muitas vezes uma classe <<boundary>> é associada à própria interface
do sistema.
• Uma classe do tipo <<boundary>> muitas vezes necessita interagir com
outra classe do tipo <<control>>
• Sua utilização é importante quando é preciso definir a existência de uma
interface para o sistema.
UML e Padrões de Projeto Centro Universitário do Triângulo
35
36. Estereótipo <<control>>
• Identifica classes que servem de intermédio entre as classes
<<boundary>> e as demais classes do sistema.
• Os objetos <<control>> são responsáveis por interpretar os eventos
ocorridos sobre os objetos <<boundary>> e retransmiti-los aos objetos
das classes de entidade que fazem parte do sistema.
UML e Padrões de Projeto Centro Universitário do Triângulo
36
37. Estereótipo <<control>>
• Identifica classes que servem de intermédio entre as classes
<<boundary>> e as demais classes do sistema.
• Os objetos <<control>> são responsáveis por interpretar os eventos
ocorridos sobre os objetos <<boundary>> e retransmiti-los aos objetos
das classes de entidade que fazem parte do sistema.
UML e Padrões de Projeto Centro Universitário do Triângulo
37
A classe InterfaceBanco representa a interface do sistema e seus objetos representam os
componentes gráficos, os eventos que ocorrem sobre tais objetos são repassados para
um objeto da classe ControladorBanco que interpretará esses eventos.
38. Boundary, Control e Entity
UML e Padrões de Projeto Centro Universitário do Triângulo
38
39. Exemplo de Diagrama de Classes
UML e Padrões de Projeto Centro Universitário do Triângulo
39
40. UML e Padrões de Projeto Centro Universitário do Triângulo
40
41. Lista de Exercícios II
UML e Padrões de Projeto Centro Universitário do Triângulo
41
UML e Padrões de Projeto - Lista de Exercícios II.pdf
45min
42. Bibliografia
• GUEDES, Gilleanes. UML Uma Abordagem Prática. Editora Novatec.
São Paulo, 2014.
• FURLAN, José. Modelagem de Objetos através da UML. Editora
Makron Books.
• BOOCH, Grady; RUMBAUGH, James; JACOBSON, Ivar. UML Guia do
Usuário. Editora Campus.
UML e Padrões de Projeto Centro Universitário do Triângulo
42
Notas do Editor
É um dos diagramas mais importantes e mais utilizados da UML.
O Diagrama de classes serve como base para a construção da maioria dos outros diagramas da linguagem UML.
É um dos diagramas mais importantes e mais utilizados da UML.
O Diagrama de classes serve como base para a construção da maioria dos outros diagramas da linguagem UML.
Métodos, também chamados operações...
- Os valores dos atributos podem variar de uma instância para outra.
- Os métodos são idênticos para todas as instâncias de uma classe específica.
Public: Uma declaração com o modificador public pode ser acessada de qualquer lugar e por qualquer entidade que possa visualizar a classe a que ela pertence.
Private: Os membros da classe definidos como não podem ser acessados ou usados por nenhuma outra classe. Esse modificador não se aplica às classes, somente para seus métodos e atributos. Esses atributos e métodos também não podem ser visualizados pelas classes herdadas.
Protected: O modificador protected torna o membro acessível às classes do mesmo pacote ou através de herança, seus membros herdados não são acessíveis a outras classes fora do pacote em que foram declarados.
Default: A classe e/ou seus membros são acessíveis somente por classes do mesmo pacote, na sua declaração não é definido nenhum tipo de modificador, sendo este identificado pelo compilador.
Se comparada ao modelo ER, seria um auto-relacionamento.
Essa associação determina se um funcionário pode ou não chefia outros funcionários.
1 instância da classe Empresa está associada a 1 ou mais instâncias de Pessoa
1 instância da classe Pessoa está relacionada a apenas 1 instância da classe Empresa
O uso de papéis pode facilitar a compreensão da associação existente, mas nem sempre é necessário, e seu uso excessivo pode deixar os diagramas visualmente muito poluídos.
Esse tipo de associação é a mais comumente encontrada.
A recíproca não é verdadeira.
Tipo especial de associação...
Este tipo de associação tenta demonstrar uma relação todo/parte entre os objetos associados.
Uma pessoa pode possuir muita contas, um conta pode ser possuída por várias pessoas (conta conjunta).
Objetos-parte podem ser compartilhados por mais de um objeto-todo.
Um vínculo mais forte entre os objetos-todo e os objetos-parte.
Um vínculo mais forte entre os objetos-todo e os objetos-parte.
Demonstra a hierarquia entre as classes e possivelmente métodos polifórmicos nas classes especializadas.
Classes com características semelhantes
Duas classes especializadas derivadas de ContaComum.
ContaEspecial: atributo limite diz respeito a quanto o cliente pode sacar além do saldo.
ContaPoupanca: contém o atributo dtAnivesario que diz respeito a data em que a conta renderá juros
Um ator pode atuar em muitos filmes, e um filme pode ter muitos atores atuando nele.
Um ator atuando em um filme terá um único papel. Um ator específico atuando em um determinado filme.
Como existe a multiplicidade em ambas as classes da associação, não há como reservar atributos para armazenar as informações decorrentes da associação em quaisquer das classes.
Um ator pode atuar em muitos filmes, e um filme pode ter muitos atores atuando nele.
Classe para armazenar os atributos transmitidos pela associação
Um ator pode atuar em muitos filmes, e um filme pode ter muitos atores atuando nele.
Classe intermediária: Apresenta, exatamente, a mesma função da classe associativa, podendo possuir seus próprios atributos.
Um ator pode atuar em um ou mais papéis em um filme.
Um ator pode atuar em um ou mais papéis em muitos filmes.
Criar objetos, recebê-los como parâmetros ou retorná-los como resultado de algum método normalmente implica em uma dependência com a classe do objeto.
Usa-o: Presente do Indicativo
Esse tipo de relacionamento herda o comportamento de uma classe, mas não sua estrutura.
Pode ser comparada à palavra implements da linguagem Java.
Esse tipo de relacionamento herda o comportamento de uma classe, mas não sua estrutura.
Pode ser comparada à palavra implements da linguagem Java.
Utilizado para diferenciar componentes semelhantes com alguma característica diferente (maior destaque no diagrama).
A linguagem permite a criação de estereótipos particulares.
Utilizado para diferenciar componentes semelhantes com alguma característica diferente (maior destaque no diagrama).
A linguagem permite a criação de estereótipos particulares.
Esse estereótipo é um estereótipo gráfico, ele modifica o desenho padrão da classe.
Um dos problemas de se utilizar este estereótipo é que ele esconde os atributos e métodos da classe, porém isto é vantajoso em diagramas grandes.
Preservar obrigatoriamente de forma física e de alguma forma suas instâncias.
Um ator pode ser qualquer elemento externo que interaja com o software.