1 / 27

Introdução ao Paradigma de Programação Orientada a Objetos

Introdução ao Paradigma de Programação Orientada a Objetos. Prof. Antonio Mendes da Silva Filho . Orientação a Objetos. Introdução Propósito da Programação OO Características das Linguagens OO Sugestões de leitura. Introdução a OO.

sawyer
Download Presentation

Introdução ao Paradigma de Programação Orientada a Objetos

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. Introdução ao Paradigma de Programação Orientada a Objetos Prof. Antonio Mendes da Silva Filho

  2. Orientação a Objetos • Introdução • Propósito da Programação OO • Características das Linguagens OO • Sugestões de leitura

  3. Introdução a OO • POO é uma das principais inovações no desenvolvimento de software da última década. • Complexidade: Principal problema na elaboração de programas. • Quão maior a complexidade, maior a possibilidade de haver erros. • Erros de software têm elevado custo de correção • Podem causar situações de falhas operacionais; • Podem colocar vidas em perigo.

  4. Introdução a OO (cont.) • POO compreende uma nova abordagem de conceber e construir programas. • POO permite lidar com a complexidade. • POO facilita a manutenção. • POO possibilita a obtenção de programas mais confiáveis.

  5. Propósito da POO • POO foi desenvolvida devido às limitações existentes nas abordagens anteriores. • Projeto e programação estruturada. • Para programas pequenos, não há necessidade de princípio organizacional. • À medida que cresce o tamanho dos programas, torna-se difícil compreender programas que excedam a centenas de linhas de código. • Questão da complexidade

  6. Linguagens Procedimentais • Exemplos de linguagens procedimentais: • Fortran, Pascal e C • Um programa numa linguagem procedimental é uma lista de instruções. • O programador cria um conjunto de instruções e o computador as executa. • Funções, em linguagens procedimentais, servem para ‘modularizar’ os programas. • Módulos consiste de um grupo de funções.

  7. Programação Estruturada • Divisão de um programa em funções e módulos constitui um dos fundamentos da programação estruturada. • Função: mecanismo usado para `quebrar’ (i.e. dividir) o programa em unidades menores. • Tornar os programas mais compreensíveis • Disciplina de programação que tem influenciado a organização de programas há vários anos.

  8. Problemas na Programação Estruturada • As linguagens procedimentais colocam ênfase na função • Ler dados, processar, checar existência de erros, mostrar resultados, ... • Parte importante na solução de problemas computacionais: DADOS

  9. Problemas na Programação Estruturada • Em linguagens procedimentais: • Variáveis locais são usadas apenas dentro do escopo da função onde são declaradas. • Variáveis locais não são úteis para dados que devem ser acessados por muitas e diferentes funções. • Vide slide 10. • Em outro contexto • Se muitas funções tem acesso a um conjunto de dados, então qualquer modificação nos dados requer modificações em todas as funções. Vide slide 11. • Tornar-se-á difícil fazer a manutenção correta de tais funções.

  10. Relação entre variáveis globais e locais

  11. Relação entre funções e dados em programas procedimentais

  12. Problemas na Programação Estruturada • Programas em linguagens procedimentais são mais difíceis de serem projetados • Funções e estruturas de dados não modelam o mundo real muito bem. • Mais difícil oferecer extensibilidade a linguagem procedimental, i.e.: • Adicionar, manipular e fazer a manutenção de novos tipos de dados.

  13. O que é necessário? • Uma forma de restringir o acesso aos dados • Esconder os dados de todas, exceto algumas poucas funções `críticas’ • Benefícios resultantes: • Proteção aos dados • Simplificará a manutenção

  14. Abordagem orientada a objetos • Introdução da POO • Linguagens OO combinam numa única entidade (objeto) dados e funções que atuam sobre esses dados. • Funções de um objeto oferecem uma única forma de acesso a seus dados. • Em C++, funções membro • Em Java, métodos

  15. Abordagem OO (2) • Num programa OO, se você precisar ler os dados de um objeto, então: • Você chama a função daquele objeto • A função ler os dados e retorna os valores a você • Os dados ficam `escondidos’, i.e.: • POO oferece suporte a ocultação de dados ou data hiding; • Os dados ficam seguros de qualquer alteração `acidental’; • Dados e funções ficam `encapsulados’ em uma única entidade, denominada de objeto.

  16. Abordagem OO (3) • Para acesar os dados de um objeto, você precisa saber quais métodos/funções interage com ele. • Isto simplifica escrita, depuração e manutenção de programas. • Um programa numa linguagem OO consiste de vários objetos, comunicando-se entre si, i.e.: • Através de trocas de mensagens (Java) • Através da chamada de funções membro de outro objeto (C++) • Vide slide 17.

  17. Abordagem OO (4)

  18. Características das Linguagens OO • Modelagem em termos de objetos • Exemplos de objetos • Componentes elétricos, automóveis numa simulação de fluxo de tráfego • Janelas, menus, objetos gráficos, ... • Pontos no plano, tempo, ...

  19. Classes • Objetos são membros de classes • Classe ser como um padrão, modelo ou template • Classe especifica quais dados e funções pertencerão aquela classe. • Definir uma classe não cria qualquer objeto, assim como a simples existência de um tipo de dado não cria quaisquer variáveis.

  20. Classes (2) • Coleção de objetos similares • Classe de jogadores de futebol: • Pelé • Ronaldinho • Romário • Note que não existe uma pessoa chamada `jogador de futebol’ • Todavia, pessoas com nomes específicos são membros desta classe SE possuem determinadas características.

  21. Herança • Classes podem ser divididas em subclasses como, por exemplo: • A classe dos animais é dividida em mamíferos, anfíbios, insetos, aves, ... • A classe dos veículos é dividida em carros de passeio, caminhões, ônibus, motocicletas, ... • Princípio da herança • Classes derivadas compartilham características comuns com a classe da qual ela é derivada. Vide slide 22. • Reduz o tamanho do programa e aumenta a clareza do programa.

  22. Noção de herança

  23. Reusabilidade • Depois que uma classe tenha sido criada, escrita e testada, ela pode ser distribuída para vários programadores e reutilizada. • Similar a forma na qual uma biblioteca de funções numa linguagem procedimental pode ser incorporada em diferentes programas. • Conceito de extensão de classe (reusabilidade da classe), i.e., adicionar novas características à classe já existente.

  24. Criação de novos tipos • Exemplo: posição2 = posição + origem • As variáveis acima representam coordenadas • Representam entidades reais de modo mais claro e direto, i.e. suporte a compreensibilidade.

  25. Polimorfismo • No exemplo anterior: posição2 = posição + origem • Os operadores = (igual) e + (soma) usados na expressão acima não atuam de maneira similar com os tipos predefinidos da linguagem OO como um `int’. • Usar operadores ou funções de formas diferentes, dependente sobre o que eles estão operando, é denominado de polimorfismo.

  26. Sugestões de leitura • Vide artigo sobre POO no site da Revista Espaço Acadêmico em www.espacoacademico.com.br/035/35amsf.htm • J. Rumbaugh et al, Modelagem e Projetos Baseados em Objetos com UML 2, Ed. Campus, 2002;

  27. Sugestões de leitura (2) • K. Arnold and J. Gosling, The Java Programming Language, Addison-Wesley, 1996. • H. M. Deitel and P. J. Deitel, Java – How to Program, Prentice Hall, 3rd Edition, 1999. • http://java.sun.com

More Related