Baixe o app para aproveitar ainda mais
Prévia do material em texto
Modelagem de Classes • Conceitos gerais de Orientação à Objetos • Identificação de Classes • Divisão de Responsabilidades e Cartões CRC • Diagrama de Classes Prof. Humberto Torres Marques Neto 114/04/2021 PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS Instituto de Ciências Exatas e Informática - Departamento de Ciência da Computação Engenharia de Software I Objetivos • Apresentar conceitos gerais de Orientação à Objetos • Apresentar técnicas de identificação de classes que suportem a entrega de um requisito de software • Desenvolver habilidades para modelagem de classes com base em responsabilidades • Desenvolver habilidades para construção do Diagrama de Classes • Desenvolver habilidades de uso de técnicas de análise, modelagem de negócio e modelagem estrutural 14/04/2021 Prof. Humberto Torres Marques Neto 2 Referências Bibliográficas • Básica: BOOCH, Grady, RUMBAUGH, James, JACOBSON, Ivar. UML: Guia do Usuário. 2 ed. Rio de Janeiro: Elsevier Campus, 2006. PRESSMAN, Roger S. Engenharia de Software: uma abordagem profissional. 8 ed. AMGH, 2016. • Complementar: COAD, Peter, YOURDON, Edward. Análise baseada em objetos. Rio de Janeiro: Campus, 1996. 225p. LARMAN, Craig. Utilizando UML e padrões: uma introdução à análise e projeto orientado a objetos. 3 ed. Porto Alegre: Bookman, 2007. 14/04/2021 Prof. Humberto Torres Marques Neto 3 Algumas Definições • Domínio do problema • “Um campo de atividades sob estudo ou consideração” (COAD e YOURDON, 1996. p. 7) • Complexidade do domínio do problema • “... a software development project alters the rules of the problem.” (BOOCH, 1994. p. 5) • Responsabilidade do sistema • “Uma organização de elementos relacionados de modo a formar um todo.” (COAD e YOURDON, 1996. p. 8) 14/04/2021 Prof. Humberto Torres Marques Neto 4 O que é um objeto? “Uma abstração de alguma coisa em um domínio de problemas, exprimindo 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) “... an object represents an individual, identifiable item, unit, or entity, either real or abstract, with a well- definied role in the problem 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 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 e ODELL, 1995. p. 18) “Um objeto é simplesmente alguma coisa que faz sentido no contexto de uma aplicação.” (RUMBAUGH et. al. p. 31) 14/04/2021 Prof. Humberto Torres Marques Neto 5 O que é uma classe de objeto? “Uma descrição de um ou mais Objetos com um conjunto uniforme 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 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 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 propriedades semelhantes (atributos), o mesmo comportamento (operações), os mesmos relacionamentos com outros objetos e a mesma semântica ” (RUMBAUGH et. al. p. 32) “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)“ 14/04/2021 Prof. Humberto Torres Marques Neto 6 Diagrama de Classes da UML (BOOCH et al., 2006) • Um diagrama de classes é um diagrama que mostra um conjunto de classes, interfaces e colaborações e seus relacionamentos. • Esses diagramas são utilizados para fazer a modelagem da visão estática de um sistema. • Oferece suporte para os requisitos funcionais de um sistema. 14/04/2021 Prof. Humberto Torres Marques Neto 7 Abstrações do Modelo de Classes • 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 a ser utilizada na solução de um problema. • O modelo de classes de especificação é obtido através da adição de detalhes ao modelo anterior conforme a solução de software escolhida. • O modelo de classes de implementação corresponde à implementação das classes em alguma linguagem de programação. 14/04/2021 Prof. Humberto Torres Marques Neto 8 Transparência retirada de (BEZERRA, 2002) Identificação de Classes (O que procurar?) • Identificação de conceitos relacionados ao domínio do problema. • A partir do detalhamento dos casos de uso (identificação de substantivos e estruturas substantivas). • Vantagem: simplicidade • Desvantagem: depende da qualidade do detalhamento • Definição das responsabilidades das classes. 14/04/2021 Prof. Humberto Torres Marques Neto 9 Identificação de Classes (Como procurar?) • Lista de Categorias de Classes Conceituais (LARMAN, 2007) • Objetos físicos ou tangíveis (Registro, Aeronave) • 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) 14/04/2021 Prof. Humberto Torres Marques Neto 10 Identificação de Classes (Como procurar?) • Lista de Categorias de Classes Conceituais (LARMAN, 2007) • Contêineres de outras coisas (Loja, Armário, Aeronave) • Coisas de um contêiner (Item, Passageiro) • Outros sistemas (Sistema de Autorização de Pagamento, Controle de Tráfego Aéreo, Bomba de Combustível) • Substantivos abstratos (Fome, Acrofobia) • Organizações (Departamento de Vendas, Objeto Linha Aérea) • Eventos (Venda, Pagamento, Reunião, Vôo, Acidente, Aterrissagem) 14/04/2021 Prof. Humberto Torres Marques Neto 11 Identificação de Classes (Como procurar?) • Lista de Categorias de Classes Conceituais (LARMAN, 2007) • Processos (Vendendo um Produto, Reservando um Assento) • Regras e políticas (Política de Reembolsos, Política de Cancelamentos) • Catálogos (Catálogo de Produtos, Catálogo de Peças) • 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 de Mudança de Preços, Manual de Consertos) 14/04/2021 Prof. Humberto Torres Marques Neto 12 Modelagem CRC (Class Responsabilities and Colaborators) • A modelagem CRC (classe-responsabilidade-colaborador) [Wir90] é uma maneira simples de identificar e organizar as classes relevantes para os requisitos do sistema ou produto. (PRESSMAN, 2016, p. 192) Um modelo CRC é um conjunto de fichas-padrão que representam classes. Os cartões são divididos em três seções. Ao longo da parte superior do cartão escrevemos o nome da classe. No corpo do cartão enumeramos as responsabilidades da classe no lado esquerdo e os colaboradores no lado direito. (Scott Ambler) 14/04/2021 Prof. Humberto Torres Marques Neto 13 Modelagem CRC (PRESSMAN, 2016, p. 192) • Responsabilidades são os atributos e as operações relevantes para a classe. Em outras palavras, responsabilidade é “qualquer coisa que a classe sabe (ou conhece) ou faz” [Amb95]. • Colaboradores são as classes necessárias para fornecer a uma classe as informações para completar uma responsabilidade. Em geral, colaboração implica em uma solicitação de informações ou uma solicitação de alguma ação. 14/04/2021 Prof. Humberto Torres Marques Neto 14 Modelagem CRC (PRESSMAN, 2016, p. 192) 14/04/2021 Prof. HumbertoTorres Marques Neto 15 Categorias de Responsabilidade (PRESSMAN, 2016, p. 192) • Classes de entidade, também denominadas classes de modelo ou do negócio, são extraídas diretamente do enunciado do problema. • Normalmente, essas classes representam coisas que vão ser armazenadas em um banco de dados e persistem por toda a duração da aplicação (a não ser que sejam explicitamente excluídas). • Classes de fronteira são usadas para criar a interface (por exemplo, tela interativa ou relatórios impressos) que o usuário vê e interage à medida que o software é usado. • ... 14/04/2021 Prof. Humberto Torres Marques Neto 16 Categorias de Responsabilidade (PRESSMAN, 2016, p. 192) • Classes de controle gerenciam uma “unidade de trabalho” do início ao fim. Isto é, as classes de controle podem ser desenvolvidas para gerenciar: a) a criação ou a atualização de objetos de entidades, b) a instanciação de objetos de fronteira à medida que forem obtendo informações dos objetos de entidades, c) comunicação complexa entre conjuntos de objetos, d) validação de dados transmitidos entre objetos ou entre o usuário e a aplicação. 14/04/2021 Prof. Humberto Torres Marques Neto 17 Categorias de Responsabilidade • Vantagens • Separação das responsabilidades • Aumento do reuso • Facilidade para mudança das classes de front-end • Facilidade para gestão das classes de back-end • Desvantagens • Explosão da quantidade de classes • Dificuldade para gestão das classes 14/04/2021 Prof. Humberto Torres Marques Neto 18 Modelo de Classe de um Caso de Uso 1. Para cada Caso de Uso, crie uma classe de controle com o nome do caso de uso • Para cada (re)ação do sistema, avalie a possibilidade de criação de uma operação (método) desta classe de controle • Crie os atributos necessários para execução das operações 2. Para cada Ator, crie as classes de fronteira utilizadas na comunicação externa do sistema (Telas, Relatórios e APIs) 3. Crie as classes de entidade que irão suportar a execução de cada operação 14/04/2021 Prof. Humberto Torres Marques Neto 19 Construção do Diagrama de Classe • Uma classe é representada graficamente como um retângulo subdividido em três partes distintas: a) Nome da classe (começa com letra maiúscula, deve estar no singular e estar coerente com o domínio do problema) b) Atributos (representa alguma propriedade do item que está sendo modelado para todos, ou a maioria, dos objetos da classe) c) Operações (é uma abstração de algo que pode ser feito com um objeto da classe; pode ser um conjunto vazio) 14/04/2021 Prof. Humberto Torres Marques Neto 20 Alguns exemplos de classes 14/04/2021 Prof. Humberto Torres Marques Neto 21 Um exemplo de Diagrama 14/04/2021 Prof. Humberto Torres Marques Neto 22 Retirado do Visual Paradigm Community Edition em 2021 Relacionamentos entre Classes (BOOCH et al., 2006, p. 64-65) • “Um relacionamento é uma conexão entre itens.” • “Na UML, os modos pelos os quais os itens podem estar conectados a outros, isto é, logicamente ou fisicamente, são modelados como relacionamentos. Na modelagem orientada a objetos, existem três tipos de relacionamentos que são os mais importantes: 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 de relacionamentos.” 14/04/2021 Prof. Humberto Torres Marques Neto 23 Exemplo de Relacionamentos entre Classes (BOOCH et al., 2006, p. 65) 14/04/2021 Prof. Humberto Torres Marques Neto 24 Dependência • “Uma dependência é um tipo de relacionamento de utilização, determinando que um item (por exemplo, a classe Janela) usa as informações e serviços de outro item (por exemplo, a classe Evento), mas, não necessariamente o inverso. A dependência é representada graficamente como linhas tracejadas apontando o item do qual o outro depende. (BOOCH et al., 2006, p. 66)” 14/04/2021 Prof. Humberto Torres Marques Neto 25 Generalização (BOOCH et al., 2006, p. 66) • “Uma generalização é um relacionamento entre itens gerais (chamados superclasses ou classes-mãe) e tipos mais específicos desses itens (chamados subclasses ou classes-filha). Muitas vezes, as generalizações são chamadas relacionamentos “é um tipo de”...” • “A filha herda as propriedades da mãe, principalmente seus atributos e operações.” • “A operação de uma filha, que tenha a mesma assinatura de uma operação da mãe, prevalecerá em relação à operação da mãe; isso é conhecido como polimorfismo.” 14/04/2021 Prof. Humberto Torres Marques Neto 26 Generalização para representar Herança • “Use as generalizações quando desejar mostrar os relacionamentos mãe/filha.” (BOOCH et al., 2006, p. 66) 14/04/2021 Prof. Humberto Torres Marques Neto 27 Um exemplo de Generalização 14/04/2021 Prof. Humberto Torres Marques Neto 28 Retirado do Visual Paradigm Community Edition em 2021 Um exemplo de Herança Múltipla 14/04/2021 Prof. Humberto Torres Marques Neto 29 Associação (BOOCH et al., 2006, p. 67-69) • “Uma associação é um relacionamento estrutural que especifica objetos de um item conectados a objetos de outro item. A partir de uma associação conectando duas classes, você é capaz de navegar do objeto de uma classe até o objeto de outra classe e vice-versa.” • “Uma associação é representada graficamente como uma linha sólida conectando a mesma classe ou classes diferentes.” • Pode ser caracterizada por: nome, papéis e multiplicidade 14/04/2021 Prof. Humberto Torres Marques Neto 30 contratante * contratado * Contrata Organização Indivíduo Papel Nome da associação Papel Direção de leitura Figura retirada de (BEZERRA, 2002) Associação (Como encontrar?) • Lista de Associações Comuns (LARMAN, 2007) • 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 Venda, Perna de Voo e Rota de Voo) • A está fisicamente contido em B (Item-Prateleira, Passageiro-Aeronave) • A está logicamente contido em/sobre B (Descrição de Item e Catálogo, Voo e Programação de Voo) • A é uma descrição de B (Descrição de Item e Item, Descrição de Voo e Voo) • 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) 14/04/2021 Prof. Humberto Torres Marques Neto 31 Associação (Como encontrar?) • Lista de Associações Comuns (LARMAN, 2007) • A é conhecido/registrado/relatado/captado por B (Venda-Registro, Reserva e Manifesto de Voo) • A é um membro de B (Caixa-Loja, Piloto e Linha de Aérea) • A é uma subunidade organizacional de B (Departamento-Loja, Manutenção- Linha-Aérea) • A usa ou gerencia B (Caixa-Registro, Piloto-Aeronave) • A se comunica com B (Cliente-Caixa, Agente de Reservas e Passageiro) • A está relacionado a uma transação B (Cliente-Pagamento) 14/04/2021 Prof. Humberto Torres Marques Neto 32 Associação (Como encontrar?) • Lista de Associações Comuns (LARMAN, 2007) • A é uma transação relacionada com uma outra transação B (Pagamento- Venda, Reserva-Cancelamento) • A é adjacente a B (Linha de Item de Venda e Linha de Item de Venda, Cidade e Cidade) • A é possuído por B (Registro-Loja, Avião-Linha-Aérea) • A é um evento relacionado com B (Venda-Cliente, Venda-Loja, Partida-Voo) 14/04/2021 Prof. Humberto Torres Marques Neto 33 Indicadores de Multiplicidade 14/04/2021 Prof. Humberto Torres Marques Neto 34 <nome da classe> <atributos> <operações> 1 Exatamente um <nome da classe> <atributos> <operações> * Muitos <nome da classe> <atributos> <operações> 0..* Zero ou muitos <nome da classe> <atributos> <operações> 1..* Um ou muitos <nome da classe> <atributos> <operações> 0..1 Zero Ou um <nome da classe> <atributos> <operações> 2..6 Intervalo específico Exemplos de Associação 14/04/2021 Prof. Humberto Torres Marques Neto 35 Mais de uma Associação entre 2 classes 14/04/2021 Prof.Humberto Torres Marques Neto 36 Agregação (BOOCH et al., 2006, p. 69-70) • “... um relacionamento “todo/parte”, no qual uma classe representa um item maior (o “todo”), formado por itens menores (as “partes”). Esse tipo de relacionamento é chamado de agregação e representa um relacionamento do tipo “tem-um”, o que significa que um objeto do todo contém os objetos das partes.” 14/04/2021 Prof. Humberto Torres Marques Neto 37 Composição (BOOCH et al., 2006, p. 149-150) • “A composição é uma forma de agregação, com propriedade bem definida e tempo de vida coincidente como parte do todo.” • “As partes sem multiplicidade fixada podem ser 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 composto.” 14/04/2021 Prof. Humberto Torres Marques Neto 38 Outro exemplo (BOOCH et al., 2006, p.75) 14/04/2021 Prof. Humberto Torres Marques Neto 39 Classe de Associação (BOOCH et al., 2006, p. 150) • “Uma classe de associação pode ser vista como uma associação que também tem propriedades de classe ou como uma classe que também tem propriedades de associação.” 14/04/2021 Prof. Humberto Torres Marques Neto 40 Associação Reflexiva • Associa objetos da mesma classe, onde cada objeto tem um papel distinto na associação. • A utilização de papéis é bastante importante para evitar ambiguidades na leitura da associação. • Uma associação reflexiva não indica que um objeto se associa com ele próprio, ou seja, indica que objetos de uma mesma classe se associam. 14/04/2021 Prof. Humberto Torres Marques Neto 41 Empregado supervisor 1 supervisionado * Supervisão Figura retirada de (BEZERRA, 2002) Navegação (BOOCH et al., 2006, p. 147) • “A menos que seja especificado o contrário, a navegação por uma associação é bidirecional.” • “Entretanto, em algumas situações, você desejará limitar a navegação a uma única direção.” • “Para representar explicitamente a direção da navegação, você poderá incluir adornos na associação com setas apontando a direção a ser seguida.” 14/04/2021 Prof. Humberto Torres Marques Neto 42
Compartilhar