1 / 112

Profs.: José Eustáquio Rangel de Queiroz rangel@dsc.ufcg.br, rangeldequeiroz@gmail

Técnicas de Programação. Introdução à. Orientação a Objetos. Profs.: José Eustáquio Rangel de Queiroz rangel@dsc.ufcg.edu.br, rangeldequeiroz@gmail.com. Carga Horária: 60 horas. Introdução à POO I. Considerações Iniciais I

alyssa
Download Presentation

Profs.: José Eustáquio Rangel de Queiroz rangel@dsc.ufcg.br, rangeldequeiroz@gmail

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Técnicas de Programação Introdução à Orientação a Objetos Profs.:José Eustáquio Rangel de Queiroz rangel@dsc.ufcg.edu.br, rangeldequeiroz@gmail.com Carga Horária:60 horas

  2. Introdução à POO I • Considerações Iniciais I • Linguagens Orientadas a Objetos (LOO)  desde a década de 1960 • Crescimento sem paralelo no uso e na aceitação de tecnologias de objeto por todo o setor de software  última década • Sucessos recentes  Java, CORBA, C++ • Programação Orientada a Objetos (POO) • Estágio na evolução natural do desenvolvimento de software

  3. Introdução à POO II • Considerações Iniciais II • Orientação a Objetos (OO) • Termo genérico que inclui qualquer estilo de desenvolvimento fundamentado no conceito de objeto • Objeto • Entidade que exibe características e comportamentos

  4. Introdução à POO III • Precursores da POO I • Linguagens Procedurais (e.g. FORTRAN, ALGOL) • Redução de programas a procedimentos refinados para processamento de dados • Procedimentos refinados  Definição da estrutura global do programa • Execução de programas procedurais  Chamadas seqüenciais a procedimentos • Finalização de um programa procedural  Término da chamada à lista de procedimentos

  5. Introdução à POO IV • Precursores da POO II • Linguagens Procedurais • Funções menores não são apenas mais fáceis de entender: são também mais fáceis de depurar • Programação procedural limita a reutilização do código • Produção freqüente de código spaghetti

  6. Introdução à POO V • Precursores da POO III • Linguagens Procedurais • Inexistência de encapsulação (dados e procedimentos separados) exige que cada procedimento “saiba” manipular adequadamente os dados • Alterações na representação dos dados exige alterações em todas as partes do código que acessem os dados • Uma pequena alteração nos dados  Cascata de alterações por todo o programa • Manutenção difícil e onerosa

  7. Introdução à POO VI • Precursores da POO IV • Programação Modular (e.g. Modula2) • Melhoria de deficiências da programação procedural • Divisão dos programas em vários componentes ou módulos constituintes • Combinação de dados e procedimentos nos módulos • Partes de um programa utilizam um módulo exercitando sua interface

  8. Introdução à POO VII • Precursores da POO V • Programação Modular (e.g. Modula2) • Ocultação de dados internos de um módulo do restante do programa • Introdução da idéia de estado  Módulos contêm informações de estados que podem ser alterados quando conveniente • Estado de um objeto  Significado combinado das variáveis internas do objeto • Variável interna  Valor mantido dentro de um objeto

  9. Introdução à POO VIII • Precursores da POO VI • Programação Modular (e.g. Modula2) • Deficiência 1  Módulos não extensíveis • Impossibilidade de alterações incrementais em um módulo sem abrir o código “à força” e executar diretamente as alterações necessárias • Deficiência 2  Módulos não podem se basear em outros • Impossibilidade de compartilhamento de tipos entre módulos

  10. Introdução à POO IX • Precursores da POO VII • Linguagens Procedurais e Modulares • Dados estruturados e não estruturados têm um tipo • Tipo Melhor visualizado como o formato da memória para os dados • Linguagens “fortemente tipadas” • Exigência de que cada objeto tenha um tipo específico e definido • Impossibilidade de extensão de tipos para a criação de outro(s) tipo(s), exceto através do estilo denominado agregação

  11. Introdução à POO X • Precursores da POO VIII • Linguagens Procedurais e Modulares • Exemplo em C typedef struct { int a; int b; } TipoBase; typedef struct { TipoBase Base; int c; } TipoDerivado; TipoDerivado baseia-se em TipoBase PORÉM Uma estrutura deTipoDerivado não pode ser tratada diretamente como uma estrutura de TipoBase

  12. Introdução à POO XI • Precursores da POO IX • Linguagens Procedurais e Modulares • Exemplo em C (Conclusão) • Inconveniente  Código com muitos blocos case e if/else para a manipulação adequada de cada bloco encontrado • Programação Modular • Também é um híbrido procedural  Divisão do programa em vários procedimentos • Ao invés de atuar sobre dados brutos, os procedimentos manipulam módulos

  13. Introdução à POO XII • Programação Orientada a Objetos I • Passo lógico que sucede a programação modular • Estruturação do programa  Divisão em vários objetos de alto nível • Cada objeto modela um aspecto do problema a ser solucionado • Objetos interagem para orientar o fluxo global do programa • Programa OO  Simulação fiel do problema a ser resolvido

  14. Carrinho de compras Cupom Caixa Itens Introdução à POO XIII • Programação Orientada a Objetos II • Exemplo 01 I - Implementação de um carrinho de compras online • Objetos • Item • Carrinho de compras • Cupom • Caixa

  15. Introdução à POO XIV • Programação Orientada a Objetos III • Exemplo 01 II - Implementação de um carrinho de compras online • Interação de objetos • Caixa Item • Item Carrinho de compras • Carrinho de compras Caixa • Caixa Cupom Verificar preço Adicionar ao Levar ao Produzir

  16. Introdução à POO XV • Programação Orientada a Objetos IV • Definição de um programa em termos de objetos • Modo profundo de visualizar o software • Objetos  Comportamentos • Visualização de objetos em nível conceitual  Desvio da observação de como as coisas são feitas (implementação) • Visualização dos programas em termos naturais e reais • Modelagem dos programas  Substantivos, verbos e adjetivos do domínio real do problema

  17. Introdução à POO XVI • Programação Orientada a Objetos V • Definição de um programa em termos de objetos • Implementação • Definição de como algo deve ser executado • Domínio • Espaço no qual reside um problema a ser resolvido

  18. Introdução à POO XVII • O que é Orientação a Objetos I tipo ou molde Classe instância ou exemplar Objeto comunicação entre objetos Mensagem

  19. Joseana Automóvel Maçãs Casa Mundo real Modelo Automóvel Joseana dirige Casa Maçãs mora na come Introdução à POO XVIII • O que é Orientação a Objetos II

  20. Introdução à POO XIX • Classe • Espécie de “gabarito” para muitos objetos • Espécie de descritor da estruturação interna dos objetos

  21. Introdução à POO XX • Objeto • Entidades do mundo real • Instância • Objeto criado a partir de uma classe • Classe Descrição da estrutura da instância • Estado da instância  Definição a partir das operações realizadas sobre ela

  22. Caneta Classificação Instanciação Caneta2 Caneta1 Caneta3 Caneta4 Introdução à POO XXI • Instanciação de Objetos • Geração de novos exemplares a partir de uma descrição abstrata de um objeto genérico • Objetos são instâncias de uma classe

  23. veículos Ferrari IDN8810 veículo Marca Placa objeto1 instâncias ler_placa Fiat Uno IAS3333 classe objeto2 Introdução à POO XXII

  24. Introdução à POO XXIII • Classes • Agrupamentos de objetos (computacionais) com propriedade em comum, passíveis de realização das mesmas ações • Em geral, objetos de uma subclasse exibem as propriedades e executam as ações dos objetos de uma superclasse, além de exibirem algumas propriedades e reali9zarem algumas ações adicionais

  25. Introdução à POO XXIV • Propriedades e Atributos • Objetos do mundo real exibem propriedades, às quais estão associadas valores

  26. Introdução à POO XXV • Mensagens e Métodos • Objetos exibem determinados comportamentos (executam determinadas operações) ao receberem estímulos de outros objetos • Objetos requisitam ações de outros objetos a partir de mensagens

  27. Introdução à POO XXVI • Conteúdo de uma mensagem • Nome do objeto receptor • Nome da mensagem • Argumentos (opcional) que podem ser objetos • Mensagem • Solicitação feita por um objeto a outro objeto, a fim de que seja executada uma rotina denominada método

  28. Introdução à POO XXVII • Métodos • Responsáveis pelo acesso ou alteração dos atributos de um objeto • Atributos de um objeto podem mudar de acordo com o tempo • Mudança de estado do objeto

  29. Atributos • modo de operação /* texto ou gráfico */ • dimensão horizontal • dimensão vertical • paleta de cores • cor atual Métodos • modo texto ( ) • modo gráfico ( ) • fecha modo gráfico ( ) • muda cor ( ) • escreve caracter ( ) • coloca pixel ( ) • muda dimensões (x,y) Introdução à POO XXVIII • Exemplo 02 - Atributos e Métodos da Tela de um Monitor

  30. Introdução à POO XXIX • OO x Abstração • Representação mais intuitiva de objetos do mundo real

  31. Introdução à POO XXX • OO x Programação • Atuação do programador sobre componentes já desenvolvidos e testados • Redução da complexidade • Elevação do grau de abstração

  32. Introdução à POO XXXI • Encapsulação • Termo formal relativo ao “empacotamento” de dados de um objeto, de modo que o acesso só ocorra através dos métodos do referido objeto Objeto Atributos Métodos que acessam os atributos (dados)

  33. Introdução à POO XXXII • Encapsulação • Com a encapsulação, o objeto se comporta como uma caixa-preta, aumentando a abstração • Encapsular é esconder como as coisas funcionam (data hiding) por trás de uma interface externa Joseana dirigeum automóvel usando pedais, alavanca de marchas e volante. Aspectos relativos ao motor lhe são ocultados

  34. Introdução à POO XXXIII • Herança • Uma classe pode também resumir elementos comuns de outras classes • Superclasse e subclasse superclasse de Mamífero subclasse de Primata Felino Homem Gorila Gato Onça

  35. Introdução à POO XXXIV • Herança • Atributos • Cor • Peso • # de Pernas • Localização Mobília superclasse de subclasse de Cadeira Mesa • Objeto • Preto • 5 Kg • 4 • Sala 512 • Estofado • Atributos • Tipo de Assento • Objeto • Marrom • 17 Kg • 1 • Sala 512 •  1,5 m • Atributos • Dimensões

  36. Introdução à POO XXXV • Polimorfismo • Nome dado a capacidade que objetos diferentes têm de responder a uma mesma mensagem • Mesmo nome (mensagem), formas de execução diferentes, próprias de cada objeto • Com o polimorfismo o usuário pode enviar uma mensagem genérica e abandonar detalhes sobre a exata implementação sobre o objeto receptor

  37. Introdução à POO XXXVI • Polimorfismo Gravar

  38. bel Atributos a2 hj75 Atributos Atributos xz7 bg2 Atributos Atributos Introdução à POO XXXVII • Orientação a Objetos • Modo de estruturação do software sob a forma de uma coletânea de objetos discretos que incorporam: • Estrutura de Dados • Comportamento Associado

  39. Introdução à POO XXXVIII • Orientação a Objetos • O paradigma da orientação a objetos representa uma mudança radical na maneira de se desenvolver sistemas computacionais, permitindo um melhor gerenciamento da complexidade destes sistemas.

  40. Introdução à POO XXXIX • Orientação a Objetos • Na orientação a objetos não há separação dos dados e das funções que manipulam estes dados Desenvolvimento OO Desenvolvimento Estruturado

  41. Introdução à POO XL • Orientação a Objetos • Conseqüência direta: • Minimização do “gap” semântico entre o sistema computacional e a aplicação real • Justifica parte das vantagens atribuídas à OO

  42. Introdução à POO XLI Programação Orientada a Objetos Programação Estruturada Métodos Procedimentos e funções Instâncias de variáveis Variáveis Mensagens Chamadas a procedimentos e funções Classes Tipos de dados definidos pelo usuário Herança - Polimorfismo -

  43. Introdução à POO XLII • Orientação a Objetos • Objetivo: • Gerar programas que sejam: • Legíveis e de fácil compreensão • Reutilizáveis • De fácil manutenção • Obtidos de forma produtiva

  44. Introdução à POO XLIII • Linguagens de Programação Orientadas a Objeto • Mais familiares: • Java • C++ • Object Pascal • Menos familiares • SmallTalk • Eiffel

  45. Introdução à POO XLIV • Paradigma Estruturado X Orientado a Objetos Módulo Pai Dado: struct{ int a;.... Paradigma Orientado a Objetos Módulo 1 Módulo 2 . . . func1(Dado,...{ func2(Dado,...{ } class Dado{ } int a; .... Dado public: Process func1 - (Modulo 1) func1(... func2 - (Modulo 2) func2(... func... }

  46. Introdução à POO XLV • POO C++ • Declaração de Classes • Em C++, as classes permitem ao programador definir novos tipos de dados • As classes podem ser declaradas pelas palavras-chave STRUCT, UNION e CLASS • As estruturas em C++ podem ter membros de dados e de função • As classes (propriamente ditas) tem membros de dados (variáveis de instância) e de membros de função

  47. Introdução à POO XLVI • POO C++ • Declaração de Classes • Uma instância de estrutura ou união é dita uma variável • Uma instância de classe é dita um objeto. • Ou seja, um objeto é uma variável do tipo classe

  48. Introdução à POO XLVII • POO C++ • Um programa que utiliza uma interface controladora de um motor elétrico provavelmente definiria a classe motor • Os atributos desta classe seriam: temperatura, velocidade, tensão aplicada • Este provavelmente seriam representados na classe por tipos como float ou long • As funções membro desta classe seriam funções para alterar a velocidade, ler a temperatura, etc.

  49. Introdução à POO XLVIII • POO C++ • Encapsulação • Definição de classe class <Nome da classe> { }; • Objetos ou Instâncias • Métodos e Atributos • Visibilidade • Associação e Agregação • Construtores e Destrutores

  50. Introdução à POO IL • POO C++ • Um objeto ou instância de uma classe é a criação de uma ‘variável” ou objeto da classe • Instância Estática • Chamada de método ou atributo • <objeto> . <nome do método>;

More Related