UML Diagrama de Classes Pedro Nogueira Ramos Pedro

  • Slides: 36
Download presentation
UML – Diagrama de Classes Pedro Nogueira Ramos (Pedro. Ramos@iscte. pt) DCTI / ISCTE

UML – Diagrama de Classes Pedro Nogueira Ramos (Pedro. Ramos@iscte. pt) DCTI / ISCTE Pedro Ramos, DCTI/ISCTE Índice

Diagrama de Classes - Índice Conceitos Básicos Associações n/1 -árias Associações (# / #)

Diagrama de Classes - Índice Conceitos Básicos Associações n/1 -árias Associações (# / #) Associações singulares (uma classe) Classes Associativas Relações de Dependência Agregações Roles Composições Navegação Generalizações Especificação de Atributos Versus Classes Packages Pedro Ramos, DCTI/ISCTE Índice

UML – Diagrama de Classes Objecto: qualquer coisa relevante do domínio que pretendemos modelar

UML – Diagrama de Classes Objecto: qualquer coisa relevante do domínio que pretendemos modelar e que têm: . Identidade (forma de o identificar). Estado (conjunto de atributos). Comportamento (operações que sobre ele podem ser efectuadas) É distinto de outros clientes da empresa Atributos: nome, morada, nº contribuinte, . . . Operações: emitir facturas, alterar morada, . . . Cliente ‘João Silva’ Pedro Ramos, DCTI/ISCTE Índice

UML – Diagrama de Classes Classe: conjunto de objectos que partilham o mesmo Mecanismo

UML – Diagrama de Classes Classe: conjunto de objectos que partilham o mesmo Mecanismo de Identificação, Estado, Comportamento, Relações e Semântica. Classe dos Clientes Todos distintos uns dos outros Partilham atributos e operações Relacionam-se com as mesmas classes (e. g. , produtos que adquirem) Representam a mesma realidade (semântica) Os objectos não têm necessariamente que corresponder a entidades humanas ou, mais genericamente, a entidades com representação física (e. g. , uma factura). Um conceito abstracto, por exemplo um departamento, pode ser um objecto (caso seja relevante para o domínio em causa). Pedro Ramos, DCTI/ISCTE Índice

UML – Diagrama de Classes Classe: Representação Gráfica Classe dos Cliente Designação (distinta) Num.

UML – Diagrama de Classes Classe: Representação Gráfica Classe dos Cliente Designação (distinta) Num. Contribuinte Nome Morada Atributos (relevantes) Atribuir Factura() Operações (relevantes) Pedro Ramos, DCTI/ISCTE Índice

UML – Diagrama de Classes Relações Em qualquer sistema existem objectos que se relacionam

UML – Diagrama de Classes Relações Em qualquer sistema existem objectos que se relacionam entre si. Por exemplo, se considerarmos a classe das facturas da empresa, o cliente ‘João Silva’ relaciona-se com as facturas a ele emitidas. A relação entre objectos é representada através das relações entre as classes, que podem ser de dois tipos: 1) Associações Casos especiais: Composição Agregação 2) Generalizações Pedro Ramos, DCTI/ISCTE Índice

UML – Diagrama de Classes Associações Uma associação é uma relação que permite especificar

UML – Diagrama de Classes Associações Uma associação é uma relação que permite especificar que objectos de uma dada classe se relacionam com objectos de outra classe. Cliente Num. Contribuinte Nome Morada Factura 1 0…* Data Emissão Data Pagamento Valor Número de Factura Um cliente pode estar associado a n facturas, ou a nenhuma ([0, *]), e Uma factura está obrigatoriamente associada a um e apenas a um cliente ([1, 1]). Nota: 1 é equivalente a 1. . . 1 Pedro Ramos, DCTI/ISCTE Índice

UML – Diagrama de Classes Multiplicidade das Associações 0. . . 1, zero ou

