UML Diagrama de Classes
Introdução A modelagem de objetos incorpora a estrutura estática de um sistema mostrando: os objetos pertencentes ao sistema os relacionamentos entre esses objetos os atributos de cada objeto as operações que caracterizam cada objeto
Introdução Existem dois tipos de diagramas para a modelagem de objetos: Diagrama de Classes: é um esquema, um padrão ou um modelo que descreve muitas instâncias de objetos. Diagrama de Objetos: descreve como os objetos de um determinado grupo se relacionam entre si. serve para documentar casos de teste e exemplos para discussão. Ambos os diagramas oferecem uma notação gráfica formal para a modelagem de objetos e seus relacionamentos.
Classe Classe: refere-se a descrição de um conjunto de objetos que compartilham os mesmos atributos, operações, relações e semântica. Funcionário nome: string data_admissão: data CPF : string salário_base: float = 0.0 calcula_salário calcula_ir Nome da Classe Atributos Operações outros compartimentos podem ser acrescentados (responsabilidades, exceções, eventos, etc.)
Nome de classe O nome de uma classe distingue uma classe de outra classe. nome simples: nome sozinho nome com caminho: o nome da classe é precedido pelo nome do pacote em que a classe existe. Cliente Sistema_vendas :: Cliente
Atributo Cada objeto de uma classe possui um estado, representado pelos valores associados a cada um dos atributos definidos para a classe Sintaxe para atributos: [visibilidade] nome [multiplicidade] [:tipo] [= valor inicial] [{propriedades}] * atributos de classe são sublinhados Exemplos: nome: string endereço [0..2] : string CPF : inteiro {frozen} nro_correntistas: inteiro
Operação Uma operação é a implementação de um serviço que pode ser requisitado a qualquer objeto da classe, afetando o seu comportamento. A execução de uma operação por um objeto pode resultar na alteração do valor de seus atributos. Distinção entre operações de classes e objetos: Operação de objeto: atua sobre um objeto (instância) Operação de classe: atua sobre a classe (conjunto de objetos) Exemplos: criação de um novo objeto da classe, pesquisa sobre os objetos da classe, etc.
Operação Sintaxe para Operações: [visibilidade] nome [(lista-de-parâmetros)] [:tiporetorno] {[propriedades]} * operações de classe são sublinhadas. Exemplos: ler_temperatura( ) : numérico calcula_area(lado: inteiro, altura: inteiro) : inteiro valor_padrao( ): inteiro
Responsabilidade de classe Responsabilidade de uma classe diz respeito as suas obrigações dentro do contexto do sistema. Ao refinar o modelo, as responsabilidades de uma classe são traduzidas em um conjunto de atributos e operações que melhor atendam as suas obrigações. reiniciar iniciar_alarme avaliar_temperatura Sensor de Temperatura - Monitorar temperatura - Disparar alarme quando a temperatura atingir valores inadequados
Relacionamentos entre classes Os relacionamentos determinam conexões entre os objetos. Fornecem um caminho para a comunicação entre os objetos. Principais tipos de relacionamentos: Associação Generalização Dependência
Associação Uma associação é um relacionamento estrutural que descreve um conjunto de ligações, onde uma ligação é uma conexão entre objetos. Funcionário 0..* trabalha-para 1 Empresa
Multiplicidade (1-1): cliente tem sempre 1 (e somente 1) conta CLIENTE (0-1): cliente pode ter 1 (e no máximo 1) conta CLIENTE 0..1 (1-N): cliente tem sempre 1 conta, podendo ter mais CLIENTE Associação 1..* (0-N): cliente pode ter 1 conta, podendo ter mais 1 CONTA CONTA CONTA CLIENTE * CONTA
Associação Papel (opcional) Funcionário nome carttrab datnasc 1..* trabalha-para * empregado empregador Empresa nome endereço Esposa Pessoa nome datnasc Casamento Marido
Associação Navegação por definição, a navegação entre classes associadas é bidirecional por conveniência, a navegação pode ser restringida a uma única direção Usuário 1 * proprietário Senha não confundir com sentido para leitura de nome de associação!
Agregação Tipo especial de associação. Representa relacionamentos todo-parte, onde objetos compostos por outros objetos são modelados como estando associados com suas partes. Agregação é transitiva Se A faz parte de B, e B faz parte de C, então A faz parte de C. Agregação é não-simétrica Se A faz parte de B, então B não faz parte de A.
Agregação Exemplo: Microcomputador Monitor Gabinete Teclado 0..1 Mouse 0..1 1..* Processador DriveCD Memória Fonte Drive Disquete
Agregação Agregação simples A existência de um objeto componente não depende da existência do objeto agregado; Um objeto componente pode ser compartilhado com outro objeto agregado. EquipeProjeto 1..* 1..* Multiplicidade da extremidade do composto pode ser maior que 1 AnalistaSistemas
Agregação de composição Quando o todo é criado, as suas partes com multiplicidade não fixa podem ser criadas posteriormente; Quando uma parte é criada, a sua existência deve ser coincidente com a existência do todo, a não ser que seja explicitamente removida antes da eliminação do todo; Quando o todo é eliminado, as suas partes também devem ser eliminadas. Exemplo: Agregação Empresa 1 Multiplicidade da extremidade do composto deve ser igual a 1 1..* Departamento
Generalização Abstrai classes genéricas, a partir de classes com propriedades (atributos e operações) semelhantes. Generalização e herança são abstrações que permitem modelar aspectos semelhantes entre classes, preservando suas diferenças. Numa hierarquia de generalização, as subclasses herdam todas as propriedades de sua superclasse.
Generalização - Especialização Pessoa nome endereço sexo data_nascim idade Candidato numcandidato Eleitor num_titulo
Generalização - Especialização Processo de generalização: Identificar classes com propriedades semelhantes. Definir uma nova classe com as propriedades comuns. As classes originais tornam-se subclasses da nova classe e herdam as propriedades desta. As associações em comum passam para a superclasse e as outras continuam nas subclasses.
Especialização - Generalização Processo de especialização: 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. cada hierarquia de generalização/especialização deve abranger uma única característica.
Processo de Generalização Carro numchassi placa cor numpas anofabric tipocomb Fabricante nome paísorigem 1..* 1..* 1..* Proprietário nome ender CgcCpf 1..* Caminhão numchassi placa numeixos tonelagem ano Carroceria tipo fabricante Proprietário nome ender CgcCpf 1..* Veículo numchassi placa anofabric 1..* Fabricante nome paísorigem Carro cor numpas tipocomb Caminhão numeixos tonelagem Carroceria tipo fabricante