Paradigmas de Programação Aula 8 Paradigma Orientado a Objetos Baseado no material : Texto Programação OO Apostila Embrapa Método de Desenvolvimento de sistemas OO Prof.: Edilberto M. Silva http://www.edilms.eti.br Prof. Edilberto Silva / edilms.eti.br
Orientação ao objeto Extensão natural da programação modular Início da década de 70, originário da Simula Linguage, concebida na Noruega no início da década de 60, criada para fazer simulação SIMULA e depois Smalltalk - criada pela XEROX foram as primeiras linguagens a implementarem os conceitos de OO Foi utilizada para diminuir os custos de manutenção corretiva de sistemas A técnica é utilizar objetos existentes (reuso e modularidade)
Definição de objeto Um ente ativo dotado de certas características que o tornam inteligente a ponto de tomar certas decisões. Uma unidade dinâmica, composta por um estado interno privativo (estrutura de dados) e um comportamento (conjunto de operações) Um objeto em particular é como um processador com memória própria e independente de outros objetos (Price) Objeto é um bloco da dados privados envolvidos por códigos ( ente encapsulado descrito através de rotina)
Conceitos básicos Abstração - habilidade de modelar características do mundo real do problema a ser resolvido (mesa - não interessa se é de vidro, madeira,etc) Encapsulamento - base da abordagem OO - Um dado esta encapsulado quando envolvido por código de forma que, só é visível na rotina onde foi criado. Por outro lado, a rotina encapsulada, suas operações internas são invisíveis às outras rotinas. Não interessa saber como é o funcionamento interno da classe e sim sua função (ex: a tecla de replay de vídeo, não interessa como funciona internamente mas sim de que para qualquer marca sua função será de leitura da fita).
Conceitos básicos Herança - é um mecanismo que permite alto grau de reutilização de código. Conjunto de instâncias criadas a partir de um outro com características semelhantes e os elementos desse subconjunto herdam todas as características do conjunto original. Define novas classes a partir de uma já existente (propriedades e métodos da classe mãe). Ex: (manter a matriz ser humano mudando as suas vestimentas e adornos).
Herança Herança possibilita a criação de uma nova classe de modo que essa classe denominada subclasse herda as características da classe-mãe denominada superclasse ou primitiva. Define um relacionamento entre classes onde uma classe compartilha a estrutura e/ou comportamento (atributos, operações e relacionamentos) de uma outra. É um conjunto de instâncias criadas a partir de um outro conjunto com características semelhantes, e os elementos desse subconjunto herdam todas as características do conjunto original Instância - sucessão de ações que um sistema executa e leva a um resultado particular. Ex: professor substituto herda os atributos do professor
Conceitos básicos Polimorfismo - do grego quer dizer várias formas. No conceito de OO é definido como sendo um código que possui vários comportamentos, ou seja, um código que pode ser aplicado à várias classes de objetos. Ex: Código moer carne (moedor de carne) não importa o tipo de classe (carne) o resultado será sempre carne moída.
Diagrama de classes de objetos Descreve a estrutura estática das classes e seus relacionamentos Uma classe de objetos descreve um grupo de objetos com propriedades similares (atributos), comportamento comum (operações), relacionamentos comuns com outros objetos (associação e agregação) e semânticas idênticas. Um atributo é uma propriedade dos objetos de uma classe. Uma operação é uma ação aplicada aos objetos da classe. Cada objeto de uma classe é denominado instância.
Exemplo dos conceitos Um objeto é membro de uma classe muito maior de objetos. Ex: cadeira (objeto) é uma instância de uma classe mobiliário. Um conjunto de atributos pode ser associado a cada objeto da classe mobiliário: custo, dimensões, peso, cor. Esses atributos podem ser aplicados a mesa, sofá, armário..etc. Cadeira herda todos atributos definidos p/ a classe mobiliário.
Diagrama de classes de objetos A sua elaboração envolve as seguintes atividades: Identificar as classes de objetos Desenhar diagrama de classes de objetos Identificar relacionamentos entre classes de objetos Identificar atributos de classes de objetos Identificar operações Organizar e simplificar classes de objetos utilizando herança Verificar os caminhos de acesso existentes para consultas Validar o diagrama com os usuários Refinar o diagrama de classes de objetos e definir pacotes.
Identificar classes de objetos As classes de objetos devem ser identificadas a partir da análise dos casos de uso e dos cenários desenvolvidos para o sistema. Uma classe é representada por um retângulo dividido em três seções: 1º seção - nome da classe 2º seção - atributos (estrutura) 3º seção - operações (comportamento) - se houver necessidade
Herança de classe para objeto Classe: Mobiliário Custo Dimensões Peso Localização Cor O objeto herda todos atributos da classe Objeto: Cadeira Custo Dimensões Peso Localização Cor
O objeto herda todos atributos e operações da classe Classe: Mobiliário Custo Dimensões Peso Localização Cor Comprar Vender Pesar Objeto: Mesa Custo Dimensões Localização Cor Comprar Vender Pesar Objeto: Cadeira Custo Dimensões Peso Localização Cor Comprar Vender Pesar
Tipos de Objetos Entidades externas-sistemas, dispositivos, pessoas que produzem ou consomem informações a serem usadas por um sistema baseado em computador. Coisas - relatórios, displays, cartas que fazem parte do domínio de informações do problema. Ocorrências ou eventos - transferência de problemas ou a conclusão de uma série de movimentos que ocorre dentro de um contexto de operação do sistema. Papéis - gerente, engenheiro, vendedor, pessoas que interagem com o sistema. Unidades organizacionais - grupos, equipes que são pertinentes a organização.
Objetos Estruturas - definem uma classe de objetos ou classes relacionadas de objetos Coisas Ocorrências Entidades externas Papeis Lugares Estruturas Unidades organizacionais Nome do objeto Atributos Operações
Objeto de dados Um objeto de dados pode ser entidades externas, coisas, ocorrências, eventos, papeis, unidades organizacionais, lugares ou estruturas O objeto de dados pode ser representado como uma tabela. O corpo da tabela representa instâncias específicas do objeto de dados. Ex: Pessoa e um carro podem ser considerados como um objeto de dados sendo definidos por conjunto de atributos. Uma pessoa pode possuir carro, onde o relacionamento possuir é uma conexão específica entre pessoa e carro.
Análise de requisitos Compõe-se dos seguintes diagramas Diagrama de casos de uso Diagrama de seqüência Diagrama de colaboração Para realizar a análise de requisitos, deve-se: Identificar objetivo e características do sistema Identificar os requisitos essenciais Descrever as necessidades do usuário Elaborar diagrama de caso de uso, de seqüência e de colaboração
Objetivo e característica do sistema Deve ser elaborada em conjunto com os usuários solicitar ao grupo de usuários que descreva o problema Questões básicas para formulação do objetivo: O que você espera que o sistema automatizado faça? Por que informatizar as atividades relacionadas? Quais os benefícios esperados? Aonde deseja utiliza-lo? (local de uso)
Objetivo e característica do sistema Para obter as principais características, pergunte: Quais informações gostaria de controlar? Como pretende utilizá-las p/ conduzir o negócio? Como simplificar as suas atividades? O que fazer para ajudá-lo a conduzir o negócio? Que tipo de análise de resultados pode aumentar eficientemente o seu negócio? Com quais outros sistemas você trabalha e se interage? O processo de trabalho está bem definido? Relacione necessidades específicas?
Objetivo e característica do sistema Discutir e validar a descrição do problema e do processo de negocio O grupo de análise deve buscar outras fontes de informação, tais como: Planejamento estratégico formulários, normas e manuais regimentos internos Documentação de especificação do problema Literatura relevante sobre o domínio do problema Sistemas já existentes que possam interagir
Descrição de um processo de identificação de eventos Nome do sistema: Sistema de matrícula Origem: secretaria da universidade Objetivo: fornecer os cursos oferecidos pela Universidade p/ semestre p/ subsidiar a matrícula do aluno Envolvidos no evento: alunos, professores e secretaria Pré-condições para realização do evento: existência do curso oferecido p/ o semestre Dados de entrada: matrícula, semestre, ano e turno
Descrição de requisição de informação Nome do sistema: Sistema de matrícula Consulta ou relatório: emitir catálogo de cursos Origem: Secretaria da universidade Objetivo: emitir um catálogo de cursos oferecidos num determinado semestre para aluno solicitante Participantes: secretaria e alunos Dados de entrada: matricula do aluno, semestre e ano e turno Derivação: cadastramento dos cursos oferecidos Saída: Catálogo impresso dos cursos oferecidos
Diagrama de caso de uso É um modelo das funções pretendidas de um sistema e sua periferia (atores). É a seqüência de transações realizadas num sistema O papel do diagrama é comunicar a funcionalidade e o comportamento do sistema p/ o cliente. Benefícios: Proporciona um aceite do sistema Assegura um entendimento mútuo s/ os requisitos Identificar quem fará interação com o sistema Se todos os requisitos foram identificados
Representação de um caso de uso de acordo com UML uses Uses é usado para representar um comportamento ou ação relacionados. Matricular em curso Calcular dígito verificador A elaboração do diagrama de caso de uso envolve as seguintes atividades:.analisar as informações coletadas.identificar atores e casos de uso.desenhar e documentar o diagrama de caso de uso.definir o fluxo de evento para cada caso de uso.validar os casos de uso identificados.
Identificar atores Questões básicas Quem está interessado nesse evento? Onde o sistema será utilizado? Quem vai fornecer, utilizar ou excluir informação? Quem vai utilizar? O sistema utiliza algum recurso externo? Que atores são requeridos pelo caso de uso? Algum ator desempenha mais de um papel? Diversos atores desempenham o mesmo papel? Neste caso é computado como apenas um ator.
Exemplo de diagrama de caso de uso do sistema de matrícula Sistema de cobrança Calcular dígito verificador Requerer escala de curso uses Professor Aluno Universitário Matricular em curso Manter inf. de professor Selecionar curso a lecionar Manter inf. Curso Mante inf. de aluno Oficial de matrícula extends Gerar catálogo de curso
FORNECEDORES ENTRADA PROCESSO SAÍDAS CLIENTES Pósgraduando Insumos p/ confecção da carta Solicita;áo de pedido de benefício Carta elaborada DGP/CEC DGP/CEC Carta elaborada e norma de PG Análise do pedido de benefício Parecer elaborado DGP/CEC DGP/CEC Parecer indeferido ao atendimento Orientação de Procedimento Solicitação reformulada Pós-graduando DGP/CEC Parecer deferido dados p/ cálculo Cálcular valor do benefício valor cálculado DGP/SIRH DGP/SIRH dados cálculados se pagamento no país Incluir na folha de pagamento e arquivar Documentos arquivados DGP/CEC DGP/CEC Valor calculado se pagamento no exterior Preenchimento e encaminhamento de FAP FAP DAF DAF FAP Pagamento e Arquivamento Documento pago e arquivado DAF
Diagrama de seqüência Representa as mensagens trocadas por um conjunto de objetos durante um cenário. Um objeto possui estado, comportamento e identidade única. O estado de um objeto é uma das possíveis condições nas quais um objeto pode existir. Mensagem é uma chamada de operação sobre um objeto, compreendendo um nome de operação. As mensagens entre objetos são representadas por uma seta que parte de um objeto origem para o objeto destino.
Diagrama de seqüência Identificar as mensagens trocadas entre os objetos Nesta etapa, devem ser identificadas as mensagens existentes entre objetos As mensagens representam as interações entre objetos Desenho do diagrama de seqüência É uma forma de visualizar um cenário na ordem em que ele acontece em determinado tempo. Objetos são desenhados com retângulos A linha de vida é representada por uma linha vertical ligada ao objeto. Mensagens são identificadas pelas setas horizontais que interagem aos objetos.
Diagrama de seqüência aluno matrícula Horário Curso Registro Cobrança 1-fornece informações 2-valida 3-informa semestre 4-mostra 5-recupera 6-seleciona 7-processa 8-recupera 9-Requisitos satisfeitos 11-matricula aluno 10-adiciona aluno Envia p/ o sistema de cobrança
Diagrama de colaboração Mostra as mensagens trocadas por um conjunto de objetos durante um cenário. Contém: Objetos - representados por retângulos Ligações entre objetos, representadas p/ uma linha de conexão Mensagens trocadas entre objetos numa seqüência ordenada Fluxo de dados entre objetos, se houver.
Diagrama de Colaboração 2. Valida matrícula 1.fornece matrícula 3.informa semestre 4.cria novo horário Formulário de matrícula 12.matrícula completa 7.seleciona 8.processa 5.mostra Cursos disponíveis 6.recupera cursos Um curso 9.recupera Formulário horário 10.pré-requisito satisfeito Reg. de aluno 11.seleciona aluno 14.envia p/ sist. de cobrança 13.imprime horário Informação cobrança horário Lista de curso
Classe de ligação É usada para conter a informação que pertence à ligação entre objetos. São freqüentemente usadas em associação muitos-para-muitos. Aluno nome data nasc. matrícula 0..* Participa 1...* Curso nome horário Nota
Atributos de classe de objetos Os atributos são propriedades da classe de objetos. Ex: nome, peso, idade são atributos da classe de objetos pessoa Cada atributo possui um valor para cada instância da classe de objetos. Ex: idade tem valor 25 para o objeto João Relacione os atributos relevantes e elimine os desnecessários e incorretos
Exemplo da superclasse mamífero e subclasse Mamíferos Nome Idade aleitar Comunicar Superclasse: mamífero Subclasses: homem,cão e Gato Comunicar é herdado pelas subclasses polimorfismo: falar para o homem, latir p/ cão e miar p/ os gatos. Homem Casado Rir Falar Cão cauda Morder Latir Gato Cauda Arranhar Miar
Diagrama de classes do sistema de matrícula Horário Registro de Aluno 1 1 Cria 1 Acesse Oficial de Matrícula 1 Inclui estudante Aluno nome data-nasc matrícula Participa Curso nome horário Nota