Diagrama de Classes. Viviane Torres da Silva

Documentos relacionados
Diagrama de Classes. Leonardo Gresta Paulino Murta

Diagrama de Classes. Viviane Torres da Silva

Casos de Uso. Viviane Torres da Silva

PROGRAMAÇÃO ORIENTADA A

Diagrama de Seqüência

Modelo Conceitual. Análise e Projeto de Sistemas Avançados. Aula 5. Allan Rodrigo Leite

Diagrama de Classes. Régis Patrick Silva Simão. Régis Simão Diagrama de Classes 1/42

Modelos de Sistemas Casos de Uso

PROGRAMAÇÃO ORIENTADA A OBJETOS I -TÉCNICAS DE OO. Prof. Angelo Augusto Frozza, M.Sc.

Diagrama de Atividades

Diagrama de Transição de Estados. Leonardo Gresta Paulino Murta

DIAGRAMAS DE CLASSE UML

Introdução. à UML. Histórico (cont.) Histórico Definição Benefícios Notação Diagrama de Classes Diagramas de Interação Conclusões Revisão

Requisitos de sistemas

Casos de Uso. Viviane Torres da Silva

Diagramas de Classes. ESII Profª. Andressa Falcade URI Santiago

UML (Linguagem Modelagem Unificada) João Paulo Q. dos Santos

Panorama da notação UML

MODELAGEM VISUAL DE OBJETOS COM UML DIAGRAMA DE CLASSES.

15/04/2013. Outro Diagrama de Classes. Primeiro Diagrama de Classes. Diagrama de Classes. Atributos. Eduardo Figueiredo

Modelagem Orientada a Objeto

ENGENHARIA DE SOFTWARE. Aula 10 Introdução ao Diagrama de Classes

Introdução à UML. Prof. Jesus José de Oliveira Neto

Modelagem Usando Orientação à Objetos (Programação Orientada a Objetos) Prof. Responsáveis Wagner Santos C. de Jesus

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE CAMPUS JOÃO CÂMARA UML UNIFIED MODELING LANGUAGE

Diagrama de Casos de Uso

Análise e Projeto de Sistemas

Diagrama de Classes. Classes. Relacionamentos. Atributos Métodos. Associação. Generalização Dependência Realização. Agregação Composição

Orientação a objetos. Objetos ou Instâncias I

Programação para Games II. Professor Ariel da Silva Dias Orientação a Objetos

Análise e projeto de sistemas

Unidade 2 Modelo Conceitual

Linguagem de Modelagem Unificada UML

POO Paradigma Orientado a Objetos. POO Paradigma Orientado a Objetos. POO Paradigma Orientado a Objetos. POO Paradigma Orientado a Objetos

Modelagem semântica permite aproximar o modelo obtido do mundo real Exemplo de modelos:

UML LINGUAGEM DE MODELAGEM UNIFICADA Diagrama de Classes

1 Introdução. 1.1 Teoria dos Sistemas 23/4/2010

Análise de Sistemas 4º Bimestre (material 3)

BANCO DE DADOS I. Prof. Luiz Antônio Vivacqua C. Meyer

Modelagem Conceitual e o Modelo Entidade-Relacionamento

AULA 02. OBJETIVO: Características da Linguagem Orientada a Objetos.

Casos de Uso. Viviane Torres da Silva

Modelagem de Processos

UML. Adriano J. Holanda 21/3/

UML Relacionamentos. Relacionamento é uma conexão entre itens A maioria dos itens relacionam-se entre si. Quatro tipos de relacionamentos:

Especificação de Sistemas de Software e a UML

MER e DER Entidades Relacionamentos Atributos Ferramentas CASE Exemplos de DERs Exemplo de Minimundo. Banco de Dados. Aula 1.

Lista Diagrama de Casos de Uso

Modelagem de Casos de Uso (Parte 1)

Engenharia de Software Orientada a objetos. Prof. Rogério Celestino dos Santos

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 15 PROFª BRUNO CALEGARO

