Baixe o app para aproveitar ainda mais
Prévia do material em texto
Análise e Projeto de Sistemas I Material disponível no AVA da disciplina Aula 8 MSc. Karen Figueiredo – karen@ic.ufmt.br Diagrama de Classes Introdução 2 É o “principal” diagrama da UML Trata da estrutura do sistema Introdução 3 O que é uma classe? Conjunto de entidades que apresentam a mesma estrutura e comportamento Exemplos: Classe Social Classe Biológica Classe de Aprendizado Diagrama de Classes 4 Um diagrama de classes contém: Entidades Relacionamentos Entidades: Classe 5 Representa o conceito de um conjunto de objetos que possuem a mesma estrutura Representação: É dada por 3 compartimentos: nome da classe, lista de atributos e lista de operações Nome da Classe Lista de Atributos Lista de Operações Entidades: Classe - Atributo 6 Atributos são as propriedades de uma determinada classe Ex.: Classe Pessoa – atributos: idade, nome, sexo, etc... Todo atributo possui um tipo O tipo pode ser primitivo (ex.: int, float, boolean, etc) Ou composto (String, Pessoa, etc) Entidades: Classe - Atributo 7 Representação: visibilidade nomeDoAtributo : tipoDoAtributo = valorInicial Visibilidade: Quem pode acessar o valor do atributo. - private - privado # protected - protegido ~ package - pacote + public - público Entidades: Classe - Atributo 8 Visibilidade: Sistema Classe A Classe B Pacote 1 Classe C Classe D Pacote 2 <<herança>> Privado: O atributo privado só é acessível pelas operações do objeto. Normalmente este é o estado inicial dos atributos, depois se necessário, pode ser modificado. Entidades: Classe - Atributo 9 Visibilidade: Sistema Classe A Classe B Pacote 1 Classe C Classe D Pacote 2 <<herança>> Protegido: O atributo só pode ser acessado por uma classe que tenha uma relação de generalização/herança, independente do pacote. Entidades: Classe - Atributo 10 Visibilidade: Sistema Classe A Classe B Pacote 1 Classe C Classe D Pacote 2 <<herança>> Pacote: O atributo pode ser acessado por qualquer outra classe no mesmo pacote. Entidades: Classe - Atributo 11 Visibilidade: Sistema Classe A Classe B Pacote 1 Classe C Classe D Pacote 2 <<herança>> Público: O atributo pode ser acessado por qualquer outra classe do sistema. Entidades: Classe - Operações 12 São ações que os objetos daquela classe poderão executar Ex.: Classe Pessoa – Operações: andar, falar, comer, etc. Equivalem aos métodos Representação: visibilidade nomeDaOperação(listaDeParâmetros) : tipoDeRetorno Entidades: Classe - Operações 13 Visibilidade: Quem pode chamar a operação. - private - privado # protected - protegido ~ package - pacote + public – público O significado é mesmo. Entidades: Classe - Operações 14 Lista de Parâmetros: Atributos que serão consumidos e/ou alterados pela operação. Ex.: comer(alimento), andar(numpassos) Entidades: Classe - Operações 15 Tipo de Retorno: A saída da operação. O que a operação gera. Pode ser tipo primitivo ou composto. Quando não há tipo de retorno é utilizado o termo “void”. Ex.: falar(): String Entidades: Classe - Operações 16 Operações básicas: Get Faz a leitura de um atributo Set Atualiza o valor de um atributo Geralmente as operações básicas são omitidas do diagrama de classes para que fique menos poluído. Entidades: Classe 17 Tipos de Classe: Abstrata Uma classe abstrata não é instanciada no sistema. Geralmente está envolvida em um relacionamento de herança, onde desempenha o papel de classe “mãe” Representação: Nome em itálico. Entidades: Classe 18 Tipos de Classe: Interface É um “tipo de classe” onde todos as operações não tem corpo. Ela não pode ser instanciada e deve ter pelo menos uma classe que descreva todos os corpos das suas operações. Representação: Estereótipo ou Círculo Entidades: Pacote 19 Utilizado para agrupar um conjunto de classes Propósitos: Organização Políticas de acesso Representação: Relacionamentos 20 Tipos de Relacionamento entre Classes: Associação Generalização Composição Agregação Realização Dependência Classe de Associação Todo relacionamento pode ter um nome que fica localizado no meio da reta que traça a relação Relacionamentos: Associação 21 Representa a relação de uma classe com outra É representado por uma reta Somente classes que estão relacionadas podem se comunicar O papel que a classe desempenha na relação deve ser identificado na extremidade da reta É possível o auto-relacionamento Relacionamentos: Associação 22 A multiplicidade da relação também deve ser definida 0..1 1 0..* 1..* * Outra: 2, 5, etc. Relacionamentos: Associação 23 Navegabilidade: Indica qual classe pode acessar qual É representada por uma seta indicando a o sentido da relação Quando a navegabilidade não é representada entende- se que ambas classes podem se ler Relacionamentos: Generalização 24 Indica um relacionamento do tipo “é um” Representa a herança Uma superclasse é relacionada a uma subclasse que irá estender a superclasse Uma superclasse nem sempre é abstrata Uma subclasse não pode ter mais de uma superclasse Uma superclasse pode ter várias subclasses É representado por uma seta larga que aponta para a superclasse Relacionamentos: Composição 25 Indica um relacionamento do tipo “é composto de” Funciona como uma relação todo-parte onde as partes não existem sem o todo A remoção do todo implica na remoção das partes É representado por uma reta com losango preenchido na parte do todo Relacionamentos: Agregação 26 Indica um relacionamento do tipo “contém” “agrega” Funciona como uma relação todo-parte onde o todo existe sem as partes e as partes existem sem o todo A remoção do todo implica não implica na remoção das partes É representado por uma reta com losango sem preenchimento na parte do todo Relacionamentos: Realização 27 É similar a generalização, mas trabalha com interfaces Leitura: “implementa” Se Carro “implementa” Veículo – Todas as operações definidas em Veículos devem ser implementadas em Carro – Carro pode utilizar os atributos definidos em Veículo (que sempre são constantes) Relacionamentos: Dependência 28 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 (método 2) – Uma classe tem operações que esperam como parâmetro outra classe (método 1) Outros relacionamentos (ex.: associação com navegação) implicitamente determinam dependência Relacionamentos: Classe de Associação 29 É um recurso a nível de modelo Permitem a adição de informações em uma associação Devem ser transformadas em classes comuns posteriormente para viabilizar implementação Implementações 30 Implementações 31 Implementações 32 Implementações 33 Implementações 34 Dicas 35 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 Dicas: PossíveisCandidatos 36 Classes: – Entidades 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) Dicas: Possíveis Candidatos 37 Atributos: – Informação primitiva 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) Um diagrama de classes pode oferecer três perspectivas, cada uma para um tipo de observador diferente. São elas: • Conceitual • Especificação • Implementação Perspectivas • Representa os conceitos do domínio em estudo. • Perspectiva destinada ao cliente • Apenas classes são utilizadas. Neste tipo de perspectiva, uma classe é interpretada como um conceito • Detalhamento no máximo a nível de atributos Perspectivas: Conceitual • Tem foco nas principais interfaces da arquitetura, nos principais métodos, e não como eles irão ser implementados • Perspectiva destinada as pessoas que não precisam saber detalhes de desenvolvimento, tais como gerentes de projeto • Tanto classes como interfaces são utilizados neste tipo de perspectiva. O foco consiste em mostrar as principais interfaces e classes juntamente com seus métodos. • Não é necessário mostrar todos os métodos e detalhes ainda. Perspectivas: Especificação • Aborda todos os detalhes possíveis a nível de implementação • Perspectiva destinada ao time de desenvolvimento. Perspectivas: Implementação 1) Baseado nas especificações da Biblioteca, Diagrama de Casos de Uso e DER, construir o Diagrama de Classes da Biblioteca. 2) Baseado nas especificações do Sistema de Submissão de artigos, construir um Diagrama de Classes. Exercício
Compartilhar