UML – Diagrama de Classes Multiplicidade das Associações 0. . . 1, zero ou um 0. . . *, de zero a n 0. . . 3, de zero a 3 1. . . 1, um e apenas um 1. . . *, de um a n 1. . . 3, de um a 3 . . . infinitas combinações que é vulgar agruparem-se em: 0 … 1 0 … * 1 … 1 0…* 0…* Pedro Ramos, DCTI/ISCTE “um para muitos” “um para um” “muitos para muitos” Índice

UML – Diagrama de Classes Associação “um para muitos” Funcionário Num. Contribuinte Nome Morada

UML – Diagrama de Classes Associação “um para muitos” Funcionário Num. Contribuinte Nome Morada João Ana Luís Joana Departamento 0…* 1 Designação Produção Comercial Financeiro Informática Pedro Ramos, DCTI/ISCTE Semântica Um funcionário tem necessariamente que estar associado a um departamento, e, a um departamento podem-se associar vários ou nenhum funcionários. Funcional Dado um funcionário é possível determinar em que departamento ele trabalha, e, dado um departamento é possível identificar os seus funcionários. Índice

UML – Diagrama de Classes Associação “muitos para muitos” Aluno Número Nome Morada João

UML – Diagrama de Classes Associação “muitos para muitos” Aluno Número Nome Morada João Ana Luís Joana Disciplina 0…* 0. . . * Designação frequenta Matemática Direito Marketing Informática A mesma associação (domínio e co-domínio idênticos) Pedro Ramos, DCTI/ISCTE Um objecto não pode estar duplamente associado a outro objecto (Joana / Marketing). À semelhança das classes (em que os objectos são distintos), as associações também têm que ser distintas. As associações podem ter nomes, nomes esses que terão que ser distintos Índice

UML – Diagrama de Classes Associação “um para um” Factura Data Emissão Data Pagamento

UML – Diagrama de Classes Associação “um para um” Factura Data Emissão Data Pagamento Valor Número de Factura Nº Recibo 1 0… 1 Nº Cheque Banco Nº Recibo É a associação que atribui um número de recibo à factura. Caso contrário, uma factura estaria associada a dois recibos (o recibo indicado no atributo da factura e o recibo resultante da associação). Pedro Ramos, DCTI/ISCTE Índice

UML – Diagrama de Classes Associativas (I) As Classes Associativas são associações que se

UML – Diagrama de Classes Associativas (I) As Classes Associativas são associações que se transformam em classes quando é necessário: a) Colocar atributos na associação ou/e; Licenciatura Designação Tipo Avaliação Disciplina 0…* 1…* 0…* Designação Tipo Avaliação Disciplinas da Licenciatura Tipo Avaliação Pedro Ramos, DCTI/ISCTE Índice

UML – Diagrama de Classes Associativas (II) b) Associar uma classe a uma associação.

UML – Diagrama de Classes Associativas (II) b) Associar uma classe a uma associação. Licenciatura Designação Tipo Avaliação Disciplina 0…* 1…* 0…* Designação Tipo Avaliação 0…* Disciplinas da Licenciatura Tipo Avaliação Docente 0…* 0 … * Num. Contribuinte Nome Morada Nota: As Classes Associativas apenas são necessárias nas associações “muitos para muitos”. Pedro Ramos, DCTI/ISCTE Índice

UML – Diagrama de Classes Agregações (I) As Agregações são associações que se utilizam

UML – Diagrama de Classes Agregações (I) As Agregações são associações que se utilizam quando se pretende representar a noção de Todo/Parte (um todo constituído por partes). A associação “lê-se” de forma semelhante às restantes associações. Empresa Departamento 1 Designação Morada Roda Automóvel 1 Matrícula Marca Modelo 0 … * Designação 4 Tipo Pneu Tipo Jante Volante 1 Pedro Ramos, DCTI/ISCTE Material Índice

UML – Diagrama de Classes Agregações (II) Schmuller, 99 Permite a indicação explícita de

UML – Diagrama de Classes Agregações (II) Schmuller, 99 Permite a indicação explícita de disjunções (Or) nas agregações. Automóvel Roda 1 Matrícula Marca Modelo 4 Tipo Pneu Tipo Jante Volante 1 Material Caixa Automática 1 {or} 1 Pedro Ramos, DCTI/ISCTE Caixa Manual Índice

