DIAGRAMAS DE CLASSE UML Projeto Detalhado de Software (PDS) Profa. Cynthia Pinheiro Antes de mais nada... Calendário de Reposições Aula 1: 27/10/2017, 8h-10h, Sala 8 Aula 2: A verificar Aula 3: A verificar Prova extra: Data: 30/10/2017 (1ª chamada) e 06/12/2017 (2ª chamada) Assunto: Mesmo assunto da 1ª prova Questões: Apenas questões problema Atenção: Não são apenas para desenho de diagramas! Objetivo: Parecer ou solução para um determinado problema. 1
Projeto de Objetos Modelagem Estática e Dinâmica Modelos Dinâmicos: Exemplos: Modelos de Interação UML (Diagramas de Sequência ou de Comunicação) Ajudam a projetar a lógica, o comportamento do código ou o corpo do método. Modelos Estáticos: Exemplo: Diagramas de Classe UML Ajudam a projetar a definição de pacotes, nomes de classes, atributos e assinaturas de métodos (mas não o corpo do método). Projeto de Objetos Modelagem de Objetos Estática A modelagem estática mais comum é através dos Diagramas de Classes UML. Outros apoios para esta modelagem: Diagrama de Pacotes e Diagrama de Instalação. 2
Ilustra classes, interfaces e suas associações Em uma perspectiva conceitual, pode ser usado para visualizar um Modelo de Domínio Perspectiva de Software ou Projeto: de Projeto (DCP). O conjunto de todos os DCPs forma parte do Modelo de Projeto. Outras partes do Modelo de Projeto: Diagramas UML de Interação e de Pacotes. Diagramas de Classe em duas perspectivas: 3
Classificador UML: Elemento do modelo que descreve características comportamentais e estruturais. São uma generalização de muitos elementos da UML, inclusive classes, interfaces, casos de uso e atores. Classificadores mais comuns: classes e interfaces regulares Atributos de um classificador (ou propriedades estruturais): Notação textual de atributo Notação de linha de associação Ambas juntas Modos de mostrar atributos: Textual e linhas de associação 4
Notação textual de atributos UML: Formato completo: Porém, a UML permite qualquer outra sintaxe de linguagem de programação para declaração de atributo, desde que o leitor ou ferramenta seja notificado. Visibilidade: + (público), - (privado) Atributos são considerados privados, se nenhum sinal de visibilidade é dado. Notação da linha de associação: Uma seta de navegabilidade apontando do objeto fonte para o objeto alvo, indicando que um objeto fonte tem um atributo do tipo do objeto alvo. Uma multiplicidade na extremidade do alvo, mas não na extremidade da fonte Mesma notação de multiplicidade do Modelo de Domínio Nome do papel apenas na extremidade do alvo para mostrar o nome do atributo Sem nome de associação 5
Notação de texto ou de linha de associação? Notação textual de atributos para: Objetos de tipos de dados Notação de linha de associação: Para todos os demais objetos Notação de linha de associação 6
Notação de linha de associação para uma coleção Símbolos de anotação: Notas, Comentários, Restrições e Corpos de métodos 7
Operações e Métodos: Formato oficial: Operações são consideradas públicas se nenhuma visibilidade for identificada. Cadeia de propriedade: contem informação adicional. Exemplo: exceções que podem ser levantadas, se a operação é abstrata etc. Um Método é a implementação de uma Operação. Diagrama de Classes Operações e Métodos: Operações de acesso a atributos (gets e sets) geralmente são excluídas do 8
Palavras Chave: Enfeite textual para caracterizar um elemento de um modelo. Estereótipos, Perfis e Etiquetas: Não são palavras chave, embora a notação possa ser a mesma. Estereótipo: Representa um refinamento de um conceito de modelagem existente É definido dentro de um perfil UML Perfil UML: Coleção de estereótipos, etiquetas e restrições relacionadas. Especializa o uso da UML para um domínio ou plataforma específicos. Exemplo: um perfil UML para gestão de projetos ou para modelagem de dados. 9
Estereótipos, Perfis e Etiquetas: Estereótipo: A UML predefine alguns estereótipos como o «destroy» (usado no diagrama de sequência). Mas também permite estereótipos definidos pelo usuário, fornecendo um mecanismo de extensão. Etiquetas: Um estereótipo declara um conjunto de etiquetas, usando a sintaxe de atributo. Quando um elemento é marcado como um estereótipo, todas as etiquetas se aplicam ao elemento e a elas podemos atribuir valores. Estereótipo definido pelo usuário: Estereótipo Etiquetas 10
Generalização: Relacionamento entre um classificador mais geral e um classificador mais específico. Cada instância do classificador específico é também uma instância indireta do classificador geral. Realizada através de classes abstratas e operações abstratas. Classes abstratas e operações abstratas: Podem ser mostradas pela etiqueta {abstract} ou pelo nome em itálico. Classes finais e operações que não podem ser sobrepostas em subclasses são mostradas com a etiqueta {leaf}. 11
Dependência: Indica que: Um elemento cliente (classes, pacotes, casos de uso etc) tem conhecimento de outro elemento fornecedor. Uma modificação no fornecedor pode afetar o cliente. Pode ser vista como uma outra versão de acoplamento. Dependência: Ocorre quando o elemento cliente: Tem um atributo do tipo do elemento fornecedor. Envia uma mensagem ao elemento fornecedor Recebe um parâmetro do tipo do elemento fornecedor Também quando o elemento fornecedor é uma superclasse ou interface. Todos poderiam ser dependência, mas alguns já tem linhas específicas (ex: superclasse, implementação de interface etc). 12
Dependência: Dependência: 13
Dependência: Rótulos de dependência: Interfaces: Interfaces são elementos do modelo que definem conjuntos de operações que outros elementos do modelo, como classes ou componentes devem implementar. A implementação da interface é chamada de realização da interface. 14
Composição: relacionamento do tipo todo-parte tal que: Uma instância da parte pertence a apenas uma instância composta A parte deve sempre pertencer a uma composição A composição é responsável pela criação e remoção de suas partes. Se a composição é destruída, suas partes também são destruídas ou acopladas a outra composição. Restrições: Restrição ou condição em um elemento UML. Notação: entre chaves ({...}) Pode ser em linguagem natural ou em qualquer outra, como a Linguagem de Restrição de Objetos (Object Constraint Language OCL). Restrições 15
Associação qualificada: Tem um qualificador usado para selecionar um objeto (ou objetos) a partir de um conjunto maior de objetos relacionados, baseado na chave do qualificador. A qualificação reduz a multiplicidade na extremidade alvo da associação. Classe Associativa: Permite tratar uma associação em si como uma classe e modelá-la com atributos, operações e outras características. Notação: linha tracejada 16
Classes gabarito e interfaces: Muitas linguagens possuem tipos gabaritados, também conhecidos como tipos parametrizados ou genéricos. São comumente usados para o tipo de elemento de classes de coleção como, por exemplo, List e Map. Neste exemplo, a classe concreta que implementa a interface List é um ArrayList: tanto List como ArrayList são parametrizadas. Classes gabarito e interfaces: 17
Classes ativas: Um objeto ativo, que pertence a uma classe ativa, executa e controla sua própria linha de execução. Classes ativas são mostradas da seguinte forma: Notação: linhas verticais duplas Relacionamento entre Diagramas de Interação e Diagramas de Classes: 18
Diagrama de Classe Visão geral de todos os elementos: Bibliografia Esta aula foi retirada dos seguintes livros/artigos: LARMAN, Craig. Utilizando UML e Padrões: uma introdução à análise e ao projeto orientados a objetos e ao desenvolvimento iterativo. 3. ed. Porto Alegre: Bookman, 2007. 19