1 Modelagem Orientada a Objetos UML- Diagrama de Classes Prof. Antonio Felicio Netto [email protected]
11
Modelagem Orientada a Objetos
UML- Diagrama de Classes
Prof. Antonio Felicio Netto
2
Diagrama de Classes
- É o Diagrama mais utilizado na UML;
- Seu objetivo é permitir a visualização das estruturas das classes utilizadas pelo sistema;
- A sua visão permite a identificação das classes, os seus relacionamentos, os atributos e métodos que a compõem;
- O diagrama apresenta uma visão estática de como as classes são organizadas, preocupando-se em definir sua estrutura lógica;
3
Definição – O que é Classe?
- Classe é uma descrição de um conjunto de objetos que têm os mesmos atributos, operações, relacionamentos e semântica;
- Podemos dizer que uma Classe é uma abstração que define um conjunto de objetos com as mesmas características, mas com valores (atributos) distintos;
- Em outros termos, uma classe descreve os serviços providos por seus objetos e quais informações eles podem armazenar;
- Permite encapsular o estado de um objeto definindo o que e como atributos podem ser acessados;
4
Definição – O que é Objeto?
- O Objeto é uma entidade que possa ser descrita de uma realidade;
- Quando instanciamos uma classe para a memória, temos um objeto para a manipulação;
- Dentro da terminologia das linguagens de programação, um objeto passa a existir a partir de um "molde". Este "molde", definido como classe do objeto, define os limites, seus atributos e suas funções. Podem ser criados vários objetos ou instâncias de uma classe;
5
Representação gráfica de uma Classe
- É divida em três seções:
DVD
Atributos
Operações
HoraStatus estrutura
comportamento
Voltar()Pausar()Recuar()Adiantar()Parar()Tocar()
Nome da Classe
6
Nome de uma Classe
- O nome da classe é muito importante para identificar um recurso do modelo. Deve ser claro, descrever o tipo de objeto representado e na linguagem mais fácil possível;
- Deve corresponder ao padrão adotado na empresa: espaços viram “_” ou sem espaço?
- O nome da classe será usado para a programação;
- O nome da Classe deve ser único no pacote;
7
Atributos de uma Classe
- Definem as características que os objetos possuem;
- Podem definir características de si mesmo, mostrar consciência das suas relações e pode controlar uma certa informação;
- Cada objeto de uma classe possui um estado, representado pelos valores associados a cada um dos atributos definidos para a classe;
8
- Atributos: Notação[visibilidade] [/] nome [:tipo] [multiplicidade] [=padrão] [{Propriedades}]
Exemplo:- nome[1]: String = sem inicial,{Obrigatório, 1..30
caracteres, espaços e pontuação permitidos}
Derivação
Notação dos atributos de uma Classe
9
- Atributos: Notação[visibilidade] [/] nome [:tipo] [multiplicidade] [=padrão] [{Propriedades}]
- Define o escopo de acesso para um membro de uma classe. - Privado: na classe; (-)- Pacote: dentro do mesmo pacote (~)- Público: dentro de um sistema (+)- Protegido: dentro de uma árvore de herança. (#)
Notação dos atributos de uma Classe
10
- Atributos: Notação[visibilidade] [/] nome [:tipo] [multiplicidade] [=padrão] [{Propriedades}]
Sistema
Classe A Classe B
Pacote 1
Classe C Classe D
Pacote 2 <<herança>>
Privado:O atributo privado só é acessível pelas operações do objeto. Normalmente este é oestado inicial dos atributos, depois se necessário, pode ser modificado.
Notação dos atributos de uma Classe
11
- Atributos: Notação[visibilidade] [/] nome [:tipo] [multiplicidade] [=padrão] [{Propriedades}]
Sistema
Classe A Classe B
Pacote 1
Classe C Classe D
Pacote 2 <<herança>>
Pacote:O atributo pode ser acessado por qualquer outra classe no mesmo pacote.
Notação dos atributos de uma Classe
12
- Atributos: Notação[visibilidade] [/] nome [:tipo] [multiplicidade] [=padrão] [{Propriedades}]
Sistema
Classe A Classe B
Pacote 1
Classe C Classe D
Pacote 2 <<herança>>
Público:O atributo pode ser acessado por qualquer outra classe do sistema.
Notação dos atributos de uma Classe
13
- Atributos: Notação[visibilidade] [/] nome [:tipo] [multiplicidade] [=padrão] [{Propriedades}]
Sistema
Classe A Classe B
Pacote 1
Classe C Classe D
Pacote 2 <<herança>>
Protegido:O atributo só pode ser acessado por uma classe que tenha uma relação de generalização/herança,independente do pacote.
Notação dos atributos de uma Classe
14
- Atributos: Notação[visibilidade] [/] nome [:tipo] [multiplicidade] [=padrão] [{Propriedades}]
- Derivação: indica que um valor é deduzido ou calculado na hora. Se ausente, indica um valor base.
Exemplo: Show
- nome
- dataInicial
- duracao
- /dataFinal
Notação dos atributos de uma Classe
15
- Atributos: Notação[visibilidade] [/] nome [:tipo] [multiplicidade] [=padrão] [{Propriedades}]
- Nome: é obrigatório e deve ser único dentro da classe. Seja o mais descritivo possível para evitar confusão.Exemplos: cadUsr x cadastraUsuario
Notação dos atributos de uma Classe
16
- Atributos: Notação[visibilidade] [/] nome [:tipo] [multiplicidade] [=padrão] [{Propriedades}]
- Tipo: Refere-se a qualidade de dados que serão tratados no atributo.- Podem ser padrão UML: (integer ou String)- Enumeração: booleano;- Algum padrão de linguagem: float, long, short,...- Ou até uma referência para outra classe.
Notação dos atributos de uma Classe
17
- Atributos: Notação[visibilidade] [/] nome [:tipo] [multiplicidade] [=padrão] [{Propriedades}]
Nome Simbologia
Apenas um 1
Zero ou muitos 0..*
Um ou muitos 1..*
Zero ou um 0..1
Intervalo específico li..lf (ex. 2..8)
Notação dos atributos de uma Classe
18
- Atributos: Notação[visibilidade] [/] nome [:tipo] [multiplicidade] [=padrão][{Propriedades}]
- Padrão: refere-se ao valor inicial de um atributo, para proteger sua integridade ou facilitar preenchimento.
Show
- nome
- dataInicial
- duracao
- /dataFinal = dataInicial+duracao
Notação dos atributos de uma Classe
19
Nome Simbologia
Apenas um 1
Zero ou muitos 0..*
Um ou muitos 1..*
Zero ou um 0..1
Intervalo específico li..lf (ex. 2..8)
Estereótipos de multiplicidade
20
• Atributos: Notação[visibilidade] [/] nome [:tipo] [multiplicidade] [=padrão] [{Propriedades}]
-Propriedades: serve para inserir qualquer informação que não é pertinente a nenhuma das seções anteriores. Normalmente são usadas para delimitar regras de integridade e são separados por vírgulas.
Ex.• Multiplicidade
Show
- nome[1]: String =sem inicial, {Obrigatório, 1..30 caracteres}
- dataInicial[1]: Calendário= sem inicial { Obrigatório, >hoje}
- duracao[1]: Int= 1 { >0}
- /dataFinal: Calendário= dataInicial+duracao
Notação dos atributos de uma Classe
21
Relacionamentos de uma Classe
- AssociaçãoAgregaçãoComposição
-Dependência
-Generalização
-Realização
22
Relacionamentos de uma Classe - Associação
- Modela a conexão semântica entre classes;
Professor
Professor Universidade
Universidade
Trabalha para
Associação
Nome da associação
Classe
Empregado Empregador
Papéis
23
Associação do tipo Agregação
- Representa relacionamentos todo-parte , onde objetos compostos por outros objetos são modelados como estando associados com suas partes;
- Ela é transitiva: Se A faz parte de B, e B faz parte de C, então A faz parte de C;
- Ela é não simétrica: Se A faz parte de B, então B não faz parte de A;
DisciplinaEstudante
Todo ParteAgregação
24
Associação do tipo Composição
- Uma forma de agregação com uma relação de posse forte, isto é, as partes não vivem sem o todo;
- Quando o todo é criado, as suas partes com multiplicidade nãofixa podem ser criadas posteriormente;
- Quando o todo é eliminado, as suas partes também devem sereliminadas;
DepartamentoEmpresa
Todo ParteComposição
26
Multiplicidade da Associação
- Multiplicidade define quantos objetos participam do relacionamento;
-O número de instâncias de uma classe relacionada a uma instância de outra classe;
- Especificado em cada uma das pontas da associação;
27
Multiciplidade da Associação
- Não especificada- Exatamente um- Zero ou mais- Muitos (mesmo que 0..*)- Um ou mais- Zero ou um- Intervalo determinado- Valores múltiplos
1
0..*
*
1..*
0..1
2..4
2, 4..6
28
Exercícios de Associação
- Modele as seguintes associações:
1 - Dependente e Funcionário?2 - Pedido e Item do pedido?3 - Funcionário e Cartão de ponto?4 – Veículo de passeio: Carro, Roda, Direção e Carburador?
29
Relacionamento por dependência
- Uma dependência entre dois elementos indica que mudança em um elemento pode causar mudanças no outro;
- Relacionamento não estrutural (uso) é mais fraco que associação;
- É um relacionamento que determina que uma mudança na especificação de uma classe pode afetar uma outra classe, mas não necessariamente o contrário;
- Os relacionamentos de dependência podem tratar parâmetros de entrada de métodos, tipos de retorno, exceções lançadas, etc
+defineAlarm(in t : Temperature)
TemperatureSensor Temperature
30
Relacionamento de Generalização
- Relacionamento entre classes onde uma classe compartilha a estrutura (atributos e relacionamentos) e comportamento (operações) de outras classes;- Relacionamento “é um tipo de”;
- Classes podem ser organizadas em uma hierarquia onde uma classe (superclasse) é uma generalização de uma ou mais classes (subclasses);
- Uma subclasse herda os atributos e operações da superclasse e pode adicionar novos métodos;
- Generalização em UML é implementada como herança nas OOP ;
31
Relacionamento de Generalização
- Uma classe herda os métodos e atributos de uma outra;
Círculoraiocentro
desenhar()
Retânguloverticesdesenhar()diagonal()
Figuracorlargura da linhadesenhar()selecionar()
Subclasses
Superclasse(pai)
Relacionamentode Generalização
32
Herança Múltipla
- Classes herdando de mais de uma classe;
Mamífero AnimalVoador
Herançamúltipla
Cachorro Gato Morcego Passarinho Gaviao
33
Processo de Generalização
- Identificar classes com propriedades semelhantes;
-Definir uma nova classe com as propriedades comuns;
- As classes originais tornam-se subclasses da nova classe e herdam as propriedades desta;
- As associações em comum passam para a superclasse e asoutras continuam nas subclasses;
34
Processo de Especialização
- Definir uma ou mais subclasses a partir de uma classe existente;
- Adicionar propriedades e associações específicas de cada nova subclasse;
- Associações comuns ficam ligadas à superclasse;
- Pode existir mais de um tipo de especialização com base emdiferentes características;- Cada hierarquia de generalização/especialização deve abrangeruma única característica.
35
Relacionamento de Realização
- É um tipo de relacionamento especial que mistura características dos relacionamentos de generalização e dependência;
- É utilizado para identificar classes responsáveis por executar funções de interfaces;
- Este tipo de relacionamento herda o comportamento de uma classe, mas não sua estrutura;
Placa_mae
<interface>imonitor
Monitor
<realize>
36
Exercício
- Dada as classes abaixo identificada realize um processo de Generalização e especialização;
38
Estudo de caso
- A equipe deverá se reunir e definir o diagrama de classes do tema sorteado para o grupo;
- A apresentação será realizada no próximo encontro, dia 28/04/2012 as 8:00;
- Alguns requisitos que deverão ser contemplados:
1. Identificação das multiplicidades, dependência, realizações e generalizações;
2. O documento deve conter no mínimo 10 classes contendo os conceitos de herança, associação por composição e associação por agregação;
39
Diagramas da UML
- Diagrama de Casos de Uso;
- Diagrama de Classes;
- Diagrama de Objetos;
- Diagrama de Seqüência;
- Diagrama de Máquina de Estados;
- Diagrama de Colaborações;
- Diagrama de Comunicação;
- Diagrama de Atividade;
- Diagrama de Pacotes;
- Diagrama de Implantação;
- Diagrama de Tempo;
40
Diagramas de Objetos
- É uma variação do diagrama de classes;
- Em vez de classes, são representadas instâncias e ligações entre instâncias- A finalidade é descrever um conjunto de objetos e seus relacionamentos em um ponto no tempo;
-Contém objetos e vínculos e são usados para fazer a modelagem da visão de projeto (prototipação);
41
Diagramas de Objetos
-Exibe o conjunto de objetos e seus relacionamentos;
-Representa retratos estáticos de instâncias de itens encontrados em diagramas de classes;
: Professor
antonio :Professor
antonioApenas o nome daclasse
Apenas o nome doobjeto
Nome da classe e doobjeto
42
Diagramas de Objetos
Circuloraiocentroxcentroy
desenhar()
Retanguloverticesdesenhar()diagonal()
FiguracorLargura_linhadesenhar()selecionar()
r1:Retangulo:cor = #FAF0E6 :largura_linha = 1.4raio = 200centrox = 20Centroy = 30
desenhar()
43
Diagramas da UML
- Diagrama de Casos de Uso;
- Diagrama de Classes;
- Diagrama de Objetos;
- Diagrama de Seqüência;
- Diagrama de Máquina de Estados;
- Diagrama de Colaborações;
- Diagrama de Comunicação;
- Diagrama de Atividade;
- Diagrama de Pacotes;
- Diagrama de Implantação;
- Diagrama de Tempo;