Baixe o app para aproveitar ainda mais
Prévia do material em texto
Modelagem de Classes Prof. Humberto Torres Marques Neto Maio / 2008 PUC-MINAS Principais ObjetivosPrincipais Objetivos 9Apresentar os conceitos relacionados às9Apresentar os conceitos relacionados às disciplinas de modelagem de negócio e modelagem estrutural a partir dos requisitosmodelagem estrutural a partir dos requisitos identificados. 9Discutir e propor soluções para os principais problemas do processo de análiseproblemas do processo de análise. 9Desenvolver habilidades de uso de técnicas de9Desenvolver habilidades de uso de técnicas de análise, modelagem de negócio e modelagem estruturalestrutural. Referências Bibliográficas BásicasReferênc as B bl ográf cas Bás cas BEZERRA, Eduardo. Princípios de análise e projeto de , p p j sistemas com UML. Rio de Janeiro: Campus, 2002. BOOCH, Grady, RUMBAUGH, James, JACOBSON, Ivair. y UML: Guia do Usuário. Rio de Janeiro: Campus, 2000. COAD, Peter, YOURDON, Edward. Análise baseada em objetos. Rio de Janeiro: Campus, 1996. 225p. FOWLER, Martin, SCOTT, Kendall. UML Essencial: um breve guia para linguagem-padrão de modelagem de objetos. 2 ed. Porto Alegre: Bookman, 2000. LARMAN, Craig. Utilizando UML e padrões: uma introdução à análise e projeto orientado a objetos. 2 ed. Porto Alegre: Bookman, 2004. Algumas Definiçõesg m f ç 9Domínio do problemaDomínio do problema – “Um campo de atividades sob estudo ou consideração” (COAD e YOURDON, 1996. p. 7)ç ( , p ) 9Complexidade do domínio do problema – “... a software development project alters the rules of the problem.” (BOOCH, 1994. p. 5) 9Responsabilidade do sistema – “Uma organização de elementos relacionados deUma organização de elementos relacionados de modo a formar um todo.” (COAD e YOURDON, 1996. p. 8) O que é um Objeto? q m j – “Uma abstração de alguma coisa em um domínio de problemas, exprimindo as capacidades de um sistema de manter informaçõesexprimindo as capacidades de um sistema de manter informações sobre ela, interagir com ela, ou ambos; um encapsulamento de valores de Atributos e de seus Serviços exclusivos. (sinônimo: Ocorrência) ” (COAD e YOURDON 1996 p 50)Ocorrência). (COAD e YOURDON, 1996. p. 50) – “... an object represents an individual, identifiable item, unit, or entity, either real or abstract, with a well-definied role in the problem (S OC OOC )domain.” (SMITH and TOCKEY, apud BOOCH,1994. p. 82) – “An object has state, behavior, and identity; the structure and behavior of similar objects are defined in their common class; the j ; terms instance and object are interchageable” (BOOCH, 1994. p. 83) – “Um objeto é qualquer coisa, real ou abstrata, a respeito da qual armazenamos dados e os métodos que os manipulam ” (MARTIN earmazenamos dados e os métodos que os manipulam. (MARTIN e ODELL, 1995. p. 18) – “Um objeto é simplesmente alguma coisa que faz sentido no contexto de uma aplicação.” (RUMBAUGH et. al. p. 31) O que é uma Classe de Objetos? q m j – “Uma descrição de um ou mais Objetos com um conjunto uniforme de Atributos e Serviços incluindo uma descrição deuniforme de Atributos e Serviços, incluindo uma descrição de como criar novos Objetos na Classe.” (COAD e YOURDON, 1996. p. 50) “A class is a set of objects that share a common structure and a– A class is a set of objects that share a common structure and a common behavior” (BOOCH, 1994. p. 103) – “Uma classe é uma implementação de um tipo de objeto. Ela especifica uma estrutura de dados e os métodos operacionaisespecifica uma estrutura de dados e os métodos operacionais permissíveis que se aplicam a cada um de seus objetos.” (MARTIN e ODELL, 1995. p. 26) “Uma classe de objetos descreve um grupo de objetos com– “Uma classe de objetos descreve um grupo de objetos com propriedades semelhantes (atributos), o mesmo comportamento (operações), os mesmos relacionamentos com outros objetos e a mesma semântica ” (RUMBAUGH et. al. p. 32)( p ) – “Uma classe é uma descrição de um conjunto de objetos que compartilham os mesmos atributos, operações, relacionamentos e semântica” (BOOCH et al., 2000 p. 49)relacionamentos e semântica (BOOCH et al., 2000 p. 49) Diagrama de Classes da UML g (BOOCH et al, 2000) 9Um diagrama de classes é um diagrama que mostra um conjunto de classes, interfaces e ost a u co ju to de c asses, te aces e colaborações e seus relacionamentos. 9São utilizados para fazer a modelagem da visão estática de um sistema. 9Oferece suporte para os requisitos funcionais de um sistemade um sistema. Abstrações do Modelo de ClassesAbstrações do Modelo de Classes 9 O d l d l d d í i t9 O modelo de classes de domínio representa as classes no domínio do negócio em questão. Não leva em consideração restrições inerentes à tecnologia aem consideração restrições inerentes à tecnologia a ser utilizada na solução de um problema. 9 O d l d l d ifi ã é btid9 O modelo de classes de especificação é obtido através da adição de detalhes ao modelo anterior conforme a solução de software escolhidaconforme a solução de software escolhida. 9 O modelo de classes de implementação d à i l t ã d lcorresponde à implementação das classes em alguma linguagem de programação. Transparência retirada de (BEZERRA, 2002) Identificação de Classes (Como procurar?)n f açã a ( m pr urar?) 9 Identificação de conceitos relacionados ao9 Identificação de conceitos relacionados ao domínio do problema. 9A partir do detalhamento dos casos de uso (identificação de substantivos e estruturas b t ti )substantivas). – Vantagem: simplicidadesimplicidade D t d d d lid d dd d d lid d d– Desvantagem: depende da qualidade do depende da qualidade do detalhamentodetalhamento 9Definição das responsabilidades das classes. Identificação de Classes (O que procurar?)n f açã a ( qu pr urar?) 9 Lista de Categorias de Classes Conceituais g (LARMAN, 2004) – Objetos físicos ou tangíveis (Registro, Aeronave)j g ( g , ) – Especificações, projetos ou descrição de coisas (Especificação de Produto, Descrição de Vôo) – Lugares (Loja, Aeroporto) – Transações (Venda, Pagamento, Reserva) – Linhas de itens de transações (Linha de Item de Venda) – Papéis desempenhados por pessoas (Caixa, Piloto)p p p p ( ) – Contêineres de outras coisas (Loja, Armário, Aeronave) – Coisas de um contêiner (Item, Passageiro)( , g ) Identificação de Classes (O que procurar?)n f açã a ( qu pr urar?) 9 Lista de Categorias de Classes Conceituais (LARMAN, 2004) – Outros sistemas (Sistema de Autorização de P t C t l d T áf Aé B b dPagamento, Controle de Tráfego Aéreo, Bomba de Combustível) – Substantivos abstratos (Fome Acrofobia)Substantivos abstratos (Fome, Acrofobia) – Organizações (Departamento de Vendas, Objeto Linha Aérea) – Eventos (Venda, Pagamento, Reunião, Vôo, Acidente, Aterrissagem) P (V d d P d t R d– Processos (Vendendo um Produto, Reservando um Assento) Regras e políticas (Política de Reembolsos Política de– Regras e políticas (Política de Reembolsos, Política de Cancelamentos) Identificação de Classes (O que procurar?)n f açã a ( qu pr urar?) 9 Lista de Categorias de Classes Conceituais g (LARMAN, 2004) – Catálogos (Catálogo de Produtos, Catálogo de Peças)g ( g , g ç ) – Registro financeiros, trabalhistas, de contratos, de assuntos legais (Recibo, Diário de Caixa, Contrato de Emprego, Diário de Manutenção) – Serviços e instrumentos financeiros (Linha de Crédito, Ações) – Manuais, documentos, artigos de referência (Lista Diária d M d d P M l d C t )de Mudança de Preços, Manual de Consertos) Identificação de classes Identificação de classes 9Um software construído no paradigma da orientação a objetos é composto de objetos o e tação a objetos é co posto de objetos em colaboração para realizar as tarefasdeste sistema. 9Como todo objeto pertence a uma classe, quando se fala na identificação das classes, o objetivo na verdade é saber quais objetos irão compor o sistema. Transparência retirada de (BEZERRA, 2002) Identificação de classesIdentificação de classes 9De uma forma geral, a identificação de classes se divide em duas atividades. – Primeiramente, classes candidatas são identificadas. – Depois disso, são aplicados alguns princípios para eliminar classes candidatas desnecessárias. 9 Identificar possíveis classes para um sistema não é complicado; o difícil é eliminar destenão é complicado; o difícil é eliminar deste conjunto o que não é necessário. Transparência retirada de (BEZERRA, 2002) Representação Gráficap ç f 9Uma classe é representada graficamente9Uma classe é representada graficamente como um retângulo sub-dividido em três partes distintas:p –– Nome da classeNome da classe (começa com letra maiúscula, deve estar no singular e estar coerente com o d í i d bl )domínio do problema) –– AtributosAtributos (representa alguma propriedade do item que está sendo modelado para todos ou aque está sendo modelado para todos, ou a maioria, dos objetos da classe) –– OperaçõesOperações (é uma abstração de algo que pode ser feito com um objeto da classe; pode ser um conjunto vazio) Representação Gráficap ç f <nome da classe> <atributos> <operações> ExemplosE mp Aluno PedidoCompraImóvel Matrícula Nome Endereço DataVestibular p Número DataPedido DataAtendimento Cliente Identificação Endereço Proprietário DataInícioAluguelDataVestibular ... matricular() trancarMatrícula() f () Cliente incluir() cancelar() iti () DataInícioAluguel DataFimAluguel cadastrar() alugar() fi li Al l()formar() cancelarMatrícula() alterarDados() emitir() atualizar() finalizarAluguel() ... Classe ParametrizadaClasse Parametrizada 9Uma coleção pode ser representada em um diagrama de classes através uma classe g parametrizada (template) . – É uma classe utilizada para definir outras classes.p – Possui operações ou atributos cuja definição é feita em função de um ou mais parâmetros. 9Uma coleção pode ser definida a partir de uma classe parametrizada, onde o parâmetro p , p é o tipo do elemento da coleção. Transparência retirada de (BEZERRA, 2002) Notação para uma Classe ParametrizadaNotação para uma Classe Parametrizada 9Há duas notações possíveis na UML para uma classe parametrizada. 9Exemplo: classe parametrizada Lista: Transparência retirada de (BEZERRA, 2002) Relacionamentos 9 “... há um número muito pequeno de classes que trabalham sozinhas. Em vez disso, a maioria das classes colaboram com outras de várias maneiras.” (BOOCH et al 2000 p 60)(BOOCH et al., 2000 p. 60) 9 “Um relacionamento pe uma conexão entre itens. Em uma modelagem orientada a objetos os trêsEm uma modelagem orientada a objetos, os três relacionamentos mais importantes são as dependências, as generalizações e as associações. Um relacionamento é representado graficamente como um caminho, com tipos diferentes de linhas para diferenciar os tipos dediferentes de linhas para diferenciar os tipos de relacionamentos.” (BOOCH et al., 2000 p. 62) Dependência 9 “Uma dependência é um relacionamento de utilização, d t i d difi õ ifi ã ddeterminando as modificações na especificação de um item, (...) mas não necessariamente o inverso.” (BOOCH et al 2000 p 62)(BOOCH et al., 2000 p. 62) 9 “... é representada graficamente como linhas tracejadas apontando o item do qual o outrotracejadas apontando o item do qual o outro depende.” (BOOCH et al., 2000 p. 62) 9 Exemplo:p AvaliaçãoAluno Identificação Data ValorTotal Professor Matrícula Nome Endereço ValorTotal NotaAluno criar() atualizarNotaAluno() Endereço DataAdmiss~/ão ... contratar() demitir() atualizarNotaAluno()demitir() atualizarDados() ... Generalização 9 “... é um relacionamento entre itens gerais (chamados superclasses ou classes-mãe) e tipos maissuperclasses ou classes mãe) e tipos mais específicos desses itens (chamados subclasses ou classes-filha)” (BOOCH et al., 2000 p. 63) 9 São chamados de relacionamentos “é um tipo deé um tipo de” 9 Os objetos da classe filha herdam propriedades da j p p mãe, principalmente, seus atributos e operações, por isso, são utilizados para representar relacionamentos de herançade herança 9 Os objetos da classe filha podem ter atributos e operações específicosoperações específicos 9 “... é representada graficamente como linhas sólidas apontando a mãe.” (BOOCH et al., 2000 p. 63)p ( , p ) Generalização (Um exemplo) Veículo Chassi Placa CódigoRenavam Marca/Modelo ... cadastrar () alterar () CarroPasseio Estilo Ônibus NúmeroPassageiros Caminhão CapacidadeCargaEstilo cadastrarEstilo() alterarEstilo() NúmeroPassageiros cadastrarNumPass() alterarNumPass() CapacidadeCarga cadastrarCapCarga() alterarCapCarga() Generalização (Herança Múltipla)Generalização (Herança Múltipla) E l t íd d BEZERRA 2002Exemplo extraído de BEZERRA, 2002 Associação 9 “... é um relacionamento estrutural que especifica objetos de um item conectados a objetos de outros itens.” (BOOCH et al., 2000 p. 63) 9Pode existir entre objetos da mesma classe 9 “ é t d fi t li h9 “... é representada graficamente como uma linha sólida conectando a mesma classe ou classes dif t ” (BOOCH t l 2000 64)diferentes.” (BOOCH et al., 2000 p. 64) 9Uma associação pode ser caracterizada por:ç p p – Nome (identifica da natureza do relacionamento) – Papelp Associação (Como encontrar?) 9 Lista de Associações Comuns (LARMAN, 2004) – A é uma parte física de B (Gaveta-Registro de um PDV, Asa-Aeronave). A é uma parte lógica de B (Linha de Item de Venda e– A é uma parte lógica de B (Linha de Item de Venda e Venda, Perna de Vôo e Rota de Vôo) – A está fisicamente contido em B (Item-Prateleira, ( , Passageiro-Aeronave) – A está logicamente contido em/sobre B (Descrição de It C tál Vô P ã d Vô )Item e Catálogo, Vôo e Programação de Vôo) – A é uma descrição de B (Descrição de Item e Item, Descrição de Vôo e Vôo)Descrição de Vôo e Vôo) – A é uma linha de item de uma transação ou relatório B (Linha de Item de Venda e Venda, Serviço de ( ç Manutenção e Registro de Manutenção) Associação (Como encontrar?) 9 Lista de Associações Comuns (LARMAN, 2004) – A é conhecido/registrado/relatado/captado por B (Venda-Registro, Reserva e Manifesto de Vôo) – A é um membro de B (Caixa-Loja, Piloto e Linha de Aérea) – A é uma subunidade organizacional de B (Departamento-Loja, Manutenção-LinhaAérea) A i B (C i R i t Pil t A )– A usa ou gerencia B (Caixa-Registro, Piloto-Aeronave) – A se comunica com B (Cliente-Caixa, Agente de Reservas e Passageiro)Reservas e Passageiro) – A está relacionado a uma transação B (Cliente- Pagamento)Pagamento) Associação (Como encontrar?) 9 Lista de Associações Comuns (LARMAN, 2004) – A é uma transação relacionada com uma outra transação B (Pagamento-Venda, Reserva- C l t )Cancelamento) – A é adjacente a B (Linha de Item de Venda e Linha de Item de Venda Cidade e Cidade)Item de Venda, Cidade e Cidade) – A é possuído por B (Registro-Loja, Avião-LinhaAérea) A é t l i d B (V d Cli t– A é um evento relacionado com B (Venda-Cliente, Venda-Loja, Partida-Vôo) Associação (Exemplo)Associação (Exemplo) E l t íd d BEZERRA 2002Exemplo extraído de BEZERRA, 2002 Associação (Outros exemplos) Veículo Multa Chassi Placa CódigoRenavam Marca/Modelo Identificador TipoMulta DataMulta LocalMulta possui Marca/Modelo ... cadastrar () alterar () LocalMulta ... incluir () cancelar() Agência ContaCorrenteg Número Endereço ... Número DataUltAtualização SaldoAtual pertence cadastrar () desativar () alterarDados() consultar() ... criar() processar() ... Associação (um caso especial) 9Podem existir mais de uma associação entre duas classes Departamento Funcionário trabalhaCódigo Nome ... cadastrar () Matrícula Nome Salário ... trabalha é chefiado porcadastrar () desativar () alterarDados() consultar() contratar() demitir() ... p Multiplicidade da Associação 9Determina a quantidade de objetos de uma classe que pode estar relacionada com objetos da outra classe da associação e vice-versa Departamento Código Nome Funcionário Matrícula Nome trabalha1 1..* Nome ... cadastrar () desativar () lt D d () Nome Salário ... contratar() d iti () é chefiado por0..1 1 alterarDados() consultar() demitir() ... Indicadores de Multiplicidade <nome da classe> <nome da classe><nome da classe> <atributos> <operações> 1 Exatamente um <nome da classe> <atributos> <operações> 1..* Um ou muitos <nome da classe> * Muitos <nome da classe> 0..1 Zero<atributos> <operações> Muitos <atributos> <operações> Zero Ou um <nome da classe> <atributos> 0..* Zero ou muitos <nome da classe> <atributos> 2..6 Intervalo específico <operações> muitos <operações> específico Associação (Exemplos) Veículo Multa Chassi Placa CódigoRenavam Marca/Modelo Identificador TipoMulta DataMulta LocalMulta possui1 0..* Marca/Modelo ... cadastrar () alterar () LocalMulta ... incluir () cancelar () Agência ContaCorrenteg Número Endereço ... Número DataUltAtualização SaldoAtual pertence1 * cadastrar () desativar () alterarDados() consultar() ... criar() processar() ... Agregação 9 “... representa um relacionamento do tipo ´tem-um´, o que significa que um objeto q g q j do todo contém os objetos das partes. A agregação, na verdade, é apenas um tipo g g ç p p especial de associação, especificada utilizando-se uma associação simples ç p com um diamante aberto na extremidade do todo ...” (BOOCH et al., 2000 p. 66)( p ) Agregação (Exemplos) Equipe Atleta Nome DataCriação Modalidade Nome Endereço DataNascimento 0..* * ... criar () desativar () ... criar () excluir () Empresa Departamentop CNPJ RazãoSocial Endereço DataFundação p Nome NomeResponsável ... 1 * DataFundação ... criar () desativar () criar() desativar() trocarResponsável() Composição 9 “... é uma forma de agregação, com propriedade bem definida e tempo de vida p p p coincidente como parte do todo. As partes sem multiplicidade fixada podem ser p p criadas após a composição, mas, uma vez criadas, vivem e morrem com ela. Essas partes também podem ser removidas explicitamente antes da morte do objeto p j composto.” (BOOCH et al., 2000 p. 147) Composição (Exemplos) Prédio Sala Endereço DataConstrução NúmeroElevadores Síndico Número Andar Área 1 * Síndico ... cadastrar () criarSala () ... ativar () desativar () Livro Capítulo Título Autores DataPublicação p Número Título Tamanho 1 * ... criar () excluir () anexarCapítulo() ... criar() excluir() Classe de Associação 9 “Uma classe de associação pode ser vistaUma classe de associação pode ser vista como uma associação que também tem propriedade de classe ou como umapropriedade de classe ou como uma classe que também tem propriedades de associação.” (BOOCH et al., 2000 p. 148)associação. (BOOCH et al., 2000 p. 148) Classe de Associação (Exemplo) Empregado Nome DataContratação Endereço Projeto Identificador Descrição DataInício* *ç Cargo ... contratar () demitir () DataTérmino ... criar () finalizar ()demitir () finalizar () EquipeProjetoEquipeProjeto Dedicação Papel Função ... criar () finalizar ()() Associações reflexivasAssociações reflexivas 9Associa objetos da mesma classe. – Cada objeto tem um papel distinto na associação.j p p ç 9A utilização de papéis é bastante importante para evitar ambigüidades na leitura dapara evitar ambigüidades na leitura da associação. 9Uma associação reflexiva não indica que um9Uma associação reflexiva não indica que um objeto se associa com ele próprio. Ao contrário indica que objetos de uma mesma– Ao contrário, indica que objetos de uma mesma classe se associam Transparência retirada de (BEZERRA, 2002) Associação reflexiva (Exemplo)Associação reflexiva (Exemplo) E l t íd d BEZERRA 2002Exemplo extraído de BEZERRA, 2002 Navegação 9 “A menos que seja especificado oA menos que seja especificado o contrário, a navegação por uma associação é bidirecional. Entretanto, emassociação é bidirecional. Entretanto, em algumas situações, você desejará limitar a navegação a uma única direção. (...)a navegação a uma única direção. (...) Para representar explicitamente a direção da navegação, você poderá incluirda navegação, você poderá incluir adornos na associação com setas apontando a direção a ser seguida.”apontando a direção a ser seguida. (BOOCH et al., 2000 p. 148) Navegação (Exemplo) Usuário Nome DataCriação DataÚltimoAcesso Senha Valor DataÚltimaAlteração ...1 * IndicadorBloqueio ... criar () bloquear () criar () validar () alterar ()bloquear () alterar ()
Compartilhar