UML – Diagrama de Classes Composições (I) As composições são um caso especial de

UML – Diagrama de Classes Composições (I) As composições são um caso especial de Agregações (normalmente associações “um para muitos”) que representam situações em que um objecto de uma classe (composição) resulta da composição de um conjunto de objectos de outra classe (componente), e em que os componentes apenas existem no contexto da classe composição. São Agregações em que o sentido da pertença é mais forte. Factura Número Data Linha da factura 1 1…* Produto Quantidade Preço Unitário Uma factura é uma composição de linhas. Caso optasse pela seguinte representação escondia uma realidade que pode ser considerada relevante: as linhas apenas existem enquanto existir a factura da qual fazem parte. Na representação anterior fica explicitamente descrito que, por exemplo, se remover-mos uma factura, as linhas dessa factura também serão removidas. Factura Número Data Pedro Ramos, DCTI/ISCTE Linha da factura 1 1…* Produto Quantidade Preço Unitário Índice

UML – Diagrama de Classes Composições (II) Factura nº 123 Data: 12/12/1999 Cliente João

UML – Diagrama de Classes Composições (II) Factura nº 123 Data: 12/12/1999 Cliente João Silva Nº Cont. 1234567 Produto Quant. P. Unit Total Produto A 2 5000 10000 Produto B 1 3000 Produto X 3 2000 6000 Total Só existe no contexto da factura 123 Factura nº 100 Data: 12/10/1999 Cliente Ana Silva Nº Cont. 1234568 19000 Produto linhas diferentes, Quant. P. Unit Total Produto X 2 5000 10000 Produto B 1 3000 Produto Y 3 2000 6000 Total daí que uma linha apenas esteja associada a uma factura. Pedro Ramos, DCTI/ISCTE 19000 Linha da factura Factura Número Data 1 1…* Produto Quantidade Preço Unitário Índice

UML – Diagrama de Classes Composições (III) Factura Número Data Linha da factura 1

UML – Diagrama de Classes Composições (III) Factura Número Data Linha da factura 1 1…* Produto Quantidade Preço Unitário Funcionário Num. Contribuinte Nome Morada Departamento 0…* 1 Designação Apesar da obrigatoriedade existir em ambas as associações (1), são situações com semânticas distintas. O funcionário existe per si, não necessita de estar associado a um departamento para ser referido. No entanto, um funcionário que não trabalhe num departamento não é relevante para o domínio em causa (se o seu departamento for removido ele terá que ser excluído). A Linha da factura só pode ser referida (distinguida das restantes) se for indicada a factura correspondente. Pedro Ramos, DCTI/ISCTE Índice

UML – Diagrama de Classes Composições (IV) Escola 1…* Designação Morada Aluno Nome Morada

UML – Diagrama de Classes Composições (IV) Escola 1…* Designação Morada Aluno Nome Morada abreviatura de. . . Escola Designação Morada Pedro Ramos, DCTI/ISCTE Aluno Inscrito 1 1…* Nº Inscrição 1…* 1 Nome Morada Índice

UML – Diagrama de Classes Composições (V) Schmuller, 99 considera que a composição é

UML – Diagrama de Classes Composições (V) Schmuller, 99 considera que a composição é uma Agregação em que a parte só pode ter no máximo um todo. ? Pedro Ramos, DCTI/ISCTE Índice

UML – Diagrama de Classes Generalização (I) A generalização é uma relação (“um para

UML – Diagrama de Classes Generalização (I) A generalização é uma relação (“um para um”) que permite representar a noção de pertença ou especificidade. Sócios Individuais Todos os sócios partilham informação comum: Nome, morada, telefone, valor quotização, etc. . Organizações Pedro Ramos, DCTI/ISCTE Índice

UML – Diagrama de Classes Generalização (II) Porquê distingui-los? 1) Atributos específicos, ex. CAE

