Diagrama de Classes. Leonardo Gresta Paulino Murta

Documentos relacionados
Diagrama de Classes. Viviane Torres da Silva

Diagrama de Classes. Viviane Torres da Silva

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

PROGRAMAÇÃO ORIENTADA A

Casos de Uso. Viviane Torres da Silva

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

Diagrama de Seqüência

DIAGRAMAS DE CLASSE UML

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

Modelos de Sistemas Casos de Uso

MODELAGEM VISUAL DE OBJETOS COM UML DIAGRAMA DE CLASSES.

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

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

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

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

Diagrama de Casos de Uso

Panorama da notação UML

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

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

Introdução a Orientação a Objetos

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

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

Orientação a Objetos. Leonardo Gresta Paulino Murta.

Programação Orientada a Objetos Relacionamentos entre classes

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

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

Requisitos de sistemas

Casos de Uso. Viviane Torres da Silva

Análise e projeto de sistemas

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

Diagrama de Atividades

Linguagem de Modelagem Unificada UML

Linguagem de Programação I Apresentação da Disciplina

Análise e Projeto de Sistemas

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

Modelagem de Casos de Uso (Parte 1)

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

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

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

Aula 5 POO 1 Encapsulamento. Profa. Elaine Faria UFU

Especificação de Sistemas de Software e a UML

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

UML LINGUAGEM DE MODELAGEM UNIFICADA Diagrama de Classes

Programação Orientada a Objetos. Professor: André Luis Meneses Silva br.geocities.com/programacao2ufs

POO Fundamentos Parte III. Professor Vicente Paulo de Camargo

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

Visibilidade e Encapsulamento

E N C A P S U L A M E N T O P R O F. M E. H É L I O E S P E R I D I Ã O

UML - Diagrama de Classes

Modelagem Orientada a Objeto

Esta categoria mais geral, à qual cada objeto pertence, denominamos de classe; IFSC/POO + JAVA - prof. Herval Daminelli

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

UML Diagrama de Atividades Diagrama de Caso de Uso. ENG1518/3VB Sistemas de Informação Gerenciais Prof. Marcos Villas

Herança e Polimorfismo

Estruturas de Repe,ção e String

Engenharia de Software. Aula 10 Representação dos Conceitos de Orientação a Objetos. Prof. Me. Rogério Ferreira

Introdução a UML e seus diagramas

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

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

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

UML. Diagrama de Classes

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

Programação Orientada a Objetos 2 Flávio de Oliveira Silva, M.Sc.

Linguagem de Programação. Diagrama de classes

Java Standard Edition (JSE)

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

Engenharia de Software II e III - Material para estudo Diagrama de Classe

POO29004 Programação Orientada a Objetos

Unidade: sobrecarga, construtores e herança

Transcrição:

Diagrama de Classes Leonardo Gresta Paulino Murta leomurta@ic.uff.br

O que é? Diagrama mais u>lizado da UML Representa os >pos (classes) de objetos de um sistema Propriedades desses >pos Funcionalidades providas por esses >pos Relacionamentos entre esses >pos 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 Leonardo Murta Diagrama de Classes 2

A 1 km de distância... Caixas representando as classes Linhas representando os relacionamentos Leonardo Murta Diagrama de Classes 3

A 1 metro de distância... 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 Leonardo Murta Diagrama de Classes 4

Propriedades Classes são descritas via suas propriedades Primi>vas: 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 Leonardo Murta Diagrama de Classes 5

