Bagé, 05 de abril de 2018 Project-Based Learning TADS - 01 2018 MS Diagrama de Classes Leandro Camargo Professor EBTT www.leandrocamargo.com.br (53)984012416
As classes são representadas por retângulos incluindo: Nome; Atributos; Métodos. Devem receber nomes de acordo com o vocabulário do domínio do problema. É comum adotar um padrão para nomeá-las. Nome será substantivos; Singulares; A primeira letra maiúscula.
Class: Carro Carro Visibilidade dos Métodos e Atributos + público visível a qualquer classe e pacote # protegido visível a classes do mesmo pacote Nome da classe Atributos (características ou estado) Métodos (operações ou comportamento) - chassi: String # renavam: Long + placa: String + roda: int = 4 + cor: string Carro # getacelerar(intensidade: int) : void - getligar(): Boolean + getabrir(idporta : int) : boolean - privado: visível somente para a classe
Control Classe de controle Geralmente regras do negócio Boundary Classe de fronteira Geralmente interface gráfica Entity Classe de entidade Geralmente implementa os objetos persistentes
Classificação Classificação Classificação Classificação Solos Animais Ciência Resíduos
Nome (descrição dada ao relacionamento: -faz; -tem; -possui) Sentido da leitura Seta colocada em seguida ao nome. Ex: faz -> Navegabilidade Indicado por uma seta no fim do relacionamento Multiplicidade 0..1, 0..*, 1, 1..*, 2, 3..7 Tipo associação (agregação, composição), generalização e dependência
Relacionamento entre Classes Associação Agregação Composição Herança Generalização Especialização Dependência
Associação Composição Agregação Herança Dependência
Tipo: Associação unária ou reflexiva Empregado Multiplicidade Multiplicidade Nome Dependentes - empcpf: Long + empnome: String + empadmissão: Date + empfone: int + empsetor: int = 1 1 Têm 0..* # depcpf: Long - empcpf: String + depnome: Date + depnascimento: Date public class Empregado { private Long empcpf; public String empnome;... } Sentido de leitura Tipo: Associação binária Todo Qual o nome dependente da associação está vinculado entre as Todo o empregado possui filhos? classes a um (tem, empregado possui, ou faz, mais? etc...)
Indicadores de multiplicidade 1 Exatamente um 1..* Um ou mais 0..* Zero ou mais (muitos) * Zero ou mais (muitos) 0..1 Zero ou um m..n Faixa de valores (Ex: 4..7)
Relacionamento Agregação É utilizado para indicar a relação do todo para parte Pedido 1 1..* Item Todo Agregação Parte Todo o pedido possui um ou mais itens, embora os itens possam não estar presentes em algum pedido
Relacionamento Agregação ->Cite exemplos: 1 Todo o time é formado por atletas 2 Todo o carrinho de compras possui itens Ambos (time e carrinho) existem sem as partes?? 1 1..* Todo Agregação Todo o pedido possui um ou mais itens, embora os itens possam não estar presentes em algum pedido Parte
Relacionamento Composição É uma variante semanticamente mais forte da agregação Quando o todo deixa de existir as partes também acabam Empregado 1 0..* Dependente Todo Composição O Objeto PARTE só pode pertencer a um Objeto TODO e têm tempo de vida coincidente com o dele. Parte
Relacionamento Composição ->Cite exemplos: 1 Todo o prédio possui pavimento 2 Todo o livro é composto de capítulos?? 1 0..* Todo Composição O Objeto PARTE só pode pertencer a um Objeto TODO e têm tempo de vida coincidente com o dele. Parte
Subclasse Superclasse Pessoa - pescpf: Long + pesnome: String + pesnascimento: Date + pesfone: long + pesemail: String Relacionamento Generalização É a relação entre itens gerais (superclasses) e itens específicos (subclasses) Mas como modelar no astah uma superclasse? Empregado + empadmissão: Date + empmatrícula: int + lersalário (): long Empregado é uma Pessoa; Dependente é uma Pessoa. Dependente + depmae + empmatrícula
Relacionamento Dependência Representa que a alteração de um objeto (o objeto independente) pode afetar outro objeto (o objeto dependente). Na POO, você sempre deve tentar minimizar o máximo possível as dependências. Relatório Filtro + salvaremarquivo (filtro: Fitro): void + exportar (): void
MUITO OBRIGADO L e a n d r o C a m a r g o www.ifsul.edu.br www.leandrocamargo.com.br leandrocamargo@ifsul.edu.br (53)984012416 (53)32473237