Análise e Projeto de Sistemas Prof. Maria Salete M. G. Vaz Fases do Desenvolvimento 1 2 Análise 3 Implementação Engenharia de Sistema Projeto 4 Testes Engenharia de Software • A engenharia de software aplica um conjunto de técnicas para a análise (especificação de requisitos, projeto, implementação e teste de sistemas) Técnicas Diferentes • Análise, Projeto e Programação Estruturada – Técnica:Diagrama de Fluxo de Dados (DFD) – Linguagens: Cobol, Fortran, C, Pascal. • Análise, Projeto e Programação Orientada a Objetos – Técnica: Linguagem de Modelagem Unificada (UML) – Linguagens: Java e C++. Orientação a Objetos • É uma maneira de pensar os problemas utilizando modelos organizados a partir de conceitos do mundo real. • E, por isso, facilita o trabalho dos desenvolvedores. • Objeto é um conceito que existe no mundo real. • Exemplo: conta, cliente, banco, agência. c la s s e P e s s o a Classe • Representa um conjunto de objetos com características similares (modelo) • Dizemos que um objeto é a instância de uma classe o b je to M a ria o b je to P e d ro Características da Classe • Combina dados e funções numa única estrutura. • Os dados são os atributos da classe. • As funções são as operações da classe. Classe Atributos Operações Conta = class; saldo : Currency; titular : Cliente; numero : Integer; procedure Deposito(Valor:Currency); procedure Saque(Valor:Currency); procedure AlteraSaldo(Valor:Currency); end; procedure Conta.Deposito(Valor:Currency); begin saldo := saldo + Valor; end; procedure Conta.Saque(Valor:Currency); begin saldo := saldo – Valor; end; Procedure Conta.AlteraSaldo(Valor:Currency); begin saldo := Valor; end; Conceitos da Orientação a Objetos • • • • • • • Abstração Encapsulamento Mensagens Herança Polimorfismo Escala Associação Abstração • É a habilidade de ignorar os aspectos de um assunto não relevantes para o propósito em questão, tornando possível uma concentração maior nos assuntos principais • Por exemplo: mapa de uma cidade Exemplo • Análise de um Sistema Bancário • Objetos: Agência, Conta, Cliente, Banco. • Quais são os atributos de Agência? – Código? Atributos – Endereço? Desnecessários – A qual banco pertence? – Número de contas? – Data da última reforma, Área, Pé Direito? Encapsulamento • É a proteção da estrutura interna do objeto. O único modo de se obter informação sobre um objeto é através das operações procedure Conta.AlteraSaldo (Valor : Currency) begin saldo := Valor; end; Cuidado !!! procedure Cliente.Executa() begin Conta.Saldo = 100; end; Quebra de Encapsulamento O correto é ... procedure Cliente.Executa() begin Conta.AlteraSaldo(100); end; Encapsulamento mantido Mensagens • Os diversos objetos de um sistema comunicam-se através de mensagens (dependência) Abram seus livros na página 36 Qual a próxima lição? procedure Cliente.Executa() begin Conta.AlteraSaldo(100); end; Herança • Uma classe B é definida a partir da classe A, com todos seus atributos e operações, além de outros atributos e operações que diferenciam a classe B da classe A Exemplo Aluno é um tipo de Pessoa Polimorfismo • É uma das características mais potentes da orientação a objetos. • É a propriedade que indica que uma operação pode, apesar de ter o mesmo nome, executar ações diferentes. • Existem dois tipos de polimorfismo: o estático e o dinâmico. Polimorfismo Estático Polimorfismo Dinâmico Escala • É o princípio que permite ao desenvolvedor considerar algo muito grande através do enfoque Todo-Parte (Composição) TODO PARTES Exemplo (Composição) A parte não vive sem o todo Associação Cliente • É um relacionamento que um objeto precisa ter com outro(s) objeto(s), para cumprir suas responsabilidades Faz Pedido Exemplo (Associação) A parte vive sem o todo Exercício • As características apresentadas por uma classe são divididas em duas partes: Atributos (onde são armazenados os dados) e Operações (são as funções associadas). Na modelagem de um sistema para uma video-locadora, existem as classes DVD e Filme. Defina atributos e operações para estas duas classes. Resposta procedure begin situação end; procedure begin situação end; dvd.locar() = “locado”; dvd.devolver() = “livre”; procedure filme.colocar_lançamento() begin lançamento := true; end; procedure filme.tirar_lançamento() begin lançamento := false; end; procedure filme.definir_genero(tipo:String) begin genero := tipo End;