Aula 5 Fundamentos de Programação Orientada a Objetos

4,205 views
3,992 views

Published on

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,205
On SlideShare
0
From Embeds
0
Number of Embeds
10
Actions
Shares
0
Downloads
0
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Aula 5 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. 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
  3. 3. Programação Restante do Curso Eder Ignatowicz - Unisal
  4. 4. HerançaEder Ignatowicz - Unisal
  5. 5. Hierarquia de Classes
  6. 6. Herança Tudo aquilo que se herda; Aquilo que se transmite por hereditariedade (Ex: Características genéticas dos pais).
  7. 7. 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
  8. 8. Herança Herança é a propriedade dos objetos que permite a criação de uma hierarquia entre eles, onde os descendentes herdam o acesso ao código e estruturas de dados dos seus ancestrais. Coad-Yourdon define Herança como: “Mecanismo para expressar a similaridade entre classes, simplificando a definição de Classes similares a outras que já foram definidas. Ela representa generalização e especialização, tornando atributos e serviços comuns em uma hierarquia de Classe”.
  9. 9. Herança Mecanismo que permite que características comuns a diversas classes sejam colocadas em uma classe base, ou superclasse; As propriedades da superclasse não precisam ser repetidas em cada subclasse; Exemplo: JanelaRolante e JanelaFixa são subclasses de Janela. Elas herdam as propriedades de Janela, como uma região visível na tela. JanelaRolante acrescenta uma barra de paginação e um afastamento.
  10. 10. Herança
  11. 11. Generalização/Especialização
  12. 12. Herança
  13. 13. Herança Simples
  14. 14. Herança Múltipla Existe mais de uma superclasse, ou seja, uma classe é declarada como uma subclasse de uma ou mais superclasses.
  15. 15. Herança Triangular
  16. 16. Princípio da substituição Instâncias de uma subclasse podem ser utilizadas quando um construtor espera uma instância da superclasse (polimorfismo) É UM !
  17. 17. Herança X Composição de Classes Não confundam:  Herança com composição/agregação de classes;  Composição de classes é quando temos uma classe que possui como atributo um objeto de outra classe.
  18. 18. Herança X Composição de Classes Assim, a pergunta-chave para distinguir herança de composição é: A minha classe possui a classe X, ou ela é X? Se ela possui, temos composição, se ela é, temos herança. Exemplos???
  19. 19. Herança X Composição de Classes Também pode ser chamada por Herança X USO HERANÇA  classe A “é um tipo de” B USO / AGREGAÇÃO (Relação de Conteúdo)  classe D “contém” classe C”  classe D “usa” classe C”  classe C “é parte da” classe D  Exemplo: Uma equipe contém um gerente e um grupo de vendedores
  20. 20. Classes AbstratasEder Ignatowicz - Unisal
  21. 21. Classes Abstratas Uma classe abstrata não pode ser instanciada. Define apenas um conceito implementado pela classe filha. Veículo -> Carro, Barco, Avião
  22. 22. Classes Abstratas Java permite classes abstract  Utiliza o modificador abstract na declaração de classe
  23. 23. Classes Abstratas  Classes abstratas muitas vezes possuem métodos abstratos, embora não seja obrigatório.  Métodos abstratos consistem apenas em declarações
  24. 24. Classes Abstratas O filho não abstrato de uma classe deve implementar todos os métodos abstratos da familia. Uma classe abstrata não pode ser instanciada.   O uso de uma classe abstrata é uma decisão de projeto permite gerar projetos e implementações mais genéricos.
  25. 25. PolimorfismoEder Ignatowicz - Unisal
  26. 26. 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
  27. 27. Polimorfismo As classes fazem a mesma operação (método), mas de forma diferente.
  28. 28. Polimorfismo Conceito complementar a herança que permite enviar a mesma mensagem a objetos distintos, onde cada objeto responde da maneira mais apropriada para a sua classe.
  29. 29. Polimorfismo Métodos, Operações, Polimorfismo Método  Um procedimento usado para implementar o comportamento de uma classe  Classes diferentes podem ter método com mesmo nome e argumentos.  Cada classe implementa a operação da maneira que for apropriada.  O método calcular_area, terá diferentes implementações pelas classe retangulo e circulo.
  30. 30. Polimorfismo Métodos, Operações, Polimorfismo Polimorfismo  Polimorfismo é a capacidade de assumir formas diferentes.  Em termos de programação, polimorfismo representa a capacidade de uma única variável chamar métodos diferentes, dependendo do que a variável contém.  Forma de escrever programas de forma genérica que permite a manipulação de uma grande variedade de classes.
  31. 31. Polimorfismo Métodos, Operações, Polimorfismo Operação  Abstração procedural que define um tipo de comportamento  Independente do código que implementa este comportamento.  Ex., calculando área (genérica)  Operações são definidas durante Analise e Design  Operações são implementadas através de métodos
  32. 32. Polimorfismo Métodos, Operações, Polimorfismo Polimorfismo  Cada operação é executada de forma diferente em classes diferentes.  Requer que existam múltiplos métodos com o mesmo nome.  A escolha de que método executar depende do tipo do objeto.  Vantagem reduz criar vários if-elses, criando uma única interface universal.
  33. 33. Polimorfismo
  34. 34. Polimorfismo
  35. 35. Polimorfismo
  36. 36. Polimorfismo
  37. 37. Polimorfismo
  38. 38. Polimorfismo Pergunta... E se eu quiser implementar um documento novo... Vou ter que modificar a classe testes ?
  39. 39. Polimorfismo Existem três tipos de polimorfismos em Java:    Sobrecarga  Sobreposição (entre superclasse e subclasse)  Generalização (subtipo & coerção)
  40. 40. Polimorfismo Sobrecarga  Métodos (procedimentos) com o mesmo nome, mas com argumentos diferentes:  Identificado por:  Nome do método;  Tipo de dados dos parâmetros.
  41. 41. Polimorfismo Sobreposição Métodos (procedimentos) com o mesmo nome, mas com funcionalidades diferentes. Permite que uma subclasse herde um método da superclasse e implemente-o de forma diferente. Identificados por:  classe do objeto.  conteúdo do objeto..
  42. 42. Polimorfismo Sobreposição Uma classe herda um método mas decide reimplementá- lo de uma forma diferente. Ex: ContaPoupança derivado de ContaBancaria  Por restrição:  A operação Empréstimo não esta disponível para ContaPoupança  Para extensão:  A operação Retirada da ContaPoupança implica em calcular e depositar juros acumulados  Otimização:  O procedimento AprovarCadastro da conta poupança pode ser mais simples do que de uma ContaBancaria
  43. 43. Sobrecarga x Sobreposição Ave.locomover() sobrepõe o método de Animal.locomover().  locomover() também é sobrecarregado na classe Ave.
  44. 44. Sobreposição de Variáveis Ao sobrepor variáveis, podemos referenciar a variável da superclasse através da palavra super.
  45. 45. Sobreposição de Métodos Um método da superclasse também pode ser invocado usando a palavra super
  46. 46. Generalização Como escrever código genérico em java ? É preciso duplicar o código caso tenhamos que trabalhar com pares de double, char, vetores, etc. ?
  47. 47. Generalização Resposta: Utilize a super classe Exemplo: Object
  48. 48. Generalização Uso da classe Par Problema
  49. 49. InterfacesEder Ignatowicz - Unisal
  50. 50. Interfaces Uma interface é, essencialmente, uma coleção de constantes e métodos abstratos Apelidada de Classe Abstrata Pura Para fazer uso de uma interface, implementa-se a mesma em uma classe, quer dizer, declara-se que a classe implementa a interface e pode-se escrever o código para cada um dos métodos declarados na interface como parte da definição da classe. Métodos em uma interface são sempre públicos e abstratos. Constantes em uma interface são sempre públicas estáticas e final.
  51. 51. Interfaces As principais diferenças entre uma classe e uma interface são:  Interfaces, assim como classes abstratas, fornecem o nome do método, mas não a implementação;  Qualquer classe pode implementar várias interfaces;  Interfaces não podem ser instanciadas;  Todos os métodos de uma interface são implicitamente public e abstract;  Todas as variáveis de uma interface são implicitamente public static e final;  Todos os métodos devem ser implementados por quem usa a interface
  52. 52. Interfaces Classe é conjunto de dados e métodos Interface é um conjunto de métodos sem dados Os métodos de uma interface são sempre vazios Quando um classe implementa uma interface, ela deve implementar todos os métodos declarados na interface Uma classe pode implementar qualquer número de interfaces mas só pode herdar de uma superclasse
  53. 53. Interfaces Uma interface é uma especificação explícita de um conjunto de métodos, que pode ser implementada por uma classe sem nenhuma implementação real associada à especificação.  As interfaces tem a capacidade adicional de poder ter efetivamente a herança múltipla. Uma classe pode implementar um número ilimitado de interfaces, enquanto só pode herdar de uma única superclasse.
  54. 54. Interfaces Declaração Interface
  55. 55. Interface
  56. 56. Dúvidas Mas professor nossa aula não foi muito abstrata ? Os exemplos não foram bestinhas ? Animal, pessoa, documento, são exemplos de OO no mundo real ? Como vou utilizar OO para resolver os meus problemas ? Será que essa tal de OO funciona e é utilizada mesmo ou é só conversa de computeiro?
  57. 57. Exemplos Práticos Vamos olhar os fontes do java ?

×