ANÁLISE ORIENTADA A OBJETOS Out/2010 Professor Mário Dantas Aula 06 - Agenda 2 Classe e Objeto Atributo Métodos Associações Dependência Simples: multiplicidade, papel, navegabilidade Com valor semântico adicional: agregação e composição Generalização/especialização Diagrama de classes 3 Classe: Definição, atributos e métodos Classe 4 É uma descrição de um conjunto de objetos que compartilham os mesmos atributos, operações, relacionamentos e semântica É um tipo de (e dá origem a) objeto Objeto 5 Qualquer elemento identificado no domínio do negócio que tenha: identidade - qualquer objeto é único e diferenciado dos demais estado - valores dos atributos em determinado momento comportamento – funcionalidade do objeto É a instância de uma classe. Atributo 6 Definem os dados da classe Possuem tipo Podem ser referências (do tipo de) a outras classes (delegação) Possuem visibilidade, muito freqüentemente privados O tipo de dado depende da linguagem de programação que será usada para implementação. Métodos 7 Expressam o comportamento da classe Acessam e modificam os atributos da classe Na implementação, são os métodos (similares a procedimentos e funções) Possuem definição de visibilidade (geralmente públicas) Podem retornar valor ou não (void) Podem receber parâmetros ou não (entre parênteses obrigatórios) Modelagem dos Métodos 8 Serviços que a classe deve prestar (normalmente relacionados aos seus atributos) Parâmetros necessários a prestação dos serviços Retorno dos serviços prestados pela classe Saídas geradas pelos serviços da classe (não serão expressas no diagrama) Manutenção de classes persistentes (estereótipo <<entity>>) Visibilidade 9 Definida por meio de modificadores de acesso: Público (public, +) Protegido (protected, #, depende de herança) Padrão (ausência de modificador, ~, pacote) Privado (private, –) Serve para encapsular, proteger, organizar o acesso à membros de uma classe Representação da UML 10 Representação em Pseudocódigo 11 Implementação em Java 12 Utilização da Classe em Java 13 14 Associação entre Classe Dependência 15 Associação mais fraca entre classes Indica utilização Geralmente acontece quando: Na passagem de parâmetro a um método Na criação de um objeto (e/ou referência) dentro de um método Dependência 16 Herança 17 Relacionamento entre tipos mais genéricos e tipos mais específicos; Classe filha e a classe mãe; Relacionamento do tipo “é-um”; Aceita apenas a adição de características na classe filha; nunca a exclusão; Possibilita o reuso da estrutura e da funcionalidade; Necessária para o polimorfismo. Herança 18 Herança 19 Associação simples 20 Ligação estrutural entre duas classes Permite navegar de um objeto para outro Tempos de vida independentes. Associação simples 21 Associação simples 22 Associação por Agregação 23 Adiciona valor semântico (pouco) a associação, indicando que uma classe é mais importante na associação Associação do tipo “parte-de” Tempo de vida independente: a existência da parte não está vinculada ao tempo de vida do todo, podendo a parte compor outros todos Associação por Agregação 24 Associação por Composição 25 Conotação semântica mais forte que a agregação Denota forte interdependência entre as partes Tempo de vida dependente A multiplicidade do lado do “todo” não pode ser maior que 1, pois a parte é exclusiva de um todo Associação por Composição 26 Propriedades das Associações 27 Nome Papel Navegabilidade Multiplicidade Nome 28 Demonstra o objetivo da associação Deve ser uma frase com verbo É preferível usar papeis ao invés do nome do relacionamento Normalmente utilizada no modelo em fase de análise, quando ainda não existem informações suficientes para nomear os papéis Nome 29 Papel 30 Descreve a função da classe na associação Deve ser um substantivo Não deve ser usado junto com o nome de associação Há situação em que o papel designará o nome de um atributo, na implementação de uma das classes. Nesse caso, deve ser colocado no modelo. Papel 31 Navegabilidade 32 Indica que, a partir de um objeto, é possível chegar a outro que esteja associado a ele Pode ser implementado por: Referência a objetos Arrays ou coleções de objetos Quando não especificada, assume-se a dupla navegabilidade (mais complexa) Nunca há setas nas duas extremidades da associação Navegabilidade 33 Multiplicidade 34 Indica quantos objetos de uma classe podem ser associados Pode ser qualquer número de zero até muitos (indicado por *) Valores mais comuns: 0..* - zero ou qualquer número maior 1 - obrigatoriamente um e apenas um 1..* - um (no mínimo) ou qualquer número Multiplicidade 35 36 Diagrama de Classes Diagrama de Classes 37 É criado para representar o conjunto das classes e suas associações É a base estrutural que dá suporte a todas as funcionalidades de um sistema Serve como modelo conceitual e lógico de dados Constitui mais uma forma, junto com diagramas de casos de uso, de comunicação bastante útil entre projetistas e clientes Identifica os objetos manipulados pelo sistema Diagrama de Classes 38 Deve ser desenvolvido nas versões necessárias a compreensão de cada uma das fases do ciclo de vida do software (análise, projeto, implementação) É formal e pode servir para geração de código em uma linguagem de programação Diagrama de Classes 39 Trata-se de uma representação estática: é importante para definir que classes prestarão cada uma dos serviços demandados pelo sistema 40 Estudo de Caso Construir o diagrama de classes, usando o diagrama de caso de uso e diagrama de atividade do sistema: Locadora de Filmes Online Segunda versão 43 © 2004 by Pearson Education