• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Programação Orientada a Objeto(POO)
 

Programação Orientada a Objeto(POO)

on

  • 359 views

 

Statistics

Views

Total Views
359
Views on SlideShare
359
Embed Views
0

Actions

Likes
0
Downloads
13
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Programação Orientada a Objeto(POO) Programação Orientada a Objeto(POO) Presentation Transcript

    •  Paradigmas de Linguagens de Programação Linguagens Orientadas a Objetos 1
    •   produção de software mais confiável  proteção aos dados: encapsulamento  aumento da produtividade de software  reutilização de código: classes  extensão da biblioteca de classes: definição de subclasses (herança) implementação de novos métodos redefinição de métodos (polimorfismo) 2 Objetivosda Orientação a Objetos
    •  3 Programação Procedimental dados dados Proc1 Proc2 Proc3 dados
    •  4 Programação Orientada a Objetos dados dados dados
    •   Características de uma LOO:  Tipos de dados Abstratos;  Herança; e  Um tipo especial de vinculação dinâmica.  Programação Orientada por Procedimentos  Concentra-se em subprogramas e bibliotecas de subprogramas  Dados enviados a subprogramas p/computação;  Ex: Classificação de um array de valores inteiros. 5 Introdução
    •  Regras de desenvolvimento 6 Decomposição A partir de um problema geral, definir um conjunto de subproblemas independentes que podem ser tratados em separado. Independência A alteração de um módulo não incorre na modificação de outros módulos. Reutilização Quanto mais um módulo for independente, maior a chance dele poder ser reutilizado em outra aplicação. Auto documentado Todo módulo deve ser compreensível sem a necessidade de verificar seu relacionamento com os outros módulos.
    •  Abstração e Encapsulamento 7 1 - Um programador define um tipo de dados 2 - Para este tipo de dados, um conjunto de operações 3 - Em seguida, encapsula instâncias criadas a partir do tipo definido de forma que estas instâncias não possam ser manipuladas de outra forma que não seja através das operações definidas Tipo Abstrato de Dados
    •   Descreve as características essenciais de uma entidade que as distinguem de todos os outros tipos de entidades;  Vantagens:  Código e estrutura de dados em um mesmo lugar (legibilidade e facilidade de alteração);  Ocultamento de informação, proporciona proteção contra acessos inesperados (integridade da abstração) 8 Abstração de Dados
    •  Orientação a Objetos 9  Representação do mundo real (Descartes)  O próprio paradigma contém regras de desenvolvimento Método de implementação no qual os programas são organizados como um conjunto de objetos cooperantes, sendo cada objeto um representante de uma determinada classe, e as classes organizadas através de uma relação de herança
    •  Abstrações de objetos do mundo real  Cada classe deve representar um conceito  Exemplos: Pessoa, Veiculo, Tabela, Janela, Data  Um conceito pode ser descrito por atributos  Exemplos:  Pessoa: nome, data nascimento, nacionalidade, sexo...  Veículo: marca, modelo, tipo, ano, chassis ...  Data: dia, mês, ano  Os atributos podem sofrer operações  Leitura, escrita, atribuição, cópia, comparação, adição .....  dados e comportamento especificados num mesmo módulo: classe  classe = define conjunto de objetos com as mesmas características  objetos são instâncias de classes 10 Abstração de Classes
    •  A computação é vista como conjuntos de objetos agrupados em classes de objetos similares que interagem através da troca de mensagens  Cada classe é um modelo estático que permite especificar um conjunto de características do conceito que representa  Cada objeto é uma entidade dinâmica criada a partir de uma classe e possui os dados sobre os quais são realizadas as operações disponíveis em sua classe 11 Modelo de Objetos: princípios
    •  Componentes básicos: classes, objetos, mensagens  Classes  campos + métodos  descritores não executáveis: tipos de dados  Objetos  variáveis (dinâmicas) criadas a partir de classes  podem ser criados, copiados, destruídos, passados como argumentos, devolvidos como resultado....  Mensagens  invocação de métodos descritos na classe  atuam sobre objetos 12 Programa OO: elementos
    •  Especifica um conjunto de propriedades e comportamento de um molde específico;  É utilizada para modelar entidades do mundo real;  Todo objeto é instancia de apenas uma classe;  A comunicação entre objetos é realizada por troca de mensagens 13 Classes e Objetos Métodos Dados
    •  14 Objeto e Classe Todos os objetos são instâncias de uma classe Um objeto é a materialização de um conceito formalizado Exemplo: ContaEmBanco é uma classe. A conta do Donald e a tio Patinhas são instâncias Pode-se comparar, à título ilustrativo, classes e objetos a tipos e variáveis em linguagens procedurais convencionais.
    • Membros são as componentes internas de um objeto, definidas por uma classe.  Atributos:  Membros do tipo informação, mantidos por cada uma das instancias de uma classe  Métodos:  Membros do tipo função definidos por cada classe e executados no escopo de um objeto. Isto é, sobre os atributos mantidos pelo objeto. 15 Membros
    •  Membros 16 Depositar Sacar ConsultarSaldo Encerrar Abrir Nome Saldo Profissão Atributos Métodos (Parte escondida) (Protocolo de acesso)
    •  Exemplo 17 Depositar Sacar ConsultarSaldo Encerrar Abrir Tio Patinhas 100.000,00 Empresário Depositar Sacar ConsultarSaldo Encerrar Abrir Donald 1,00 Jornalista Conta do Tio Patinhas Conta do Donald Duas instâncias (objetos) da classe ContaEmBanco
    •  18 Classes e Objetos (cont) Documento Autor Data de chegada Imprimir() Editar() Classe Atributos Métodos D1: Documento D2: Documento Objetos
    • LOO: Classes x Objetos  Classes não reservam memória para variáveis (campos)  Cada objeto, quando instanciado, ocupa espaço de memória para seus dados  Cada objeto possui uma identidade (nome)  Cada objeto possui um tipo  Cada objeto possui suas variáveis e seus valores (estado)  Vários objetos podem ser criados a partir de uma mesma classe 19 Personagem nome: String; idade: Int; sexo: String void lista() p1: Personagem nome: “Ana Terra”; idade: 20; sexo: “feminino” objeto UML nome idade sexo
    • LOO: classes e métodos  Um método é uma abstração procedimental: operações que atuam sobre dados/argumentos  Métodos (código) são compartilhados entre todos os objetos de uma classe 20 Personagem nome: String; idade: Int; sexo: String lista() p1: Personagem nome: “Ana Terra”; idade: 20; sexo: “feminino p2: Personagem nome: “Rodrigo”; idade: 35; sexo: “masculino void lista () { imprime(nome); imprime(idade); imprime(sexo); }
    •  21 Objetos e mensagens A interação entre objetos, ou seja, a evolução do programa, se dá através de mensagens trocadas através da interface (ou protocolo) especificado para o objeto pela sua classe. Interface: conjunto de serviços oferecidos por um objeto Análogo a uma chamada de função Mensagem: ativação de um método em um objeto
    •  22 Objetos e mensagens Todos os objetos de uma mesma classe possuem a mesma interface e aplicam o mesmo método em resposta a uma mensagem idêntica. O valor retornado pode, no entanto, variar em função dos valores dos atributos mantidos por cada objeto. Interface: conjunto de serviços oferecidos por um objeto Análogo a uma chamada de função Mensagem: ativação de um método em um objeto
    • Objetos e mensagens  Cada mensagem é dirigida a um objeto e provoca a execução de um método sobre os dados particulares do objeto (invocação parametrizada)  O mesmo método pode ser executado sobre os dados de diferentes objetos instanciados a partir da mesma classe 23 p1: Personagem nome: “Ana Terra”; idade: 20; sexo: “feminino p2: Personagem nome: “Rodrigo”; idade: 35; sexo: “masculino Ana Terra 20 Feminino Rodrigo 35 masculino p1.lista() p2.lista()
    •   Um módulo está encapsulado se os clientes são restritos pela linguagem a fazer acesso ao módulo somente através de sua interface externa;  Public e Private;  Heranças  Protect(acesso a classes derivadas); 24 Encapsulamento
    • Classes: especialização/generalização  Classes podem ser usadas para gerar outras classes mais especializadas  Especialização: adição e redefinição de propriedades 25 Pós-graduaçãoPós-graduaçãoGraduaçãoGraduação ESTUDANTEESTUDANTE HIERAQUIA DE CLASSES GENERALIZAÇÃO ESPECIALIZAÇÃO
    •   (80’s) Reutilização de SW = + produtividade;  Unidades a serem reutilizadas: tipos de dados abstratos, encapsulamentos e controles de acesso;  Reutilização de TAD: exige modificação;  Qual seria a solução?  Se um TAD puder herdar os dados e as funcionalidades de algum tipo existente, e tb for possível incluir novas funcionalidades?  Herança: derivar novas classes a partir de outras já existentes através de um processo de refinamento. 26 Herança
    •  Herança: identificar classes que possuem propriedades e comportamentos similares  Exemplos: Ator é-uma Pessoa, Aluno é-uma Pessoa, Cliente é uma Pessoa  Base da herança: propriedades comuns (gerais)  propriedades comuns são transmitidas a descendentes  descendentes podem adicionar/alterar propriedades  Estabelecem hierarquias de classes  Exemplo: Personagem é-um Ator que é-uma Pessoa  Reduzem a quantidade de código  aproveitar código (dados e operações)  programação por diferença 27 Herança(Cont)
    •  Exemplos de relacionamento de Herança 28 Pessoa nome dataNasc Ator contrato Aluno numMatric curso Classe Base Superclasse Tipo Classe Derivada Subclasse Subtipo
    • Implementação de Herança:Java 29 class Pessoa { String nome; int dia, mês, ano; // demais membros} class Ator extends Pessoa { String contrato ; // demais membros} class Aluno extends Pessoa{ String num_matric, curso; // demais membros} Pessoa nome dataNasc Ator contrato Aluno numMatric curso
    •  30 Herança de propriedades: Java Subclasse herda  Membros públicos e protegidos  Membros sem atributo de acesso, do mesmo pacote Subclasse NÃO herda  Membros privativos  Construtores  Métodos de mesma assinatura (redefine)  Variáveis de mesmo nome (esconde) Importante: Herança simples=única classe
    •   Diferentes tipos de objetos podem responder a uma mesma mensagem de maneiras diferentes  Ex: Método Imprime() [ Documento cheque, fotografia;]  Dizemos que imprime() é um método polimórfico pois ele é implementado diferentemente por diferentes tipos de objetos; 31 Polimorfismo
    •   Redefinição (overriding): mesma função mas comportamentos diferentes.  Sobrecarga(overloading): nome de uma função usado mais de uma vez com diferentes tipos de parâmetros.Ex: operação soma com dois parâmetros reais e outra com parâmetros inteiros. 32 Formas de Polimorfismos
    •  Redefinição de função 33 Capacidade de um objeto responder com diferentes comportamentos uma mesma solicitação Exemplo: Suponha um método que receba um objeto ContaEmBanco e que neste método seja solicitado a ativação do método Sacar. O comportamento do objeto vai ser diferente em função do objeto real: 1 - ContaEspecial permite que o saldo fique negativo 2 - ContaComum não O comportamento do objeto será relativo ao objeto real a qual é feita a referência
    •  Sobrecarga de função 34 Atribui a um único operador a capacidade de agir de diferentes formas em função dos parâmetros recebidos Exemplo: Na classe ContaEmBanco, o método Depositar possui duas implementações diferentes: 1 - uma para depósitos em dinheiro 2 - outra para depósitos em cheque O serviço escolhido depende do parâmetro enviado junto à ativação do serviço (cheque ou dinheiro)
    •  Ligação dinâmica 35 A determinação do serviço chamado somente pode ser realizada em tempo de execução. Especialização + Polimorfismo Exemplo: Tio Patinhas possui uma ContaEspecial. Donald possui uma ContaComum. Ambos possuem ContaEmBanco. Ambos podem Sacar ou ConsultarSaldo, mas a execução do serviço não é a mesma nos dois tipos de conta.
    •  Construtor 36 Todo objeto criado é inicializado Valores são atribuídos aos dados mantidos pelo objeto durante sua fase de construção Classe ContaEmBanco O método Abrir faz as vezes de um inicializador dos objetos ContaEmBanco. Esta inicialização é parte integrante da fase de construção do objeto: uma mesma conta não será aberta diversas vezes !!! Exemplo:
    •  Construtor 37 Todo objeto criado é inicializado Valores são atribuídos aos dados mantidos pelo objeto durante sua fase de construção Classe ContaEmBanco Exemplo: Encerrar( ) Sacar( valor ) Depositar( valor_cheque ) Depositar( valor_dinheiro ) ContaEmBanco( _Nome, _prof, … )
    •  Finalizador 38 De forma análoga, objeto criado em um momento é finalizado Por exemplo, a área de dados alocada para um dado pode ser liberada Classe ContaEmBanco O método Encerrar faz as vezes de um finalizador dos objetos ContaEmBanco. Nesta finalização, as informações correspondentes ao objeto conta são destruídas Exemplo:
    •  39 Correpondência de Termos objeto ~ variável dinâmica (pointer) classe ~ tipo mensagem ~ chamada de subrotina mé todo ~ subrotina/funç ão heranç a polimorfismo
    •   concepção do modelo  objetos encapsulados  objetos se comunicando por mensagens  definição de classes  objetos com caraterísticas idênticas  contrução da hierarquia de classes  generalização ou especialização  descrição das classes na LOO  desenvolvimento de aplicações programa = classes (declarações de vars + rotinas) instanciação (alocação de memória para ponteiros) mensagens (chamadas asubrotinas) 40 Desenvolvimento de Programas OO
    •  aprovada em elevado número de aplicações  em todos países industrializados  em todas áreas de aplicação  utilizada em  aplicações tradicionais de sistemas de informação: bancário, processamento comercial  aplicações de tempo real: controle de processos, telecomunicações  projeto assistido por computador: CAD, CASE, CAM  adotada como base em áreas de pesquisa  arquitetura de computadores e sistemas operacionais  sistemas especialistas e bases de conhecimento  banco de dados, especificação e linguagens 41 Sinais de maturidade da tecnologia OO
    •  requer  treinamento  escolha de novo método de desenvolvimento  ferramentas, ambiente de programação  banco de dados, sistema operacional  influência  gerência, produção, teste, instalação, venda  convencer corpo gerencial e técnico 42 Adoção da Tecnologia OO
    •  Exercício 43 Definir uma estrutura de classes na qual seja possível construir diferentes estruturas de lista: - Pilha - - Fila - - Deque - Definir uma estrutura de classes na qual seja possível construir diferentes estruturas de lista: - Pilha - - Fila - - Deque -
    •  Exercício 44 Pilha de tarefas Lista de processos Lista de notas Relação de TCs Classe Lista •Inserir •Retirar •Listar •NúmeroElementos
    •  Exercício 45 Classe Lista •Inserir •Retirar •Listar •NbElementos Classe Pilha •Inserir •Retirar •Listar Classe Fila •Inserir •Retirar •Listar Deque •Inserir •Retirar ... Nelemento topo, base prim, ult topo, base prim, ult
    •  Exercício 46 Classe Lista •Inserir •Retirar •Listar •NbElementos Classe Pilha •Inserir •Retirar •Listar Classe Fila •Inserir •Retirar •Listar Deque •Inserir •Retirar ... início, fimNelemento