240 likes | 372 Views
UML – Diagrama de Classes. 1. 0 … *. 1. Volante. Empresa. Departamento. Automóvel. Roda. 4. Designação Morada. Designação. Material. Matrícula Marca Modelo. Tipo Pneu Tipo Jante. 1. Agregações (I).
E N D
UML – Diagrama de Classes 1 0 … * 1 Volante Empresa Departamento Automóvel Roda 4 Designação Morada Designação Material Matrícula Marca Modelo Tipo Pneu Tipo Jante 1 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. Pedro Ramos, DCTI/ISCTE
UML – Diagrama de Classes Automóvel Roda Volante Caixa Automática Caixa Manual Tipo Pneu Tipo Jante Material Matrícula Marca Modelo Agregações (II) Schmuller, 99 Permite a indicação explícita de disjunções (Or) nas agregações. 1 4 1 1 {or} 1 Pedro Ramos, DCTI/ISCTE
UML – Diagrama de Classes Linha da factura 1 Produto Quantidade Preço Unitário 1 … * Linha da factura 1 Produto Quantidade Preço Unitário 1 … * Factura Factura Número Data Número Data 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. 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. Pedro Ramos, DCTI/ISCTE
UML – Diagrama de Classes Factura nº 123 Data: 12/12/1999 Cliente João Silva Nº Cont. 1234567 Factura nº 100 Data: 12/10/1999 Cliente Ana Silva Nº Cont. 1234568 Produto Quant. P. Unit Total Produto A 2 5000 10000 Produto B 1 3000 3000 Produto X 3 2000 6000 Total 19000 Produto Quant. P. Unit Total Produto X 2 5000 10000 Produto B 1 3000 3000 Produto Y 3 2000 6000 Total 19000 Factura Número Data Composições (II) Só existe no contexto da factura 123 linhas diferentes, daí que uma linha apenas esteja associada a uma factura. Linha da factura 1 Produto Quantidade Preço Unitário 1 … * Pedro Ramos, DCTI/ISCTE
UML – Diagrama de Classes 0 … * 1 Factura Funcionário Departamento Número Data Num. Contribuinte Nome Morada Designação Composições (III) Linha da factura 1 Produto Quantidade Preço Unitário 1 … * 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
UML – Diagrama de Classes Escola Aluno 1 … * 1 … * Designação Morada Nome Morada Escola Aluno Aluno Inscrito 1 1 … * 1 Designação Morada 1 … * Nome Morada Nº Inscrição Composições (IV) abreviatura de ... Pedro Ramos, DCTI/ISCTE
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
UML – Diagrama de Classes Sócios Individuais Organizações Generalização (I) A generalização é uma relação (“um para um”) que permite representar a noção de pertença ou especificidade. Todos os sócios partilham informação comum: Nome, morada, telefone, valor quotização, etc. ... Pedro Ramos, DCTI/ISCTE
UML – Diagrama de Classes Generalização (II) Porquê distingui-los? • Atributos específicos, ex. CAE em Organizações, Idade em Individuais; • Associações específicas: ex. Mercados onde as Organizações actuam; • Dar relevo a uma especificidade do domínio. Pedro Ramos, DCTI/ISCTE
UML – Diagrama de Classes Generalização (III) Sócio Individual Nome Morada Telefone Idade Profissão Organização País CAE País Honorário 0 … * 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
UML – Diagrama de Classes Atributos versus Classes (I) Docente Docente Disciplina Nome Morada Telefone Disciplina Nome Morada Telefone Designação ou 0 … * ? 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
UML – Diagrama de Classes Atributos versus Classes (II) Docente Disciplina Nome Morada Telefone Designação 0 … * 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
UML – Diagrama de Classes Atributos versus Classes (III) Docente Idade Conjunto dos inteiros (>18 e < 100) Nome Morada Telefone Idade 0 … * 1 no computador Mesmo que pretenda a funcionalidade indicada, os limites de idade são imutáveis, logo a validação não necessita de ser efectuada através de uma classe Idade. Não parece ser relevante destacar a Idade. Pedro Ramos, DCTI/ISCTE
UML – Diagrama de Classes Associações n-árias (I) Licenciatura Disciplina do Curso 0 … * Designação Ano da Licenciatura Disciplina Designação 0 … * 2º Ano Gestão Matemática 3º Ano Informática 1º Ano Marketing Comunicação 2º Ano Pedro Ramos, DCTI/ISCTE
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 2º Ano / 1º Ano Gestão 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
UML – Diagrama de Classes Associações n-árias (III) Ano Licenciatura Ano 0 … * Licenciatura Disciplina do Curso 0 … * Designação Disciplina Designação 0 … * Não é necessária a classe associativa 1º Ano Gestão Matemática 2º Ano Pedro Ramos, DCTI/ISCTE
UML – Diagrama de Classes Associações n-árias (IV) Ano Licenciatura Ano 0 … * Uma instância em Disciplina do Curso têm que estar obrigatoriamente associada a um ano Licenciatura 0 … * Disciplina do Curso Designação Disciplina Designação 0 … * Ano Licenciatura Ano 1 … * Licenciatura 0 … * 0 … * Disciplina do Curso Designação alternativa Disciplina Designação 0 … * Pedro Ramos, DCTI/ISCTE
UML – Diagrama de Classes Aeroporto Funcionário Ligações Reserva Voo Aeroporto Data Número Reserva Passageiro Nome Cidade Pais Nome Cidade Pais Num. Contribuinte Nome Morada Associações com apenas uma Classe 1 chefe 0 … * 0 … * 0 … * Evitam Lisboa - Lisboa? Não armazena ligações nem escalas 1 trajecto 0 … * origem 1 0 … * destino 0 … * 1 Alternativa Pedro Ramos, DCTI/ISCTE
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 1 ... * 0 … 1 Aluno Disciplina Nome Designação 1 ... * 1 … * Inscrição Disciplina() Registo Receita() 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
UML – Diagrama de Classes Funcionário Empresa Num. Contribuinte Nome Morada Designação 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. 0 … * 1 empregado 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
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 Idade tem Nome Morada Telefone Idade 0 … * 1 Não é relevante realçar que para uma idade podem corresponder vários docentes. Pedro Ramos, DCTI/ISCTE
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 Valor por omissão Pedro Ramos, DCTI/ISCTE
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 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. Pedro Ramos, DCTI/ISCTE