UML - Diagrama de Classes

Análise de Sistemas 3º Bimestre (material 2)

Análise e Projeto Orientados a Objetos

Projeto Integrador II. Princípios de Análise e Projeto de Sistemas com UML (livro de Eduardo Bezerra)

Introdução a UML e seus diagramas

Programação Orientada a Objetos Introdução a POO

Engenharia de Software II e III - Introdução ao Diagrama de Classe

Aula 5 POO 1 Encapsulamento. Profa. Elaine Faria UFU

Programação Orientada a Objetos Relacionamentos entre classes

UML. Diagrama de Classe

Capítulo 5 Modelação do Sistema 1

Análise Estruturada. Modelagem de Software Prof. Flávio de Oliveira Silva, Ph.D.

Notas de Aula 03: Introdução a Orientação a Objetos e a UML

UML (Unified Modelling Language)

Engenharia de Software. UML Unified Modeling Language

Introdução Diagrama de Classes Diagrama de Seqüência Diagrama de Atividades. Diagramas UML. Classe, Seqüência e Atividades. Marcio E. F.

Análise Orientada a Objetos. Análise Orientada a Objetos; O Paradigma de Objetos; A UML.

Diagrama de Transição de Estados

UML. Diagrama de Classes

Retrospectiva (Aula 2) O Modelo Entidade-Relacionamento. O Modelo Entidade- Relacionamento. O Modelo Entidade- Relacionamento

Sumário. Uma visão mais clara da UML

Projeto Banco de Dados

Transcrição:

Diagrama de Classes Viviane Torres da Silva viviane.silva@ic.uff.br http://www.ic.uff.br/~viviane.silva/es1

O que é? Diagrama mais utilizado da UML Representa os tipos (classes) de objetos de um sistema Propriedades desses tipos Funcionalidades providas por esses tipos Relacionamentos entre esses tipos Pode ser mapeado diretamente para uma linguagem orientada a objetos Ajuda no processo transitório dos requisitos para o código Pode representar visualmente o código do sistema

Idéia geral Caixas representando as classes Linhas representando os relacionamentos

Classes As classes são representadas por caixas contendo Nome (obrigatório) Lista de atributos Lista de operações Pedido Pedido -data: Date -numero: int -valor: Money +finaliza() Nome Atributos Operações

Propriedades Classes são descritas via suas propriedades Primitivas: representadas como atributos Compostas: representadas como associações para outras classes Quando transformadas para código, as propriedades se tornam sempre campos da classe Atributos Cliente -nome: String -endereco: String Pedido -data: Date -numero: int -valor: Money Associações

Atributos Visibilidade Nome Tipo Multiplicidade Valor padrão - endereco : String[1] = Sem Endereço