UML – Diagrama de Classes Generalização (II) Porquê distingui-los? 1) Atributos específicos, ex. CAE em Organizações, Idade em Individuais; 2) Associações específicas: ex. Mercados onde as Organizações actuam; 3) Dar relevo a uma especificidade do domínio. Pedro Ramos, DCTI/ISCTE Índice

UML – Diagrama de Classes Generalização (III) Sócio Individual Nome Morada Telefone Idade Profissão

UML – Diagrama de Classes Generalização (III) Sócio Individual Nome Morada Telefone Idade Profissão Honorário Organização País CAE País 0…* • São associações “um para um”: um sócio apenas pode corresponder a uma organização e uma organização corresponde (obrigatoriamente) a um sócio; • Um sócio não pode ser simultaneamente Individual e Organização; • Um sócio pode não ser nem Individual nem Organização; • Um sócio pode ser Honorário e Individual, ou Honorário e Organização; • As subclasses herdam todos os atributos da supraclasse. Pedro Ramos, DCTI/ISCTE Índice

UML – Diagrama de Classes Atributos versus Classes (I) Docente Nome Morada Telefone Disciplina

UML – Diagrama de Classes Atributos versus Classes (I) Docente Nome Morada Telefone Disciplina Nome Morada Telefone ou Disciplina 0…* Designação 0. . . 1 ? É relevante realçar a noção de disciplina ? É importante referir que é obrigatório um docente estar associado a uma disciplina ? É importante validar as disciplinas (apenas permitir associar a um docente uma disciplina pré-definida)? A designação das disciplinas pode ser alterada? Pedro Ramos, DCTI/ISCTE Índice

UML – Diagrama de Classes Atributos versus Classes (II) Docente Disciplina Nome Morada Telefone

UML – Diagrama de Classes Atributos versus Classes (II) Docente Disciplina Nome Morada Telefone 0…* Designação 0. . . 1 no computador Em rigor, não é necessária a Classe Disciplina para poder obter a funcionalidade indicada. No entanto, caso a classe não exista, as disciplinas válidas são constantes (não é permitida a sua manutenção). Pedro Ramos, DCTI/ISCTE Índice

UML – Diagrama de Classes Atributos versus Classes (III) Docente Idade Nome Morada Telefone

UML – Diagrama de Classes Atributos versus Classes (III) Docente Idade Nome Morada Telefone Idade 0…* 1 Conjunto dos inteiros (>18 e < 100) no computador Mesmo que pretenda a funcionalidade indicada, os limites de idade são imutáveis, logo a validação necessita de ser efectuada através de uma classe Idade. Não parece ser relevante destacar a Idade. Pedro Ramos, DCTI/ISCTE Índice

UML – Diagrama de Classes Associações n-árias (I) Licenciatura Designação Disciplina do Curso 0…*

UML – Diagrama de Classes Associações n-árias (I) Licenciatura Designação Disciplina do Curso 0…* Ano da Licenciatura Disciplina Designação 0…* Gestão 2º Ano Matemática 3º Ano Informática 1º Ano Marketing Comunicação Pedro Ramos, DCTI/ISCTE 2º Ano Índice

