INF1404 MODELAGEM DE SISTEMAS Bacharelado em Sistemas de Informação Ivan Mathias Filho ivan@inf.puc-rio.br Programa Capítulo 4 Classes e Diagrama de Classes Associações Exercícios 1
Programa Capítulo 4 Classes e Diagrama de Classes Associações Exercícios Modelo estático de classes Descreve a visão estática de um sistema através das classes e dos relacionamentos entre elas; É composto de um ou mais diagramas de classes; É o modelo central da abordagem orientada a objetos. 2
Classe (1) Uma classe descreve um conjunto de objetos que têm os mesmos atributos, as mesmas operações e a mesma semântica; Graficamente uma classe é representada por um retângulo dividido em três seções: nome, lista de atributos e lista das operações. Classe (2) A UML não define nenhuma regra para a semântica do nome de uma classe; O nome deve ser escolhido de acordo com o vocabulário do domínio do problema ou com a função exercida pela classe; Normalmente, os nomes são substantivos no singular com a primeira letra em caixa alta. 3
Atributo É uma propriedade nomeada de uma classe que define um domínio de valores que um objeto instância da classe pode armazenar; A definição de um atributo é válida para todos os objetos de uma classe; Os valores de todos os atributos de um objeto determinam o estado do mesmo. Operação É a declaração de um serviço que pode ser solicitado às instâncias de uma classe; A declaração de uma operação é válida para todos os objetos de uma classe; Uma implementação de uma operação é chamada de método. 4
Visibilidade (1) Determina o nível de restrição de acesso (referência) a alguns elementos de modelagem da UML; Aplicável às classes, às operações e aos atributos; Tipos de visibilidade: pública + protegida # privada - pacote ~ Visibilidade (2) público pode ser referenciado por qualquer elemento de modelagem externo ao classificador em questão; protegido pode ser referenciado pelos elementos de modelagem internos ao classificador em questão e pelos descendentes deste (generalização); privado pode ser referenciado apenas pelos elementos de modelagem internos ao classificador em questão; pacote pode ser referenciado por qualquer elemento de modelagem declarado no mesmo pacote do classificador em questão. Para os elementos externos, o elemento é tratado como privado. 5
Exemplo Programa Capítulo 4 Classes e Diagrama de Classes Associações Exercícios 6
Relacionamento Um relacionamento é um termo geral que se aplica aos vários tipos de conexões possíveis entre os elementos de modelagem definidos na UML; Nesta etapa do curso serão estudadas as associações e as generalizações; As dependências serão estudadas quando abordarmos os modelos de design de um sistema. Associação (1) Uma associação é um relacionamento estrutural cujo significado semântica é representativo para o problema sendo modelado; Uma associação representa um conjunto de ligações entre os objetos das classes que participam da associação; Ela define as regras de conexão entre estes objetos; Uma associação binária é representada por uma linha sólida que conecta as duas classes envolvidas. 7
Associação (2) Uma associação deve ter um nome, que define a natureza da associação; Para tornar mais preciso o significado de uma associação podemos usar uma seta de direcionamento de leitura; Uma seta de direcionamento não tem nenhum significado maior; apenas determina o sentido de leitura da associação. Associação - Exemplo 8
Teoria dos Conjuntos A associação pode ser vista sob a ótica da Teoria dos Conjuntos; Nesse caso, uma associação seria composta por pares ordenados, formados por instâncias das classes envolvidas; O diagrama de Venn a seguir ilustra o conceito de associação: Diagrama de Venn R={(x,y) A B x trabalha na empresa y} R={(x 1,y 2 ),(x 3,y 1 ),(x 4,y 2 ),(x 5,y 3 ),(x 6,y 3 )} 9
Papel Quando uma classe participa de uma associação, ela desempenha um papel nesse relacionamento; O papel evidencia a finalidade ou função de cada classe de uma associação; Uma mesma classe pode desempenhar vários papéis em diversas associações; Na maioria da vezes, o próprio nome da classe define o seu papel na associação. Papel - Exemplo 10
Uso de papéis em auto-relacionamentos Em algumas situações, entretanto, a utilização dos papéis é fundamental para o completo entendimento do modelo. Outro uso para um papel 11
Multiplicidade (1) O conceito de multiplicidade é muito importante na definição das regras que governam as associações: A multiplicidade de uma extremidade de uma associação define o número de objetos da classe associada a esta extremidade que podem estar conectados a uma dada instância da classe associada à extremidade oposta. Multiplicidade (2) No exemplo abaixo uma instância de A pode estar conectada, através da relação R, a zero ou mais instâncias de B. 12
Multiplicidade (3) No sentido inverso, uma instância de B pode estar conectada, através da relação R, a uma ou mais instâncias de A. Multiplicidade (4) Indicadores de multiplicidade mais comuns: 1 exatamente um 1..* um ou mais 0..* zero ou mais (muitos) * zero ou mais (muitos) 0..1 zero ou um m..n faixa de valores (por exemplo: 4..7) 13
Multiplicidade - Exemplo Um estudante pode pertencer ou não a uma equipe de futebol; Um equipe de futebol tem entre 11 e 22 estudantes jogando; Um estudante pode cursar no máximo oito disciplinas, ou estar com a matrícula trancada; Uma disciplina pode ser cursada por um número indeterminado de estudantes. Classe associativa Seja a associação abaixo, que relaciona os alunos às disciplinas por eles cursadas: A qual das duas classes deve pertencer o atributo nota, que representa a nota que um aluno obteve em uma disciplina? Resposta: a nenhuma das duas classes, e sim à relação cursa. 14
Classe associativa - Exemplo Para representarmos esta solução, precisamos de um novo elemento de modelagem; Este elemento é chamado de Classe de Associativa. Associação de grau maior do que dois Todas as associações vistas até agora são binárias; isto é, envolvem duas classes; Entretanto, em muitas ocasiões, uma associação irá envolver três ou mais classes, sem que seja possível expressar a regra de associação entre elas através de relações binárias independentes; Por exemplo, seja uma regra de negócio que determina que em uma dada cidade a distribuição de um dado produto é de exclusividade de um único distribuidor; O diagrama de classes a seguir é capaz de expressar tal regra: 15
Exemplo Leitura (1) Um par (cidade,distribuidor) pode estar associado a zero ou mais produtos. 16
Leitura (2) Uma par (distribuidor,produto) pode estar associado a zero ou mais cidades. Leitura (3) Um par (cidade,produto) pode estar associado a no máximo um distribuidor. 17
Outra solução Ao invés de usarmos explicitamente uma associação ternária, poderíamos utilizar uma classe de associação para obtermos um resultado equivalente; É importante lembrarmos que os elementos de uma associação binária são pares de objetos; Logo, se associarmos uma classe de associação a outra classe qualquer, os elementos da associação resultante serão ternos de objetos, que são elementos de uma relação entre três classes; ou seja, uma associação ternária. Exemplo 18
Programa Capítulo 4 Classes e Diagrama de Classes Associações Exercícios Bibliografia Bezerra, E. Princípios de Análise e Projeto de Sistemas com UML. 1ª edição, Campus, 2006. Larman, C. Utilizando UML e Padrões. 3ª edição, Bookman, 2007. 19