Your SlideShare is downloading. ×

Aula 5 Fundamentos de Programação Orientada a Objetos

3,018

Published on

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

No Downloads
Views
Total Views
3,018
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Fundamentos de Programação Orientada a Objetos Série de Posts: jogano10.com Eder Ignatowicz - Unisal
  • 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. Programação Restante do Curso Eder Ignatowicz - Unisal
  • 4. HerançaEder Ignatowicz - Unisal
  • 5. Hierarquia de Classes
  • 6. Herança Tudo aquilo que se herda; Aquilo que se transmite por hereditariedade (Ex: Características genéticas dos pais).
  • 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. 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. 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. Herança
  • 11. Generalização/Especialização
  • 12. Herança
  • 13. Herança Simples
  • 14. Herança Múltipla Existe mais de uma superclasse, ou seja, uma classe é declarada como uma subclasse de uma ou mais superclasses.
  • 15. Herança Triangular
  • 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. 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. 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. 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. Classes AbstratasEder Ignatowicz - Unisal
  • 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. Classes Abstratas Java permite classes abstract  Utiliza o modificador abstract na declaração de classe
  • 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. 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. PolimorfismoEder Ignatowicz - Unisal
  • 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. Polimorfismo As classes fazem a mesma operação (método), mas de forma diferente.
  • 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. 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. 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. 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. 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. Polimorfismo
  • 34. Polimorfismo
  • 35. Polimorfismo
  • 36. Polimorfismo
  • 37. Polimorfismo
  • 38. Polimorfismo Pergunta... E se eu quiser implementar um documento novo... Vou ter que modificar a classe testes ?
  • 39. Polimorfismo Existem três tipos de polimorfismos em Java:    Sobrecarga  Sobreposição (entre superclasse e subclasse)  Generalização (subtipo & coerção)
  • 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. 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. 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. Sobrecarga x Sobreposição Ave.locomover() sobrepõe o método de Animal.locomover().  locomover() também é sobrecarregado na classe Ave.
  • 44. Sobreposição de Variáveis Ao sobrepor variáveis, podemos referenciar a variável da superclasse através da palavra super.
  • 45. Sobreposição de Métodos Um método da superclasse também pode ser invocado usando a palavra super
  • 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. Generalização Resposta: Utilize a super classe Exemplo: Object
  • 48. Generalização Uso da classe Par Problema
  • 49. InterfacesEder Ignatowicz - Unisal
  • 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. 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. 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. 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. Interfaces Declaração Interface
  • 55. Interface
  • 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. Exemplos Práticos Vamos olhar os fontes do java ?

×