UML – Diagrama de Classes Associações n-árias (II) Cenário de Reestruturação de Licenciatura (ano

UML – Diagrama de Classes Associações n-árias (II) Cenário de Reestruturação de Licenciatura (ano de transição): Matemática ocorre no 1º e 2º ano da Licenciatura em Gestão. 1º Ano Gestão 2º Ano / 1º Ano Matemática Não devem existir atributos multi-valor Apesar de o ano ser diferente nas duas associações, as associações são as mesmas: uma associação é identificada (distingue-se) através dos seus argumentos (e não pelos atributos). Pedro Ramos, DCTI/ISCTE Índice

UML – Diagrama de Classes Associações n-árias (III) Ano Licenciatura Ano 0…* Licenciatura Designação

UML – Diagrama de Classes Associações n-árias (III) Ano Licenciatura Ano 0…* Licenciatura Designação 0…* Disciplina do Curso Disciplina Designação 0…* Não é necessária a classe associativa 1º Ano Gestão Matemática 2º Ano Pedro Ramos, DCTI/ISCTE Índice

UML – Diagrama de Classes Associações n-árias (IV) Ano Licenciatura 0…* Ano Uma instância

UML – Diagrama de Classes Associações n-árias (IV) Ano Licenciatura 0…* Ano Uma instância em Disciplina do Curso têm que estar obrigatoriamente associada a um ano Licenciatura Designação 0…* Disciplina do Curso Disciplina Designação 0…* Ano Licenciatura Ano 1…* Licenciatura Designação alternativa 0…* Disciplina do Curso Disciplina Designação Pedro Ramos, DCTI/ISCTE 0…* Índice

UML – Diagrama de Classes Associações com apenas uma Classe Funcionário Aeroporto Num. Contribuinte

UML – Diagrama de Classes Associações com apenas uma Classe Funcionário Aeroporto Num. Contribuinte Nome Morada 1 0…* Nome Cidade Pais chefe 0…* Ligações Evitam Lisboa - Lisboa? Não armazena ligações nem escalas 1 Aeroporto Nome Cidade Pais 1 origem 1 destino 0…* trajecto Reserva Voo Data 0 … * Número Reserva Passageiro Alternativa Pedro Ramos, DCTI/ISCTE Índice

UML – Diagrama de Classes Relações de Dependência As relações de dependência permitem evidenciar

UML – Diagrama de Classes Relações de Dependência As relações de dependência permitem evidenciar dependências comportamentais que não transparecem nas relações estruturais. Existe uma relação de dependência quando uma alteração num objecto de uma classe origina uma alteração em outro objecto de outra classe. Folha Receitas Data Movimento Montante Registo Receita() 1. . . * 0… 1 Aluno Nome Disciplina 1. . . * 1 … * Designação Inscrição Disciplina() Não é necessário indicar quais os métodos envolvidos. Uma inscrição de um aluno em uma disciplina, origina uma entrada de uma receita. A seta aponta para a classe dependente. Uma relação entre Aluno e Folha de Receitas não é esclarecedora. Pedro Ramos, DCTI/ISCTE Índice

UML – Diagrama de Classes Roles Uma forma alternativa à utilização de nomes das

UML – Diagrama de Classes Roles Uma forma alternativa à utilização de nomes das associações consiste na indicação do papel (roles) de cada uma das classes na associação. Funcionário Num. Contribuinte Nome Morada Empresa 0…* empregado 1 Designação empregador Na associação o Funcionário representa o papel do empregado e a empresa o de empregador (alternativa a designar a associação de “Trabalha”). Pode-se indicar apenas a designação de um role. Pedro Ramos, DCTI/ISCTE Índice

UML – Diagrama de Classes Navegação Caso seja relevante, pode ser indicado na associação

UML – Diagrama de Classes Navegação Caso seja relevante, pode ser indicado na associação o sentido na navegação, i. e. , a forma preferencial de leitura da associação. Formalmente, a indicação de um sentido de navegação não implica que não exista uma relação estrutural bi-direccional. Docente Nome Morada Telefone Idade tem Idade 0…* 1 Não é relevante realçar que para uma idade podem corresponder vários docentes. Pedro Ramos, DCTI/ISCTE Índice

UML – Diagrama de Classes Especificação de Atributos Na especificação dos atributos, para além

UML – Diagrama de Classes Especificação de Atributos Na especificação dos atributos, para além da sua designação, é possível indicar outras propriedades. CD Audio Título: String Género Música: String = “Rock” Data: Date Pedro Ramos, DCTI/ISCTE Valor por omissão Índice

UML – Diagrama de Classes Packages Os Packages são agrupamentos de classes. Por exemplo,

UML – Diagrama de Classes Packages Os Packages são agrupamentos de classes. Por exemplo, correspondem a sistemas informáticos distinctos Funcionário Tab IRS Conta Factura Pedro Ramos, DCTI/ISCTE Relação de dependência: a activação de pelo menos um método de uma classe do package Processamento de Salários activa um método do outro package. Índice