Buscar

Modelagem de Classes em Orientação à Objetos

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 42 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 42 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 42 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Continue navegando