UML Diagrama de Classes de Projeto e Diagrama de Objetos Profª. Marcelo Siedler [email protected] Diagrama de Classes de Projeto Oferecem uma notação gráfica formal para a modelagem de classes e seus relacionamentos Uma Classe refere-se a descrição de um conjunto de objetos que compartilham os mesmos atributos, operações e relacionamentos Notação Nome da Classe O nome de uma classe distingue uma classe de outra classe. Nome simples Nome do caminho: o nome da classe é precedido pelo nome do pacote (subsistema) em que a classe existe Atributo Características de uma classe Exemplos: Idade - endereço : String + CPF : inteiro # nroCorrentistas : Inteiro Operações / Métodos Uma operação é um serviço que pode ser requisitado a qualquer objeto da classe, afetando seu estado (afetando valor de seus atributos) Operações de classes X Operações de Objetos Operações de objetos: atuam sobre um objeto (instância) Operações de classes: atuam sobre a classe Ex: consultar Visibilidade Público (+) : o que pode ser visto pelas operações de outras classes Protegido (#) : o que pode ser visto apenas pelas operações da própria classe e por suas classes herdeiras Privado (-) : o que pode ser visto apenas pelas operações da própria classe Estereótipos Mecanismos de extensão da UML Podem ser utilizados em diversos diagramas Graficamente, um estereótipo é representado por um nome entre << >> (dois sinais de menor e dois sinas de maior). Exemplos: No diagrama de classes, podem ser utilizados para classificar o comportamento dos métodos, por exemplo <<construtor>> Relacionamentos entre classes Os relacionamentos determinam as ligações entre as classes. Fornecem um caminho para a comunicação entre elas Principais tipos: Associação Agregação e Composição Generalização Associação Uma associação é um relacionamento estrutural que descreve uma ligação (conexão entre as classes ou objetos) Adornos da Associação Multiplicidade Papel Navegabilidade Multiplicidade (Cardinalidade) A multiplicidade (ou cardinalidade) indica a quantidade de ocorrências de um conceito. Ela é aplicada para atributos, classes e associações Multiplicidade (Cardinalidade) Papel Sua utilização é opcional Navegabilidade Por definição, a navegação entre classes associadas é bidirecional (segmento de reta) Por conveniência, a navegação pode ser restringida a uma única direção Tipos de Associação Agregação Composição Agregação Agregação é um tipo especial de associação Representa uma relação todo-parte Tenta demonstrar que as informações de um objeto todo precisam ser complementadas pelas informações de um objeto parte Quando o todo é eliminado, as partes continuam existindo É transitiva (Se A faz parte de B, e B faz parte de C, então A faz parte de C) É não-simétrica(Se A faz parte B, então B não faz parte de A) Composição É uma variação da Agregação Quando uma parte é criada, sua existência deve ser coincidente com o todo. Quando um todo é eliminado, suas partes também devem ser eliminadas Generalização A generalização é o compartilhamento de atributos, operações e relacionamentos entre classes com base em um relacionamento hierárquico (herança). Superclasses e subclasses; Subclasses herdam os atributos e métodos da superclasse, permitindo ainda modificações nos mesmos (polimorfismo). Sem generalização Com generalização Especialização Processo inverso ao de generalização Consiste em: Definir uma ou mais subclasses a partir de uma classe existente. Adicionar propriedades e associações específicas de cada nova subclasse. Associações comuns ficam ligadas à superclasse. Pode existir mais de um tipo de especialização com base em diferentes características Generalização / Especialização Classe Associativa É uma classe derivada de uma associação Classe Associativa Transformação de uma Classe Associativa para uma Classe Regular Classe Concreta / Abstrata Concreta: pode ter instâncias Abstrata: não pode ter instâncias Contém uma ou mais operações abstratas: Uma operação abstrata possui apenas a assinatura (cabeçalho) mas não possui implementação A classe abstrata é sempre uma superclasse que não possui instâncias, e só tem sentido se tiver subclasses que implementem as operações abstratas O nome de uma classe abstrata é escrito em Exemplo de Classe Abstrata Interface Interface é uma “classe abstrata” que não possui atributos e que todas as operações são públicas e abstratas. Notação: Herança Múltipla Muitas linguagens orientadas a objetos não possuem o mecanismo de herança múltipla. Diagrama de Classes Sistema Bancário Diagrama de Objetos SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL FACULDADE DE TECNOLOGIA SENAC PELOTAS Diagrama de Objetos Da mesma forma que um objeto é uma instância de uma classe, um diagrama de objetos é uma instância de um diagrama de classes. Um diagrama de objetos apresenta uma determinada configuração de um diagrama de classes, sendo interessante para realizar discussões sobre o modelo de objetos. Diagrama de Objetos Sistema Bancário