A 1 cen[metro de distância... dos atributos Atributos são descritos via Visibilidade Nome Tipo Mul>plicidade Valor padrão - endereco : String[1] = Sem Endereço Leonardo Murta Diagrama de Classes 6

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 Leonardo Murta Diagrama de Classes 7

Atributos (nome e >po) O nome do atributo corresponde ao nome que será u>lizado no código fonte É aceitável u>lizar nomes com espaço e acentos na fase de análise O >po do atributo corresponde ao >po que será u>lizado no código fonte Tipos primi>vos da linguagem Classes de apoio da linguagem (String, Date, Money, etc.) - endereco : String Leonardo Murta Diagrama de Classes 8

Atributos (mul>plicidade) Representa o número de elementos de uma propriedade Estrutura X..Y onde Opcional: X = 0 Mandatório: X = 1 Somente um valor: Y = 1 Mul>valorado: Y > 1 Valores clássicos 0..1 1 (equivalente a 1..1 à default) * (equivalente a 0..*) 1..* - endereco : String[0..3] Leonardo Murta Diagrama de Classes 9

A 1 cen[metro de distância... das associações Associações Guarda as mesmas informações dos atributos U>liza uma notação gráfica Deve ser u>lizado para propriedades que são relevantes ao diagrama Determina o papel das classes na associação Determina o sen>do de navegação Cliente -nome: String -endereco: String -pedidosfechados 0..* Pedido -data: Date -numero: int -valor: Money +finaliza() subordinado Empregado 1..* 0..1 gerente Leonardo Murta Diagrama de Classes 10

A 1 cen[metro de distância... das operações Operações são descritas via Visibilidade Nome Lista de parâmetros Tipo de retorno + finaliza(data : Date) : Money Leonardo Murta Diagrama de Classes 11

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 Leonardo Murta Diagrama de Classes 12

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

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 : >po [= valor padrão] Direção (opcional) in (default) out inout Nome Tipo Primi>vo Classe Valor padrão (opcional) + finaliza(data : Date) : Money Leonardo Murta Diagrama de Classes 14

Em análise... Não se atenha aos detalhes Visibilidade Navegabilidade Tipo Visibilidade pública em propriedades Assume campo privado e métodos de acesso (get e set) Operações Somente as responsabilidades obvias das classes Leonardo Murta Diagrama de Classes 15

Exercício Traduza o seguinte diagrama em código Java Crie métodos de acesso para as propriedades da classe Cliente Cliente -nome: String -endereco: String -pedidosfechados 0..* Pedido -data: Date -numero: int -valor: Money +finaliza() Leonardo Murta Diagrama de Classes 16

Palavras-chave, propriedades e restrições Apóiam a linguagem gráfica com informações textuais Permitem dar mais semân>ca aos elementos do modelo Notação de palavra-chave Textual: <<palavra>> (ex.: <<interface>>) Icônica: imagem representando a palavra-chave Notação de propriedades e restrições {propriedade} (ex.: {readonly}) {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 Leonardo Murta Diagrama de Classes 17

Propriedades de atributos e associações Alguns exemplos... {readonly} Somente oferece operações de leitura {ordered}, {unordered} Indica se o atributo ou associação mul>valorado mantém a sequência dos itens inseridos {unique}, {nonunique} Indica se o atributo ou associação mul>valorado permite repe>ção - endereco : String = Sem Endereço {readonly} Leonardo Murta Diagrama de Classes 18

Propriedades de operações {query} Não modifica o estado do sistema após a execução {sequen>al} A instância foi projetada para tratar uma thread por vez, mas não é responsabilidade da classe assegurar que isso ocorra {guarded} A instância foi projetada para tratar uma thread por vez, e é responsabilidade da classe assegurar que isso ocorra (ex.: métodos synchronized em Java) {concurrent} A instância é capaz de tratar múl>plas threads concorrentemente + finaliza(data : Date) : Money {sequen>al} Leonardo Murta Diagrama de Classes 19

Outros relacionamentos entre classes Além das associações, alguns outros >pos de relacionamentos são importantes Generalização Composição Agregação Dependência Classes de associação Leonardo Murta Diagrama de Classes 20

Generalização Visa estabelecer relações entre >pos 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 u>lizada onde se espera instâncias de Funcionário Gera o efeito de herança e polimorfismo quando mapeado para código Funcionário Gerente Leonardo Murta Diagrama de Classes 21

Agregação É uma associação com a semân>ca de contém Serve como uma relação todo-parte fraca O todo existe sem as partes As partes existem sem o todo A parte pode ser agregada por vários todos Carro 0..5 -passageiros Pessoa Leonardo Murta Diagrama de Classes 22

Composição É uma associação com a semân>ca de é composto de Serve como uma relação todo-parte forte O todo não existe sem as partes As partes pertencem a somente um todo A remoção do todo implica na remoção das partes Carro Peças Leonardo Murta Diagrama de Classes 23

Dependência Deixa explícito que mudanças em uma classe podem gerar consequê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 Não tente mostrar todas as dependências no seu diagrama! A B Leitura: classe A depende da classe B Leonardo Murta Diagrama de Classes 24

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 Cliente -nome: String -endereco: String 0..* 0..* Loja Qual o valor total gasto em cada loja? Cadastro +valortotalgasto Cliente -nome: String -endereco: String Cadastro 1 0..* +valortotalgasto 0..* 1 Loja Leonardo Murta Diagrama de Classes 25

A 1 milímetro de distância... propriedades e operações está>cas Propriedades que não são instanciadas nos objetos Operações que atuam somente sobre propriedades está>cas Ambos são acessados diretamente na classe Ex.: Pedido.getProximoNumero() São sublinhadas no diagrama Pedido -data: Date -numero: int -valor: Money +finaliza() +getproximonumero(): int Leonardo Murta Diagrama de Classes 26

A 1 milímetro de distância... 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 Leonardo Murta Diagrama de Classes 27

A 1 milímetro de distância... 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 U>lizam nome em itálico Animal +fala() Leonardo Murta Diagrama de Classes 28

A 1 milímetro de distância... 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 indicas 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)() Leonardo Murta Diagrama de Classes 29

A 10 km de distância... 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 Leonardo Murta Diagrama de Classes 30

Pacotes <<interface>> policies::archtracepolicy +getdescription(): String +getrationale(): String policies <<interface>> policies::posttracepolicy +execute(trace: Trace, action: byte) <<interface>> policies::pretracepolicy +execute(trace: Trace, action: byte) <<import>> builtin::denyimmutableaetracepolicy +execute(trace: Trace, action: byte) +getdescription(): String +getrationale(): String builtin builtin::removeancestrytracespolicy +execute(trace: Trace, action: byte) +getdescription(): String +getrationale(): String builtin::denyremovalfrombranch +execute(trace: Trace, action: byte) +getdescription(): String +getrationale(): String Leonardo Murta Diagrama de Classes 31

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 Leonardo Murta Diagrama de Classes 32

Dicas (possíveis candidatos) Classes En>dades 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) Leonardo Murta Diagrama de Classes 33

Dicas (possíveis candidatos) Atributos Informação primi>va 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) Leonardo Murta Diagrama de Classes 34

Exercício Elabore um diagrama de classes para um sistema de ponto de vendas R01. O gerente deve poder fazer login com um ID e senha para iniciar e finalizar o sistema; R02. O caixa (operador) deve poder fazer login com um ID e senha para poder u>lizar o sistema; R03. O sistema deve registrar a venda em andamento os itens comprados; R04. O sistema deve exibir a descrição e preço e do item registrado; R05. O sistema deve calcular o total da venda corrente; R06. O sistema deve tratar pagamento com dinheiro capturar a quan>dade recebida e calcular o troco; R07. O sistema deve 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 u>lizando o serviço de autorização de crédito (externo) via conexão por modem; R08. O sistema deve tratar pagamento com cheque capturar o número da carteira de iden>dade por entrada manual e autorizar o pagamento u>lizando o serviço de autorização de cheque (externo) via conexão por modem; R09. O sistema deve reduzir as quan>dades em estoque quando a venda é confirmada; R10. O sistema deve registrar as vendas completadas; R11. O sistema deve controlar diversas lojas, com catálogo de produtos e preços unificado, porém estoques separados; Leonardo Murta Diagrama de Classes 35

Bibliografia Fowler, Mar>n. 2003. UML Dis2lled: A Brief Guide to the Standard Object Modeling Language. 3rd ed. Addison-Wesley Professional. Pressman, Roger. 2004. SoBware Engineering: A Prac22oner's Approach. 6th ed. McGraw-Hill. Leonardo Murta Diagrama de Classes 36

Diagrama de Classes Leonardo Gresta Paulino Murta leomurta@ic.uff.br