Baixe o app para aproveitar ainda mais
Prévia do material em texto
Diagrama de Classes Modelagem de Sistemas Diagrama de Classes � Introdução – Diagrama de classes � Elementos do diagrama de classes Diagrama de Classes - Introdução Exemplo: Aluno nome: Texto matrícula: Inteiro definirNome(nome) obterNome() definirMatricula(matricula) obterMatricula Turma código: Texto sala: Texto horario: Horario estaAberta() definirProfessor(professor) incluirAluno(aluno) está-matriculado-em Professor nome: Texto titulação: Texto definirNome(nome) obterNome() definirTitulacao(titulo) obterTitulacao é-ministrada-por Diagrama de Classes - Introdução � Conjunto de objetos do mesmo tipo � Com mesmas características � Propriedades � Atributos / Relacionamentos � Comportamento � Operações (métodos) Modelo que representa as informações necessárias para realização das funcionalidades do sistema em estudo a partir do conceito de CLASSE. CLASSE Diagrama de Classes - Introdução � Alunos � Professores � Disciplinas � Matrículas � ... Em termos de objetos, o que temos numa universidade? Cada grupo de objetos tem suas características (atributos e métodos) O analista então cria CLASSES para representar esses objetos Podemos pensar uma CLASSE como um template, um molde, uma forma para gerar objetos Diagrama de Classes - Introdução � Descreve a estrutura estática de um sistema � As classes representam objetos que podem ser manipulados por esse sistema. � As classes especificam tanto as propriedades quanto o comportamentos dos objetos � Mostra um conjunto de classes, interfaces e seus relacionamentos. � É o diagrama central da modelagem orientada a objetos. Classes � Graficamente, as classes são representadas por retângulos incluindo nome, atributos e métodos. Nome_da_classe atributo1 atributo2 ... metodo1 metodo2 metodo3 ... Diagrama de Classes � Devem receber nomes de acordo com o vocabulário do domínio do problema. � É comum adotar um padrão para nomeá-las Ex: todos os nomes de classes serão substantivos singulares com a primeira letra maiúscula Aluno atributo1 atributo2 ... metodo1 metodo2 metodo3 ... Classes � Atributos Representam o conjunto de características (estado) dos objetos daquela classe � Métodos Representam o conjunto de operações (comportamento) que a classe fornece Diagrama de Classes - Elementos � As caixas do diagrama de classe são classes e estão divididas em 3 compartimentos: � Nome da classe (Obrigatório) � Atributos � Operações Diagrama de Classes – Elementos Básicos Pedido - dataPagamento : Date[0..1] # éPréPago : boolean[1] = true + itensDeLinha : itenDeLinha [*] {ordenada} - numeroPedidos : int + pagar (valor : double) - calcularTotal() : double O analista define o nível de detalhe que quer mostrar no diagrama � Formas de representação Diagrama de Classes Pedido Nome Pedido - dataPagamento : Date[0..1] # éPréPago : boolean[1] = true + itensDeLinha : itenDeLinha [*] {ordenada} - numeroPedidos : int Nome + Atributos Pedido - dataPagamento : Date[0..1] # éPréPago : boolean[1] = true + itensDeLinha : itenDeLinha [*] {ordenada} - numeroPedidos : int + pagar (valor : double) - calcularTotal() : double Nome + Atributos + Operações Pedido Nome + Operações + pagar (valor : double) - calcularTotal() : double Diagrama de Classes Pedido - dataPagamento : Date[0..1] # éPréPago : boolean[1] = true + itensDeLinha : itenDeLinha [*] {ordenada} - numeroPedidos : int + pagar (valor : double) - calcularTotal() : double Nome da operação Tipo de retornoAtributo estático Visibilidade Nome do atributo Tipo de dado Nome da classe Multiplicidade Valor por Omissão Restrição � Propriedades � Representam as características estruturais de uma classe � Grosso modo correspondem aos campos de uma classe, mas é mais que isso. � Aparecem em duas notações bastante distintas: � Atributos � Associações (Relacionamentos) Diagrama de Classes – Propriedades � Atributos Diagrama de Classes – Propriedades - A notação de atributo descreve uma propriedade como uma linha de texto dentro da caixa de classe em si. - Notação completa: visibilidade nome: tipo multiplicidade = valor-por-omissão {lista de restrições} Ex: - nome: String [1] = “Sem título” {readOnly) (continua) � Notação completa Diagrama de Classes – Atributos Visibilidade nome: tipo [multiplicidade] = valor-por-omissão{lista de restrições} Nome: corresponde ao nome do atributo Tipo: domínio do atributo Multiplicidade: indicação de quantos objetos podem preencher a propriedade [min..max] Valor por omissão : valor do atributo, caso ele seja omitido no momento da criação Lista de restrições: permite indicar propriedades adicionais. {readOnly}, {ordered}, {unique}, etc. Diagrama de Classes – Atributos Visibilidade nome: tipo [multiplicidade] = valor-por-omissão{lista de restrições} Ex: - nome: String [1] = “Sem título” {readOnly) Somente o nome é necessário - O marcador de visibilidade indica a visão do atributo por outros objetos - Nome do atributo: entenda como nome do campo usado numa LP - Tipo do atributo: indica uma restrição sobre o tipo de objeto. entenda como o tipo de um campo numa LP - Valor por omissão: valor default do objeto novo criado - Multiplicidade: define o número de vezes em que o objeto participa da associação - Lista de restrições: propriedades adicionais para o atributo (continua) Notação completa: Diagrama de Classes – Atributos - O marcador de visibilidade indica se o atributo é (+) público / (-) privado / (#) protegido / (~) Pacote Público (+): O elemento é visível por qualquer classe Protegido (#): O elemento é visível na própria classe e pelas subclasses da classe Pacote (~): O elemento é visível apenas pela própria classe ou dentro do pacote onde a classe está localizada Privado (-): O elemento é visível apenas pela própria classe Diagrama de Classes – Atributos - Multiplicidade: define o número de vezes em que o objeto participa da associação A representação de multiplicidade possui o seguinte esquema: Li ... Ls, onde: Li define o Limite inferior Ls define o Limite superior Li e Ls poderão ter valores numéricos de 0 a n e Ls poderá também ter a representação * que tem como significado infinito/muitos. 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 (por exemplo: 4..7) Pessoa Empresa 1..* associação Representação da multiplicidade *trabalha para Diagrama de Classes - Atributos Relacionamentos • Os relacionamentos possuem: – Nome: descrição dada ao relacionamento (faz, tem, possui,...) – Sentido de leitura – Navegabilidade: indicada 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 – Papéis: desempenhados por classes em um relacionamento Diagrama de Classes - Relacionamentos Pessoa Empresa 1..* Tipo: associação multiplicidade *trabalha para empregado papéis empregador sentido de leitura E a navegabilidade? nome Diagrama de Classes - Relacionamentos EndereçoCliente reside 1 * navegabilidade Diagrama de Classes - Relacionamentos O cliente sabe quais são seus endereços, mas o endereço não sabe a qual cliente pertence � Os relacionamentos entre as classes podem ser: � Associação � Generalização � Dependência Diagrama de Classes – Relacionamentos Diagrama de Classes – Relacionamentos Associação: é ligação estabelecida entre as classes, por necessidade de comportamentos do negócio analisado PAPEL: nome da associação, tornando claro no diagrama o ligação estabelecida. Associação • Uma associação é um relacionamento estrutural que indica que os objetos de uma classe estão vinculados a objetos de outra classe. • Uma associação é representada por uma linha sólida conectando duas classes. Pessoa Empresa associação Diagrama de Classes - RelacionamentosAssociação Exemplo: • Um Estudante pode ser um aluno de uma Disciplina e um jogador da Equipe de Futebol • Cada Disciplina deve ser cursada por no mínimo 1 aluno • Um aluno pode cursar de 0 até 8 disciplinas Diagrama de Classes - Relacionamentos Associação / Agregação: – É um tipo especial de associação utilizada para indicar “todo-parte” – Um objeto “parte” pode fazer parte de vários objetos “todo” ItemPedido 0..* 1..* agregação todo parte Diagrama de Classes - Relacionamentos Associação / Composição: – É uma variante semanticamente mais “forte” da agregação – Os objetos “parte” só podem pertencer a um único objeto “todo” e têm o seu tempo de vida coincidente com o dele – Quando o “todo” morre todas as suas “partes” também morrem TecladoNotebook FrameWindow 1 1 1 0..* 1..* 0..* errado Diagrama de Classes - Relacionamentos Associação / Composição: Ex: Janela Scroll Título Corpo 1 0..12 1 Empresa Departamento Escritório 1 1..*1..* Diagrama de Classes - Relacionamentos • Agregação X Composição Andar Edifício1..n MesaSala 1..n 11 1..n 1..n Diagrama de Classes - Relacionamentos Diagrama de Classes - Relacionamentos Generalização: É um relacionamento entre itens gerais (superclasses) e itens mais específicos (subclasses) “é um tipo de” superclasse subclasse Veículo Terrestre Aéreo GENERALIZAÇÃO / ESPECIALIZAÇÃO Generalização representa os vários tipos de um objeto em uma única classe. Diagrama de Classes - Relacionamentos GENERALIZAÇÃO / ESPECIALIZAÇÃO Especialização representa os vários tipos de um objeto em uma classe distinta relacionando seus próprios atributos e comportamentos. � Atributos e comportamentos comuns são relacionados na classe mãe � As sub-classes herdam atributos e Métodos da super classe Diagrama de Classes - Relacionamentos Dependência: • Representa que a alteração de um objeto (o objeto indepedendente) pode afetar outro objeto (o objeto dependente) Ex: – Obs: • A classe cliente depende de algum serviço da classe fornecedor • A mudança de estado do fornecedor afeta o objeto cliente • A classe cliente não declara nos seus atributos um objeto do tipo fornecedor • Fornecedor é recebido por parâmetro de método cliente fornecedor Diagrama de Classes - Relacionamentos Simbologia AUTO ASSOCIAÇÃO Define quando um objeto de uma classe está relacionado com outro objeto da mesma classe para atender a algum comportamento. A multiplicidade é estabelecida normalmente. Diagrama de Classes - Relacionamentos Construção do Diagrama de Classes � Na fase de análise constrói-se primeiramente um diagrama de classes sem se preocupar em definir os métodos, ao qual chamaremos de Modelo Conceitual � Na fase de projeto os métodos são adicionados e o Modelo Conceitual é refinado gerando o Diagrama de Classes Perspectiva Conceitual 1. Liste os conceitos candidatos para os casos de usos em questão usando a lista de categorias comuns e identificação textual de nomes. 2. Desenhe-os em um modelo conceitual. 3. Adicione as associações necessárias para registrar os relacionamentos para os quais é preciso preservar alguma memória 4. Adicione os atributos necessários para cumprir os requisitos de informação. Construção do Diagrama de Classes Perspectiva Conceitual � Um bom modelo conceitual deve superestimar o número de conceitos. É melhor especificar demais do que de �menos � Não exclua entidades simplesmente porque os requisitos não indicam a necessidade de guardar informações sobre eles (comum em projeto de BD) � Considere os substantivos e frases nominais nas descrições textuais do domínio do problema como possíveis candidatos a entidades ou atributos Construção do Diagrama de Classes Identificando Entidades a partir dos Casos de Uso Ação do Ator 1 - Este caso de uso começa quando um Cliente chega no caixa com itens para comprar. 2 - O Operador registra o identificador de cada item. Se há mais de um do mesmo item, o Operador também pode informar a quantidade. Resposta do Sistema 3 - Determina o preço do item e adiciona informação sobre o item à transação de venda em andamento. Mostra a descrição e o preço do item corrente. Identificando Entidades a partir dos Casos de Uso Ação do Ator 1 - Este caso de uso começa quando um Cliente chega no caixa com itens para comprar. 2 - O Operador registra o identificador de cada item. Se há mais de um do mesmo item, o Operador também pode informar a quantidade. Resposta do Sistema 3 - Determina o preço do item e adiciona informação sobre o item à transação de venda em andamento. Mostra a descrição e o preço do item corrente. DIAGRAMA DE CLASSE Passos para desenvolvimento 1º Passo – Buscar no escopo do projeto os conjuntos de objetos que tenham identificação própria. (Analisar os casos de uso de cadastro, por exemplo); 2º Passo – Analisar os atributos das classes para identificar aqueles que indicam outras classes. Esta identificação gera a associação entre as classes; 3º Passo – Buscar conjuntos de objetos inseridos no contexto do estudo que servem para controlar e acompanhar as atividades do projeto; DIAGRAMA DE CLASSE Passos para desenvolvimento 4º Passo – Relacionar atributos destas classes; 5º Passo – Criar novas classes e associações considerando as formas normais: Primeira Forma Normal: Uma relação está na primeira forma normal se todos os seus atributos são monovalorados. Segunda Forma Normal: a relação estiver na primeira forma normal; e todos os atributos primos dependerem funcionalmente de toda a chave primária. Terceira Forma Normal: a relação estiver na segunda forma normal; e todos os atributos primos dependerem não transitivamente de toda a chave primária. DIAGRAMA DE CLASSE Passos para desenvolvimento 6º Passo – Criar novas classes e associações identificando atributos que definem vários objetos da classe. 7º Passo – Definir as multiplicidades; 8º Passo – É sabido que o diagrama de classe deve dar suporte à realização dos casos de uso. Verificar se o diagrama de classe possui atributos para atender a todos os procedimentos. Se não estiver, complementar o diagrama de classe. 9º Passo – O caso de uso também deverá criar e manter as informações do diagrama de classe. Verificar se todas as classes e atributos estão sendo contemplados na realização dos casos de uso. Se não estiver, complementar o diagrama de caso de uso. Primeira forma normal: Cliente: Nome, cpf, telefone1, telefone2, ..., telefone n. (se a informação varia para o mesmo objeto deve ir para outra classe) Segunda forma normal: Pedido: número do pedido, data_pedido, código do produto, código do fornecedor, nome do fornecedor (primos dependentes da chave primária) “nome do fornecedor” está ligado a código do fornecedor e a número do pedido Terceira forma normal: Fornecedor: (cod_fornecedor, nome_fornecedor) Sobre as formas normais: Sistema de Gestão de Hotel Estacio O cadastro do hóspede (nome, procedência, endereço, contato, previsão de permanência) é realizado pelo setor de recepção que também controla a alocação de quarto/apartamento (número do quarto ou apartamento) e abertura de uma conta corrente para o hóspede (senha, número da conta, nome do hóspede). APLICAÇÃO PRÁTICA: CLASSE Sistema de Gestão de Hotel Estacio ... Ao setor de serviço de copa cabe a responsabilidade pelos lançamentos, na conta do hóspede, das despesas que o mesmo efetuar com bebidas e comidas (data, tipo da despesa e valor). A atendente de telefonia é responsável pelo lançamento, na conta do cliente, das chamadas interurbanas que o mesmo venha a fazer (data, local chamado, duração e tarifa). As chamadas locais não são computadas. O setor de lavanderia é responsável pelos lançamentos, na conta do hóspede, dos serviços que o mesmo venha a solicitar àquele setor (data, tipo de serviço, valor). APLICAÇÃO PRÁTICA: CLASSE Sistema de Gestão de Hotel Estacio... A gerência pode, a qualquer instante, ter acesso às informações de cadastro e gastos realizados pelo hospede. A gerência é responsável pelo cadastro e atualização das tabelas de serviços, menus e diárias. APLICAÇÃO PRÁTICA: CLASSE Sistema de Gestão de Hotel Estacio ... O hóspede pode a qualquer instante consultar o saldo de sua conta. O setor de recepção é responsável pela extração do extrato final da conta e fechamento da mesma quando o hóspede finaliza sua estadia. APLICAÇÃO PRÁTICA: CLASSE APLICAÇÃO PRÁTICA: CLASSE APLICAÇÃO PRÁTICA: CLASSE
Compartilhar