UNIVERSIDADE ESTADUAL PAULISTA INSTITUTO DE BIOCIÊNCIAS, LETRAS E CIÊNCIAS EXATAS DEPARTAMENTO DE CIÊNCIAS DE COMPUTAÇÃO E ESTATÍSTICA Modelagem Orientada a Objeto Engenharia de Software 2o. Semestre de 2006 Slide 1
Conceitos de Orientação a Objetos Modelagem Estruturada enfoque nas funcionalidades do sistema, funções diferentes atuam sobre os dados de forma desordenada. Não existe uma junção lógica entre dados e funções. Modelagem OO Permite abstrair de uma forma mais real o mundo a ser modelado. Acoplamento entre dados e funcionalidade Utiliza abstrações do mundo real chamadas de OBJETOS. Slide 2
Conceitos de Orientação a Objetos Objeto Informalmente, um objeto representa uma entidade de natureza física (uma pessoa) ou conceitual (uma reserva). É um conceito, abstração ou alguma coisa com limites bem definidos e significado bem conhecido dentro do escopo de uma aplicação. Slide 3
Conceitos de Orientação a Objetos Objeto Possuem características ou propriedades: ATRIBUTOS. Os atributos identificam o estado de um objeto. Um atributo é uma abstração do tipo de dados ou estado que os objetos da classe possuem. Slide 4
Conceitos de Orientação a Objetos Representação do objeto Atributos do Objeto: Nome: Severino da Silva Endereço: Rua das Camélias, 236 Sexo: masculino Data de nascimento: 26/07/1945 Altura: 1,89 m Peso: 85 kg Estado civil: solteiro Cor dos olhos: azuis Slide 5
Conceitos de Orientação a Objetos Objetos Possuem comportamentos que modificam seu estado ou prestam serviços a outros objetos: OPERAÇÕES As operações são implementadas pelos MÉTODOS Os métodos de uma classe manipulam somente as estruturas de dados daquela classe, ou seja, não podem acessar diretamente os dados de outra classe. Uma classe tem conhecimento dos dados de outra pela solicitação de serviços: MENSAGEM Slide 6
Conceitos de Orientação a Objetos Exemplo de Atributos e Operações Atributos: Nome: Severino da Silva Cargo: operador de máquinas Salário: R$ 540,00 Data de admissão: 26/01/1999... Operações: Reajustar_Salário Obter salário líquido Obter tempo de trabalho... Slide 7
Conceitos de Orientação a Objetos Objeto A modelagem de um objeto é feita de acordo com o contexto do problema. Ex1: objeto Pessoa no papel de um Acadêmico possui atributos diferentes do objeto Pessoa no papel de um Médico. Ex2: um retângulo como objeto de um programa gráfico possui mais atributos que um retângulo como objeto desenhado por uma criança. Slide 8
Conceitos de Orientação a Objetos Classes É a representação de um conjunto de objetos que compartilham a mesma estrutura de atributos, operações e relacionamentos, dentro de um mesmo contexto. Uma classe especifica a estrutura de um objeto sem informar quais serão seus valores. Um objeto corresponde à ocorrência (INSTÂNCIA) de uma classe num determinado momento. Uma classe pode ter qualquer número de atributos e operações. Slide 9
Conceitos de Orientação a Objetos Exemplo de uma instância (objeto) e sua classe Slide 10
Conceitos de Orientação a Objetos Descobrindo classes Pela identificação dos substantivos do sistema a ser modelado Os substantivos podem ser: Classes Objetos Atributos Descrição do estado de um objeto Entidade externas... Slide 11
Conceitos de Orientação a Objetos Características que diferenciam OO ENCAPSULAMENTO HERANÇA POLIMORFISMO Slide 12
Conceitos de Orientação a Objetos Encapsulamento Principal característica da OO. A utilização de um sistema OO deve depender da interface e não de sua implementação interna. O encapsulamento protege os atributos e algumas operações da classe que só podem ser acessados e atualizados pelas operações do objeto. É a propriedade de preservar informações e operações de cunho privado. Slide 13
Conceitos de Orientação a Objetos Representação de Encapsulamento Slide 14
Conceitos de Orientação a Objetos Herança É um dos diferenciadores chave entre sistemas convencionais e OO. Permite que uma subclasse (classe mais específica) herde todos os atributos e operações associados com sua superclasse (classe mais genérica). Possibilita o reuso sem esforço (modificações na superclasse são propagadas nas subclasses relacionadas). Novos atributos e operações podem ser adicionados a subclasse. Slide 15
Conceitos de Orientação a Objetos Exemplo de Herança Slide 16
Conceitos de Orientação a Objetos Polimorfismo Reduz o esforço para estender um sistema OO. Permite que uma operação (com a mesma assinatura) seja implementada nas subclasses de forma diferente que na superclasse. Slide 17
Conceitos de Orientação a Objetos Exemplo de Polimorfismo Slide 18
Exercícios 1. Identifique classes e atributos para os contextos: 1. Numa turma de um curso de graduação temos disciplinas ministradas em salas diferentes. 2. Está passando na rede de cinemas do shopping o filme Garfield2, todos os dias, em três sessões por dia. Aos sábados e domingos existem em algumas sessões duas salas de exibição. 3. 3. A Transportadora Sem Fronteiras monitora seus caminhões e motoristas através de um controlador embutido. Através dele é possível saber a localização de cada veículo da companhia. 2. Identifique atributos para as classes a seguir: 1. Conta Corrente 2. Caderno vendido em papelaria 3. Arquivo de computador Slide 19
Modelagem Orientada a Objetos Passos genéricos para conduzir análise OO: 1. Definir os requisitos do cliente para o sistema 2. Identificar cenários ou casos de uso 3. Selecionar classes e objetos usando os requisitos básicos como diretriz 4. Identificar atributos e operações para cada objeto do sistema 5. Definir estruturas e hierarquias que organizem as classes 6. Construir um modelo objeto-relacionamento 7. Construir um modelo de comportamento de objeto 8. Revisar o modelo de análise OO com base nos casos de uso ou cenários. Slide 20
Modelagem OO UML Visões (perspectivas) para descrição de sistemas: Visão Externa Diagrama de casos de Uso Visão Estrutural (Estática) Diagrama de Classes Visão Comportamental (Dinâmica) Diagrama de Estado Diagrama de Atividade Visão de Interação Diagrama de seqüência Diagrama de Colaboração Visão da Arquitetura (Implementação) Diagrama de Componentes Diagrama de Implantação Diagrama de Pacotes Slide 21
Modelagem OO Casos de Uso Diagrama de Caso de uso Especificam a visão externa do sistema. Descrevem como o sistema é percebido por seus usuários. Descrevem as interações entre os usuários e o sistema. Descreve uma seqüência de ações que representam um cenário principal (perfeito) e cenários alternativos demonstrando o comportamento de um sistema Objetivo da modelagem de casos de uso: Separar as funcionalidades do sistema, agrupando um conjunto de ações que tenham um objetivo bem definido Slide 22
Modelagem OO Casos de Uso Diagrama de Caso de Uso: Notação Slide 23
Modelagem OO Casos de Uso Ator Representa um conjunto coerente de papéis que os usuários de casos de uso desempenham quando interagem com esses casos de uso Ser humano, dispositivo de hardware, ou outro sistema. Os atores não são parte do sistema: representam interações individuais com o sistema de maneira específica. Os atores se conectam aos casos de uso somente por associação A Associação indica que o ator e o caso de uso se comunicam entre si, cada um com possibilidade de enviar e receber mensagens. Slide 24
Modelagem OO Casos de Uso Caso de Uso Descreve o que um sistema faz mas não especifica como isso é feito. Deve ter um nome que o distingue dos demais casos de uso. O comportamento de um caso de uso é especificado através de um cenário (descrição do caso de uso). Slide 25
Modelagem OO Casos de Uso Exemplo de descrição de um Caso de Uso: Slide 26
Modelagem OO Casos de Uso Exemplo de descrição de um Caso de Uso (cont.): Slide 27
Exercício Desenvolva novos casos de uso e cenários para um sistema de caixa eletrônico (ATM), considerando as operações que um cliente pode realizar: Realizar saque; Realizar depósito; Emitir Extrato; Etc... Slide 28
Modelagem OO Casos de Uso Dicas para a modelagem dos Casos de Uso: 1. Pode-se iniciar identificando uma lista de atores ou uma lista de casos de uso (a partir de uma lista pode-se chegar na outra). 2. Dado um caso de uso, identificamos seus atores a partir de questões como: Quais atores são responsáveis por este caso de uso? 3. Dado um ator, identificamos sua interação com o sistema: Quais são os serviços que o sistema deve oferecer a esse ator? 4. Necessário também identificar os papéis dos atores (dão origem a novos atores). 5. Identificar cenários comuns a vários casos de uso. (fatoração dos cenários comuns em c.de uso separados) Slide 29
Exercício 1. Com base nos relacionamentos possíveis para o Diagrama de Casos de Uso, elaborar o diagrama de casos de uso para o Sistema de Controle de Caixa Eletrônico: Considere que é possível: sacar dinheiro, emitir extrato e saldo, efetuar e agendar pagamentos, alterar a senha. Slide 30
Modelagem OO Diagrama de classe Classes Uma classe é uma descrição de um conjunto de objetos que compartilham os mesmos atributos, operações, relacionamentos e semântica. Uma classe especifica a estrutura de um objeto sem informar quais serão seus valores. Um objeto corresponde à ocorrência (INSTÂNCIA) de uma classe num determinado momento. Uma classe pode ter qualquer número de atributos e operações ou nenhum. Slide 31
Modelagem OO Diagrama de classe Descrevem a parte estática do software Elementos: Classes (objetos) Atributos Operações Relacionamentos Associação Herança Composição Slide 32
Modelagem OO Diagrama de classe Passos para a elaboração do diagrama de classes: 1. Identificação de classes 2. Identificação de relacionamentos 3. Definição de atributos 4. Definição de operações Slide 33
Modelagem OO Diagrama de classe Identificação de classes: O domínio do problema Um determinado domínio de problema inclui informações relativas ao mundo real. Os requisitos da aplicação Considerados os objetivos da aplicação a ser construída, apenas um subconjunto dessas informações necessita ser representado. Slide 34
Modelagem OO Diagrama de classe Slide 35
Modelagem OO Diagrama de classe Identificação de Classe: o que procurar? Objetos Ex. Pessoas, clientes, turmas, cursos, produtos, etc. Agentes Ex: Clientes, atendentes, etc. Unidades organizacionais Ex: Loja, Depósito, local para entrega, etc. Evento Reclamação do cliente, pedido pago, etc. Quaisquer conceitos que serão armazenados e lembrados pelo sistema. Slide 36
Modelagem OO Diagrama de classe Identificação de Classe: o que considerar? Armazenamento necessário O sistema precisará armazenar informações sobre os objetos desta classe? Mais de um objeto em uma classe É possível identificar facilmente os objetos desta classe? Evite classes que representem um só objeto. Atributos sempre aplicáveis Todos os atributos identificados para a classe são aplicáveis a todas as suas instâncias? Slide 37
Modelagem OO Diagrama de classe Notação de Classe: Slide 38
Modelagem OO Diagrama de classe Nome das Classes: Nome da classe deve descrever claramente o conceito representado Tipicamente, aparece como maiúsculo o primeiro caractere de cada palavra existente do nome da classe. Ex: Cliente, TemperaturaSensor, OrdemServiço... Uso de termos de conhecimento de todos Evitar abreviaturas Estabelecimento de padrões para nomeação de classes Evitar ambigüidades (dupla interpretação) Slide 39
Modelagem OO Diagrama de classe Atributos das Classes Objetivo: identificar e formalizar a definição dos atributos de cada classe presente no diagrama de classes. O que considerar? Necessidade do sistema em armazenar as características das instâncias das classe Slide 40
Modelagem OO Diagrama de classe Representação Gráfica dos atributos: Slide 41
Modelagem OO Diagrama de classe Notação de atributos: Visibilidade Nome do Atributo: Tipo de Expressão = Valor Inicial {Propriedade} Slide 42
Modelagem OO Diagrama de classe Definição de Operações Objetivo: identificar e formalizar a definição das operações de cada classe presente no diagrama de classes. O que considerar? Necessidade de cada classe em realizar operações que atendam às funcionalidades do sistema. Slide 43
Modelagem OO Diagrama de classe Representação Gráfica de operações: Slide 44
Modelagem OO Diagrama de classe Notação de operações: Visibilidade Nome da operação (Parâmetros): Expressão de Tipo de Retorno {Propriedade} Slide 45
Modelagem OO Diagrama de classe Identificação de Relacionamentos Objetivo: identificar associações, agregações e relacionamentos de generalização/especialização (herança) entre classes. O que considerar? Necessidade do sistema em lembrar relacionamentos entre as classes. O que procurar? Todos os relacionamentos entre instâncias de classes que sejam relevantes para o sistema. Slide 46
Modelagem OO Diagrama de classe Relacionamentos permitidos entre classes: Associação Agregação Generalização Dependência Slide 47
Modelagem OO Diagrama de classe Associação: Relacionamentos simples entre instâncias de classes Descrevem algum vínculo, relacionamento ou interdependência entre instâncias de classe. Permite navegar do objeto de uma classe até o objeto de outra classe e vice-versa. É permitido que a associação ligue uma classe a ela mesma: representa que a partir de um objeto da classe é possível criar vínculo com outros objetos da mesma classe. Slide 48
Modelagem OO Diagrama de classe Associação: Representação - Multiplicidade Slide 49
Modelagem OO Diagrama de classe Associação: Representação - Nomes Slide 50
Modelagem OO Diagrama de classe Agregação Relacionamento todo/parte no qual uma classe representa um item maior (todo) formado por itens menores (parte) Relacionamentos que representam: montagens e suas partes Ex. Um carro e suas partes (motor, chassi, rodas ) recipientes e seus conteúdos Ex. Vôo e passageiros conjuntos e seus membros Ex. Turma e alunos Slide 51
Modelagem OO Diagrama de classe Agregação: Notação Slide 52
Modelagem OO Diagrama de classe Generalização O que procurar? Diferenças e similaridades entre classes. Várias classes com características comuns. Relacionamento entre itens gerais (classe mãe) e tipos mais específicos (classes filhas) desses itens. classes filhas herdam todos os atributos e operações associados com sua classe mãe. Slide 53
Modelagem OO Diagrama de classe Generalização: Notação Slide 54
Modelagem OO Diagrama de classe A generalização / especialização ocorre quando atributos são aplicáveis apenas a subconjuntos de suas instâncias. Funcionário_Maria Nome = Maria Nasc = 16/02/70 Salário = 2500 Projeto = Funcionário_João Nome = João Nasc = 10/05/65 Salário = 3000 Projeto = Call Center Slide 55
Modelagem OO Diagrama de classe Nome/Semântica do Relacionamento Multiplicidade 1 somente um * muitos (zero ou mais) 0..* muitos (zero ou mais) 0..1 opcional (zero ou um) 1..* maior ou igual a um M..N seqüência específica Papéis Ex. 1..27 (de um a 27), 23..* (acima de 23) Navegabilidade Restrições Slide 56
Modelagem OO Diagrama de classe Slide 57
Exercícios 1. Defina os relacionamentos para as classes abaixo, considerando um sistema de informações para uma Universidade Classes: Instituição, Departamento, Aluno, Curso, Professor 2. Defina atributos e operações para o exemplo. 3. Desenvolva o Diagrama de Classes para o Sistema de Caixa Eletrônico (ATM). Passos: 1. Com base nos casos de usos, faça uma lista das possíveis classes. 2. Defina relacionamentos, atributos e operações Slide 58
aula07_modelossistemaatual.ppt Slide 59