Aula 1 do Curso de Fundamentos de Programação Orientada a Objetos

13,159 views
12,691 views

Published on

Aula 1 do Curso de Fundamentos de Programação Orientada a Objetos

8 Comments
22 Likes
Statistics
Notes
  • BOA NOITE SERIA POSSIVEL ENVIAR POR EMAIL? NAYARA_ROCK3@HOTMAIL.COM
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Boa Tarde , gostei muito do material por favor peço para que envie o ficheiro para Samuelbiezinho@gmail.com
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Não está disponível p/ download ? Achei que a idéia era slideSHARE.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Boa tarde.
    Seria possível enviar o material em PDF?
    deneise@ig.com.br
    Obrigada
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Olá, gostei muito desse material e queria utilizá-lo em minhas aulas. (Aulas de 1 a 5).
    Sou professor do IFPI e prometo deixar como está para ressaltar sua autoria. email: helcio.soares@gmail.com
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total views
13,159
On SlideShare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
0
Comments
8
Likes
22
Embeds 0
No embeds

No notes for slide

Aula 1 do Curso de Fundamentos de Programação Orientada a Objetos

  1. 1. Fundamentos de Programação Orientada a Objetos Série de Posts: jogano10.com Eder Ignatowicz - Unisal
  2. 2. Objetivo do Curso É esperado que ao final do curso o aluno seja capaz de empregar conceitos de programação orientada a objetos na análise e resolução de problemas diversos.
  3. 3. Agenda Básica do Curso Introdução a Programação Orientada a Objetos Orientação a objetos básica Pacote Encapsulamento Herança Polimorfismo Classes Abstratas Interfaces
  4. 4. Bibliografia Artigos Selecionados; Utilizando UML e Padrões Craig Larman; SILVEIRA, G.; SILVEIRA, P. & LOPES, S. Apostila Java e Orientação a Objetos. Caelum, SIERRA, K. & BATES, B. Use a Cabeça! Java. Alta Books. DEITEL, H. M. & DEITEL, P.J. Java - Como Programar. Prentice-Hall. ARNOLD, K. & GOSLING J. A linguagem de programação Java. Bookman, 4ª Edição, Philip Calçado (www.fragmental.com.br)
  5. 5. Introdução a Programação Orientada a Objetos
  6. 6. Antes, um pouquinho de história... Surgimento da Eng. de Software (60)para resolver os problemas gerados pela crise do software. As várias técnicas desenvolvidas nos anos 70 e 80 não resolveram o problema de produtividade e qualidade nos softwares.
  7. 7. Lições da década de 80.  Requisitos do usuário são mais importantes;  Funções e dados tem grande importância, porém não podem estar separados.
  8. 8. Realidade Atual... Realidade atual  Sistemas de alta complexidade;  Ferramentas de desenvolvimento drasticamente diferentes de 20 anos atrás.  Sistemas maiores, mais complexos e mais voláteis.A mudança para alcançar aqualidade e produtividade está na...
  9. 9.  REUTILIZAÇÃO !!!!
  10. 10. Introdução a Programação Orientada a Objetos Afinal, o que é OO ?  É um paradigma de análise, projeto e programação de sistemas de software baseado na composição e interação entre diversas unidades de software chamadas de objetos. E um objeto o que é?
  11. 11. O que é um objeto ? “Coisa” Física “Coisa” Não-Física
  12. 12. E objetos computacionais ? Objetos que se encontram dentro de sistemas de computador; São abstrações do mundo real; Objetos computacionais são estruturas de programas que contém as informações e os comportamentos que representam um objeto dentro do sistema.
  13. 13. Análise e Programação OO. Análise orientada a objetos  Consiste em definir quais objetos fazem parte de um sistema e a maneira como se comportam. Programação orientada a objetos  Consiste em utilizar objetos computacionais para implementar as funcionalidades de um sistema.
  14. 14. Na prática... Flexibilidade a mudanças !!!! Mudanças nos processos de negócio do usuário:  Década de 40: 10 anos  Década de 60-70: 5 anos  Década de 90: 2 anos  Atualmente: 6 meses
  15. 15. Histórico A OO surgiu no final da década de 60,quando dois cientistas dinamarqueses criaram a linguagem Simula (Simulation Language); O termo Programação Orientada a Objeto (POO) foi introduzido com a linguagem Smalltalk (1983); FIM DOS ANOS 80 :Paradigma de Orientação a Objetos  Abordagem poderosa e prática para o desenvolvimento de software
  16. 16. Histórico Linguagens orientadas a objetos – Smalltalk (1972), Ada (1983), Eiffel (~1985) – Object Pascal (1986), Common Lisp (1986), C++ (1986) – Java (~1990), Python (~1990), Perl 5 (2005)
  17. 17. Vantagens e Desvantagens OO P.OO utiliza conceitos que aprendemos na infância;  Objetos e atributos, todos e partes, classes e membros;  Porque demoramos tanto para aplicar estes conceitos ? Programar OO não depende de linguagem mas sim de mudança de mentalidade e paradigma... PARADIGMA???
  18. 18. Paradigma Paradigma (do grego parádeigma) literalmente modelo, é a representação de um padrão a ser seguido. Cada paradigma representa uma forma de propor uma solução a um dado problema.
  19. 19. Vantagens e Desvantagens OO “O navio atraca no porto e descarrega sua carga.” Como resolver este problema estruturalmente?  Ênfase na ação/procedimento; E orientado a objetos???
  20. 20. Vantagens e Desvantagens OO Mudança na abordagem...  Pense nos objetos ( navio, porto, carga);  Defina-os e seu comportamento;  Defina como estes objetos se relacionam (ou trocam mensagens) A grosso modo:  Análise estruturada: Verbos;  Análise orientada a objetos: Substantivos
  21. 21. Vantagens OO REUTILIZAÇÃO !!!!  Padronização adotada por toda indústria moderna  Peças padrões são mais baratas;  São mais confiáveis;  Geralmente são mais fáceis de serem consertadas ou substituídas.  E na computação????
  22. 22. Vantagens OO REUTILIZAÇÃO na computação:  Existência de uma Biblioteca e de um Sistema de Catálogo;  Facilidade para documentação;  Sistemática rigorosa para testes;  Novas técnicas para especificação de sistemas tendo em vista a reutilização de módulos;  Linguagem, ferramentas e ambientes de desenvolvimento que estimulem a adoção, em larga escala, de tais métodos dentro das empresas;
  23. 23. Vantagens OO Possibilidade do desenvolvedor trabalhar em um nível mais alto de abstração; Menor custo; Possibilidade de construir sistemas mais complexos; E além disto...
  24. 24. Vantagens OO ECONOMIA DE DINHEIRO !!!!
  25. 25. Desvantagens OO Complexidade no aprendizado para desenvolvedores de linguagens estruturadas; Maior esforço na modelagem de um sistema OO do que estruturado (porém menor esforço de codificação, sendo uma vantagem); Funcionalidades limitadas por interface, quando estas estão incompletas (problemas na modelagem); Dependência de funcionalidades já implementadas em superclasses no caso da herança, implementações espalhadas em classes diferentes;
  26. 26. Conceitos Básicos OO
  27. 27. Conceitos Básicos Abstração; Encapsulamento; Objetos; Classes; Herança; Etc.
  28. 28. Abstração “Ato de separar um ou mais elementos de uma totalidade complexa (coisa,representação, fato), os quais só mentalmente podem ser separados” Ignorar aspectos não relevantes É a capacidade de focalizar o essencial e ignorar detalhes acidentais não relacionados com o objetivo estabelecido.
  29. 29. Abstração
  30. 30. Abstração – Exercício Motorista dirige um carro...
  31. 31. Encapsulamento Ocultar aspectos não relevantes Modo de utilização dos dados e métodos é diferente da prog. tradicional. Os dados e processos em uma única entidade. Um dos grande trunfo da POO em relação a prog. tradicional. Permite alterações sem afetar demais partes do sistema.
  32. 32. Encapsulamento Benefícios  Modularidade - (O código é independente de outros objetos)  Informações Privadas (um objeto tem uma interface pública que outros objetos podem utilizar. As informações do objeto são privadas)  [Information Hiding]
  33. 33. Encapsulamento
  34. 34. Objetos São elementos reais ou abstratos (de pensamento) que sofrem ou executam ações. Um objeto é qualquer indivíduo, lugar,evento, coisa, tela, relatório ou conceito que seja aplicável ao sistema. Objeto é uma entidade capaz de reter um estado (informação) e que oferece uma séria de operações (comportamentos) ou para examinar ou para afetar este estado.
  35. 35. Como é um objeto ? Apresenta características (Estado). Executa e sofre ações (Comportamento). Podem ser classificados por categorias ou classes. Interagem e agrupam-se formando sistemas (que podem ser considerados como objetos).
  36. 36. Objeto
  37. 37. Objeto Exemplos:  Coisas: Cadeira, Mesa, Telefone, Televisão, ...  Funções: Diretor, Funcionário, Professor, Cliente,...  Eventos: uma Festa, um Congresso, uma Aula, ...  Lugares: uma Cidade, uma Sala, um País, ....  Processos: uma Operação, um Procedimento, ...
  38. 38. Atributos É o conjunto de características que descrevem os objetos Atributos de uma pessoa: cor dos olhos, altura, peso, idade, sexo.. Quais são os atributos de uma conta corrente? Somente mudam através de agentes interno ou externos.
  39. 39. Atributos Os valores das propriedades de um objeto definem seu Estado.
  40. 40. Exercício Identificar pelo menos 5 objetos que pertencem ao domínio de problema:“Sala de Aula Unisal”
  41. 41. Métodos ou Serviços (Ações) São as tarefas que o objeto pode realizar As ações do objeto podem interagir com outros objetos Ou podem ser ações internas Quais são as ações de um cachorro?
  42. 42. Classes São os modelos a partir dos quais os objetos são criados (Ex: Planta Estrutural) Os modelos são agrupados em classes ou categorias por similaridade de finalidade As categorias estruturam-se hieraquicamente. Ex.: Pessoas–Clientes-Funcionarios, Animais-Aves- Canários
  43. 43. Classes Duas categorias de bichos: “Cães” e “Gatos”
  44. 44. Classe
  45. 45. Classe X Objeto "Classe" é um gabarito; "Objeto" é a concretização do gabarito.
  46. 46. Exercícios Como criar uma hierarquia de classes para mamíferos, primatas, felinos englobando características comuns? E a classe documentos?
  47. 47. Hierarquia de Classes
  48. 48. Herança Tudo aquilo que se herda; Aquilo que se transmite por hereditariedade (Ex: Características genéticas dos pais).
  49. 49. Herança Classes prontas podem ser usadas para escrever novos objetos (SuperClasse e SubClasses, Ancestrais e Descendentes) O programador só escreve o que muda Alterações nos ancestrais se propagam aos descendentes Menos bugs, mais produtividade
  50. 50. Herança Simples
  51. 51. Herança Múltipla
  52. 52. Instanciação É quando a classe produz um objeto, como se ela fosse um modelo para a criação de objetos. Objetos nada mais são do que classes instanciadas. É o que dá existência ao objeto. Cada objeto é uma instância de sua classe
  53. 53. Instanciação Fazendo uma analogia com a programação procedural. “A estrutura de uma tabela pode ser comparada com uma classe e cada novo registro seria um novo objeto instanciado.” Obs: Isto só vale para efeitos de comparação, pois classe também possuem a definição dos métodos.
  54. 54. Classes Puras ou Abstratas São aquelas que nunca serão instanciadas diretamente. Servem de apoio para o processo de estruturação. Exemplo:
  55. 55. Exercícios Identificar os objetos da Sala de Aula Agrupar os objetos em classe conforme suas caracteristicas
  56. 56. Tipos de Estruturas Visualizar Domínio e Complexidade do problema em estudo. Tipos:  Generalização-Especialização  Todo-Parte
  57. 57. Generalização-Especialização
  58. 58. Todo-Parte
  59. 59. Exercícios Identificar as possíveis estruturas existentes no exercício da Sala de Aula. Identificar e graficar 5 exemplos de estruturas do tipo Generalização-Especialização. Identificar e graficar 5 exemplos de estruturas do tipo Todo-Parte
  60. 60. Relacionamentos entre objetos Conexões de Ocorrência  Quando um atributo de um objeto contém uma referência a outro objeto. Conexões de Mensagens  Quando um objeto ativa um método de outro objeto.
  61. 61. Conexões de Ocorrência Cardinalidade Conexões de Muitos para Muitos.
  62. 62. Conexões de Mensagens Métodos disparados no objeto recebedor Ocorre entre objetos Entre classes somente quando um novo objeto é criado. Pode ou não retornar alguma resposta.
  63. 63. Polimorfismo As classes fazem a mesma operação(método), mas de forma diferente. Ocorre quando um método definido no ancestral é redefinido no descendente com um comportamento diferente. Todo método definido em um ancestral pode ser acessado através dos descendentes
  64. 64. Polimorfismo As classes fazem a mesma operação (método), mas de forma diferente.
  65. 65. POO X Técnicas Tradicionais Métodos  Procedimentos e funções Variáveis de Instância  Dados Mensagens  Chamadas de procedimento e funções Classes  Tipos de Dados Herança  Não existe Chamadas sob controle do  Chamada sob controle dosistema programador

×