Atributos: Visibilidade Privado (-) Somente a própria classe pode manipular o atributo Indicado na maioria dos casos Pacote (~) Qualquer classe do mesmo pacote pode manipular o atributo Protegido (#) Qualquer subclasse pode manipular o atributo Publico (+) Qualquer classe do sistema pode manipular o atributo - endereco : String

Atributos: Nome e tipo O nome do atributo corresponde ao nome que seráutilizado no código fonte É aceitável utilizar nomes com espaço e acentos na fase de análise O tipo do atributo corresponde ao tipo que seráutilizado no código fonte Tipos primitivos da linguagem Classes de apoio da linguagem (String, Date, Money, etc.) - endereco : String

Atributos: Multiplicidade Representa o número de elementos de uma propriedade Estrutura X..Y onde Opcional ao lado de *: X = 0 Mandatório: X = 1 Somente um valor: Y = 1 Multivalorado: Y > 1 Valores clássicos 0..1 1 (equivalente a 1..1 default) *(equivalente a 0..*) 1..* - endereco : String[0..3]

Associação Utilizada para relacionar duas classes Sóas classes que estão relacionadas são as classes cujos objetos podem se comunicar Identifica o papel das classes na associação Empregado gerente 0..1 subordinado 1..* 0..*

Atributos de uma associação Nome Nome da associação Papéis Papéis das classes que estão relacionadas pela associação O papel da classe A éo nome do atributo que a classe B possui que guarda o objetivo da classe A Multiplicidades Quantidades de objetos associados a um papel Navegabilidade Indica a direção da relação entre as classes Cliente -nome: String -endereco: String -pedidosfechados 0..* Pedido -data: Date -numero: int -valor: Money +finaliza()

Operações ou métodos Operações são descritas via Visibilidade Nome Lista de parâmetros Tipo de retorno + finaliza(data : Date) : Money

Operações: Visibilidade Valem as mesmas regras de visibilidade de atributos Privado (-) Funcionalidades de apoio à própria classe Pacote (~) Funcionalidades de apoio a outras classes do pacote (ex. construção de um componente) Protegido (#) Funcionalidades que precisam ser estendidas por outras classes (ex. construção de um framework) Publico (+) Funcionalidades visíveis por todas as classes do sistema + finaliza(data : Date) : Money

Operações: Nome e tipo de retorno Valem as mesmas regras já vistas para atributos... Normalmente o nome de uma operação éformado por um verbo (opcionalmente seguido de substantivo) A ausência de um tipo de retorno indica que a operação não retorna nada (i.e., void) + finaliza(data : Date) : Money

Operações: Lista de parâmetros A lista de parâmetros pode ser composta por zero ou mais parâmetros separados por vírgula Parâmetro: [direção] nome : tipo [= valor padrão] Nome Tipo Primitivo Classe Valor padrão (opcional) + finaliza(data : Date) : Money

Análise x Design Em análisenãose atenha aos detalhes mas em designsim Visibilidade Navegabilidade Tipo Visibilidade pública em propriedades Assume campo privado e métodos de acesso (gete set) Operações Somente as responsabilidades obvias das classes

Exercício Uma loja que vende roupas possui um sistema capaz de controlar a venda e o estoque. Cada roupa possui um código de barras, um tamanho e o número de exemplares que a loja possui daquela roupa. Os clientes da loja são cadastrados pelo nome Faça um diagrama de classe que modele um sistema capaz de respondendo as perguntas abaixo: Quais foram as roupas compradas por um cliente? Quais são os cliente que já compraram uma determinada roupa? Quantos exemplares possuem de uma determinada roupa?

Palavras-chave, propriedades e restrições Apóiam a linguagem gráfica com informações textuais Permitem dar mais semântica aos elementos do modelo Notação de palavra-chave (estereotipos) Textual: <<palavra>> (ex.: <<interface>>) Icônica: imagem representando a palavra-chave Notação de propriedades e restrições {propriedade} (ex.:{readonly}) só operação de leitura {nome = valor} (ex.:{versão = 1.0} {restrição} (ex.:{mãe deve ser do sexo feminino}) +mae <<entity>> Pessoa +nome: String {readonly, versao = 1.0} +filho

Propriedades de atributos e associações Alguns exemplos... {readonly} Somente oferece operações de leitura {ordered}, {unordered} Indica se o atributo ou associação multivalorado mantém a seqüência dos itens inseridos {unique}, {nonunique} Indica se o atributo ou associação multivalorado permite repetição - endereco : String = Sem Endereço {readonly}

Outros relacionamentos entre classes Além das associações, alguns outros tipos de relacionamentos são importantes Generalização Composição Agregação Dependência Classes de associação

Generalização Visa estabelecer relações entre tipos Leitura: éum Se Gerente é um Funcionário Todas as operações e propriedades (não privadas) de Funcionário vão estar disponíveis em Gerente Toda instância de Gerente pode ser utilizada aonde se espera instâncias de Funcionário Gera o efeito de herança e polimorfismo quando mapeado para código Funcionário Gerente

Agregação Éuma associação com a semântica de contém Serve como uma relação todo-parte fraca O todo existe sem as partes As partes existem sem o todo Carro 0..5 -passageiros Pessoa

Composição Éuma associação com a semântica de écomposto de Serve como uma relação todo-parte forte As partes não existem sem o topo As partes pertencem a somente um todo A remoção do todo implica na remoção das partes Carro Peças

Dependência Deixa explícito que mudanças em uma classe podem gerar conseqüências em outra classe Exemplos: Uma classe chama métodos de outra Uma classe tem operações que retornam outra classe Uma classe tem operações que esperam como parâmetro outra classe Outros relacionamento (ex.: associação com navegação) implicitamente determinam dependência A B Leitura: classe A depende da classe B

Classes de associação Permitem a adição de informações em uma associação Devem ser transformadas em classes comuns posteriormente para viabilizar implementação Cliente -nome: String -endereco: String 0..* 0..* Loja Qual o valor total gasto por um cliente em cada loja? Cliente -nome: String -endereco: String 0..* 0..* Loja Cadastro +valortotalgasto Cliente -nome: String -endereco: String Cadastro 1 0..* +valortotalgasto 0..* 1 Loja

Propriedades e operações estáticas Propriedades que não são instanciadas nos objetos Operações que atuam somente sobre propriedades estáticas Ambos são acessados diretamente na classe Ex.: Pedido.getProximoNumero() Não é necessário um objeto para acessar a propriedade São sublinhadas no diagrama Pedido -data: Date -numero: int -valor: Money +finaliza() +getproximonumero(): int

Propriedades derivadas São propriedades que na verdade não existem como atributos ou associações Podem ser inferidas por outras propriedades da classe Éinteressante explicitar através de nota ou restrição a fórmula de derivação São marcadas com o símbolo / Período +inicio: Date +fim: Date +/duracao: int duração = fim - início

Classes e operações abstratas Classes que não podem ter instâncias Usualmente têm operações abstratas, ou seja, sem implementação Suas subclasses usualmente são concretas Implementam métodos com comportamentos específicos para as operações abstratas Utilizam nome em itálico Animal +fala()

Interfaces Uma classe sem nenhuma implementação Todas operações são abstratas Faz uso da palavra-chave <<interface>> Pode ser representado também como um ícone O relacionamento de realização indica as classes que implementam a interface Equivalente a generalização <<interface>> List +get(position:int)() <<interface>> List +get(position:int)() ArrayList ArrayList ArrayList List +get(position:int)()

Pacotes Em algumas situações se deseja ter uma visão geral das partes do sistema Para isso, o diagrama de pacoteséa ferramenta indicada Pacotes agregam classes e outros pacotes Dependências podem ser inferidas indiretamente Exemplo Classe C1 pertence ao pacote P1 Classe C2 pertence ao pacote P2 Classe C1 depende da classe C2 Logo, pacote P1 depende do pacote P2

Pacotes <<interface>> policies::archtracepolicy +getdescription(): String +getrationale(): String herança <<interface>> policies::posttracepolicy +execute(trace: Trace, action: byte) <<interface>> policies::pretracepolicy +execute(trace: Trace, action: byte) policies builtin::denyimmutableaetracepolicy +execute(trace: Trace, action: byte) +getdescription(): String +getrationale(): String <<import>> builtin::removeancestrytracespolicy +execute(trace: Trace, action: byte) +getdescription(): String +getrationale(): String builtin::denyremovalfrombranch +execute(trace: Trace, action: byte) +getdescription(): String +getrationale(): String builtin

Dicas Inicie com um diagrama simples O que normalmente tem em todo diagrama Classes Atributos Operações Associações Use os demais recursos da linguagem somente quando for realmente necessário

Dicas: Possíveis candidatos Classes Entidades externas que produzem ou consomem informações (ex.: sistema de validação do cartão de crédito) Coisas que são parte do problema e que são informações compostas (ex.: Produto) Eventos que ocorrem durante a operação do sistema (ex.: Pedido) Papeis que interagem com o sistema (ex.: Cliente) Unidades organizacionais relevantes (ex.: Rede de lojas) Lugares que fornecem o contexto do problema ou do sistema (ex.: Loja) Estruturas definidas no problema (ex.: Estoque)

Dicas: Possíveis candidatos Atributos Informação primitiva que precisa ser memorizada (ex.: Preço) Associações A classe A precisa se relacionar com a classe B para atender a operações específicas (ex.: Cliente Pedido) Operações Funcionalidades que devem ser providas por uma classe para viabilizar o uso do sistema (ex.: calculatotal em Pedido)

Exercício 1 Faça um diagrama de classes para o sistema abaixo: Em um consultório médico o médico armazena as seguintes informações sobre os seus pacientes: o nome, endereço e telefone. A cada consulta ele anota a data, um pequeno texto com a descrição da consulta e identifica os remédios prescritos. O sistema tem cadastrado uma lista de remédios pelo nome, indiçãoe posologia. A qualquer momento o médico pode alterar este cadastro de remédios. O sistema permite que o médico consulte as informações sobre as consultas anteriores de cada paciente e permite ainda que ele faça alterações nas informações sobre as consultas.

Exercício 2 Elabore um diagrama de classes para um sistema de ponto de vendas R01. O gerente deve fazer logincom um ID e senha para iniciar e finalizar o sistema; R02. O caixa (operador) deve fazer logincom um ID e senha para poder utilizar o sistema; R03. Registrar a venda em andamento os itens comprados; R04. Exibir a descrição e preço e do item registrado; R05. Calcular o total da venda corrente; R06. Tratar pagamento com dinheiro capturar a quantidade recebida e calcular o troco; R07. Tratar pagamento com cartão de crédito capturar a informação do cartão através de um leitor de cartões ou entrada manual e autorizar o pagamento utilizando o serviço de autorização de crédito (externo) via conexão por modem; R08. Tratar pagamento com cheque capturar o número da carteira de identidade por entrada manual e autorizar o pagamento utilizando o serviço de autorização de cheque (externo) via conexão por modem; R09. Reduzir as quantidades em estoque quando a venda é confirmada; R10. Registrar as vendas completadas; R11. Permitir que diversas lojas utilizem o sistema, com catálogo de produtos e preços unificado, porém estoques separados;

Exercício 3 Faça um diagrama de classes para o sistema abaixo: Um banco possui diversas agências. Cada agência éidentificada por um número e controla um conjunto de contas. Para abrir uma conta, um cliente deve fornecer seu nome e seu CPF. A conta tem seu número gerado automaticamente, levando em consideração o número da agência. O saldo mínimo inicial de uma conta édeterminado pelo banco, bem como háum limite de valor para saque. As contas correntes podem ser contas com poupança, permitindo que o cliente aplique uma certa quantia de seu saldo. O valor aplicado na poupança écorrigido por um índice de rendimento. O saldo da poupança é atualizado a cada aniversário da mesma. Uma conta também pode ser uma conta com aplicações, onde existe um valor mínimo para ser aplicado e um limite máximo a ser sacado. O rendimento das aplicações édeterminado por um índice. O sistema deve permitir a criação de contas, a consulta a dados de uma conta, e a atualização de aplicações, dado o valor do índice de correção.

Bibliografia Fowler, Martin. 2003. UML Distilled: A Brief Guide to the Standard Object Modeling Language. 3rd ed. Addison-Wesley Professional. Pressman, Roger. 2004. Software Engineering: A Practitioner's Approach. 6th ed. McGraw-Hill. Várias transparências foram produzidas pelo Prof. Leonardo Murta http://www.ic.uff.br/~leomurta Dois exercícios foram baseados nas transparências da Profa. Márcia Moraes disponíveis na Web. http://www.inf.pucrs.br/~mmoraes/alproii138/modelagem.pdf