O slideshow foi denunciado.
Seu SlideShare está sendo baixado. ×

Orientação a Objetos para Desenvolvedores Android

Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Carregando em…3
×

Confira estes a seguir

1 de 138 Anúncio

Orientação a Objetos para Desenvolvedores Android

Baixar para ler offline

Material de Orientação a Objetos com Java objetivando auxiliar no aprendizado do paradigma e da linguagem Java, preparando o aluno para programar para Google Android

Material de Orientação a Objetos com Java objetivando auxiliar no aprendizado do paradigma e da linguagem Java, preparando o aluno para programar para Google Android

Anúncio
Anúncio

Mais Conteúdo rRelacionado

Diapositivos para si (20)

Quem viu também gostou (20)

Anúncio

Semelhante a Orientação a Objetos para Desenvolvedores Android (20)

Mais recentes (20)

Anúncio

Orientação a Objetos para Desenvolvedores Android

  1. 1. ANÁLISE E PROJETO DE SISTEMAS ORIENTADO A OBJETOS – PARTE 2 Prof. MSc. Iury Teixeira Faculdade de Juazeiro do Norte Especialização em Desenvolvimento de Aplicativos para Dispositivos Móveis
  2. 2. Roteiro •  Conceitos de OO •  Primitivos, Referências •  Classes, atributos e métodos •  Construtores •  Sobrecarga •  Herança e Sobrescrita (Polimorfismo) •  Leitura de diagramas •  Refactor •  Interfaces •  Coleções (List, Set, Map) •  Exceptions •  Classes Internas e Anônimas •  Apresentação Final de Projeto Implementado - MVC
  3. 3. Objetivo Implementar sistemas baseando-se no projeto arquitetural e lógico, com foco em aplicativos móveis.
  4. 4. Por que Orientação a Objetos Representar conceitos do mundo real em sistemas computacionais Permite troca de informações entre objetos da aplicação através de mensagens Reuso de Operações de forma coesa
  5. 5. O Que temos no nosso mundo??
  6. 6. O Que temos no nosso mundo??
  7. 7. O Que a criança faz? Anda Brinca Pula Grita Ações executadas por esses indivíduos…
  8. 8. Resumindo… Atributos: braços, cor do cabelo, nome, rg, cpf, idade, sexo Métodos: andar, correr, chorar, gritar, cantar
  9. 9. E onde fica a classe? Que parada é essa?
  10. 10. Classe é isso! Objetos
  11. 11. Classe •  Uma classe representa um modelo para a construção de objetos. •  Uma classe é um tipo de dado.
  12. 12. Resumindo… •  Objeto: instância de uma classe •  Classe: tipo de dado que representa a estrutura de um objeto real ou abstrato, através de atributos e métodos; •  Atributo: propriedades de um objeto; •  Método: Ações de um objeto;
  13. 13. Benefícios da O.O. Promove a reutilização de código. Flexibilização da aplicação. Concentrar esforços no ponto do problema. Aproximação do desenvolvimento com o mundo real.
  14. 14. Primitivos
  15. 15. Primitivos •  São tipos de dados
  16. 16. Primitivo x Referência
  17. 17. • Referencias vs Dados Primitivos •  Uma referência é diferente de um tipo primitivo pelo fato de não ser capaz de armazenar o valor real do dado, mas apenas referir- se ao dado. •  A referência “referencia” a localização de memória onde o dado encontra-se: •  String linguagem= “Java”; •  String plataforma = “Standard Edition”;
  18. 18. String – Estudo de Código
  19. 19. Um pouco mais…
  20. 20. Um pouco mais…
  21. 21. Quiz ( ) Um objeto representa a estrutura em memória de um dado. ( ) O método construtot é utilizado para criar um objeto. ( ) A classe define a estrutura de um objeto. ( ) Uma referência possui o objeto criado ( ) uma variável de tipo primitivo armazena o valor real. ( ) X sendo variável inteira, X++ será incrementado + 1 antes de sua próxima utilização
  22. 22. Preparar para Mão no código J •  Calcular área do triângulo •  A sintaxe (em Java) geral para declarar uma classe é: <modificador> class <NomeDaClasse>{ <Atributos>; <construtor>; <métodos>; }
  23. 23. O Que seria atributo e o que seria método nesse cenário? Quem é o objeto? Será preciso criar uma classe?
  24. 24. Triangulo base , altura e area à atributos
  25. 25. Como efetuar o calculo? calcularArea à método
  26. 26. Testando
  27. 27. Encapsulamento Encapsulamento na OO refere-se ao pacote de operações e atributos o qual represente o estado em um tipo de objeto, de tal forma que o estado é acessível ou modificável somente pela interface provida pelo encapsulamento. (Page-Jones, 2000)
  28. 28. Encapsulamento NOME CPF RG retornaAltura retornaNome Atributos Métodos Requisição externa para o valor do atributo Nome.
  29. 29. Encapsulando campo… #refactor #oo •  Ocultar o campo para o mundo externo, liberando apenas métodos de leitura e escrita;
  30. 30. Isso é encapsulamento??
  31. 31. Mais prática para mais conhecimentos… Criar a classe Quadrado Area = base * base
  32. 32. Uma pergunta…! •  Como faríamos para calcular a área, mas, sem passar os valores pelos métodos de acesso?
  33. 33. Polimorfismo
  34. 34. Como isso é possível?
  35. 35. Herança
  36. 36. Herança A herança é uma forma de reutilização de software. Classes podem herdar de classes. Novas classes são criadas a parti das classes existentes, absorvendo seus atributos e comportamentos
  37. 37. Cenário
  38. 38. Herança Superclasse ou classe pai Subclasse ou classe filha •  A herança implica em um relacionamento “é-um”.
  39. 39. Precisamos saber que… • Com a herança, os membros private de uma superclasse não são diretamente acessíveis em uma subclasse. • Os membros public da superclasse tornam-se membros da subclasse, utilizando o seu acesso original de membro.
  40. 40. Precisamos saber que… • Os membros protected da superclasse podem ser acessados por subclasses, mas são privados para qualquer classe fora da hierarquia*. •  Os construtores não são herdados.
  41. 41. Mão no código J
  42. 42. Poderiamos criar uma instância de FormaGeometrica? FormaGeometrica fg = new FormaGeometrica( ); Como impedir que isso aconteça? E o corpo do método calcular, ficar vazio, está correto? abstract #refactor
  43. 43. Mais código J Colaborador Horista: - salario * quantHoras ColaboradorSalario: - 3 anos: 4 % - 5 anos: 5% - 10 anos: 7% Fornecer também construtor para criar o objeto sobrecarregando-os
  44. 44. Quiz ( ) A henraça mantém um relacionamento TEM UM ( ) Encapsulamento define esconder a lógica ou processo que será executado ( ) Membros privados não herdados ( ) Membros estáticos sempre serão herdados a nível de pacote ( ) Quando utilizamos abstract em uma classe, a mesma não pode ser instanciada ( ) Para acessar um membro da super classe, basta apenas utilizar o identificador super.
  45. 45. FINAL e Herança qual o resultado?
  46. 46. FINAL Quando CLASSE, impede que seja herdada Se for um método, impede a sobrescrita
  47. 47. Como seria calcular o total do salário de 5 funcionários “mistos” (com array) ?
  48. 48. Cenário Uma empresa Colaboradores Vendas Precisa receber um pagamento.Precisa pagar um colaboradores calcularPagamento calcularPagamento Como atribuir polimorfismo?
  49. 49. O QUE FAZER?
  50. 50. Herança vs Interfaces
  51. 51. Quando usar ?
  52. 52. Cenário Uma empresa Colaboradores Vendas Precisa receber um pagamento.Precisa pagar um colaboradores calcularPagamento calcularPagamento É possível tratar de forma polimórfica?
  53. 53. Precisamos de um contrato!
  54. 54. Interface é um
  55. 55. Objetivo? Tratar as classes de uma única forma, como um tipo só
  56. 56. Ambas possuem um comportamento em comum: calcularPagamento Interface
  57. 57. Importante sobre Interfaces •  Quando uma classe concreta implementa uma interface, a classe torna-se obrigada a fornecer uma implementação para o método da interface •  Agora, uma Venda “é um” Pagavel
  58. 58. Como ficaria Colaborador?
  59. 59. Importante… Uma classe abstrata ou não, implementa uma interface Uma classe abstrata não é obrigada a fornecer uma implementação para o(s) método(s) de uma interface. Interfaces podem estender de várias interfaces Classes implementam interfaces e não as estendem Classes implementam interfaces e não as estendem Uma classe podem implementar várias interfaces. Além de métodos, interfaces podem conter constantes
  60. 60. Interfaces em Repositórios de Dados
  61. 61. classes abstratas vs interfaces ?
  62. 62. java.io.Serializable java.util.Collection java.util.List java.util.Set Algumas interfaces da API
  63. 63. Collection
  64. 64. Collection Uma coleção é um objeto que pode manter referências a outros objetos.
  65. 65. Collection É a interface raiz da hierarquia. Representa um grupo de objetos. Alguns tipos de collection’s permitem objetos duplicados, outros não. Alguns tipos de collection’s são ordenados outros não.
  66. 66. É uma Collection ordenada e p e r m i t e e l e m e n t o s duplicados. Os elementos de u m a l i s t a p o d e m s e r acessados via índices. List Set É uma collection que não permite elementos duplicados Map É um objeto que mapeia chaves para valores. Não é permitido chaves duplicadas.
  67. 67. Implementações Onde declaramos quantas posições terá no ArrayList ?
  68. 68. Leitura de Objetos no ArrayList
  69. 69. Isso é possível? Isso é bom ?
  70. 70. Outro cenário… Funciona ? •  O método add recebe um Object como parâmetro, o método get retorna um Object.
  71. 71. Casting ?
  72. 72. Casting Funciona ? Não !
  73. 73. e agora ? o.O
  74. 74. Wrapper
  75. 75. Wrappers •  Maneira de empacotar primitivos em objeto Tipo primitivos Classe equivalente byte Byte short Short char Character int Integer long Long float Float doube Double
  76. 76. Qdizer que é preciso fazer casting toda vez com um elemento dentro do ArrayList ?
  77. 77. Generic’s
  78. 78. onde anda a interface List?
  79. 79. Dica: Orientado a Interface Invés de:
  80. 80. E as outras List •  LinkedList •  Representa uma lista onde os elementos são duplamente encadeados. •  Vector •  Representa uma lista segura contra threads (thread-safe).
  81. 81. Outras coleções… • Set não mantém duplicatas de objetos e utiliza o hashCode e equals
  82. 82. Map •  Map Não é uma collection. Representa uma estrutura de dados, onde se tem uma chave(identificador) mapeada para um valor. Equals e hasCode são importantes para as chaves
  83. 83. Map
  84. 84. Há a interface Collection e a classe Collections. Essa ultima, fornece métodos dentre outras coisas, para buscar e classificar uma collection. Pouco mais…..
  85. 85. Mão no código J •  Uma classe que pergunte a secretária o nome do aluno e as duas notas de um aluno. •  Devem ser criados 3 alunos; •  armazenar os dados digitados em uma List (banco de dados virtual)
  86. 86. Quiz ( ) o ArrayList é um conjuto que acessa objetos através de índices. ( ) o Set é utilizado quando se deseja manter objetos repitidos. ( ) A classe Collection possui métodos que auxiliam trabalhar com objetos em conjutos. ( ) O Generics possibilita força o tipo de objeto no conjuto. ( ) o Generics sempre são executados em tempo de execução
  87. 87. Exceptions
  88. 88. •  Tratar à exceção, significa desenvolver um software tolerante aquela exceção. Em outras palavras, caso aquela exceção ocorra, o software ainda sim continuará em funcionamento.
  89. 89. Aqui, fica o código que PODE disparar uma exceção. Aqui, fica o código que será executado caso à exceção ocorra.
  90. 90. O tipo da exceção que o código dentro do bloco try pode disparar.
  91. 91. Exemplo
  92. 92. Executando com tratamento Não há exceção !
  93. 93. Executando a exception A exceção foi disparada e tratada.
  94. 94. Sem tratar a exception Resultado:
  95. 95. Entendendo o erro Onde à exceção começou. Onde à exceção terminou. Quais métodos, em quais classes foram chamados, entre o começo da exceção e termino da mesma.
  96. 96. Teste você agora J •  Uma divisão de um inteiro por zero causa uma ArithmeticException. Implemente um tratamento para essa exceção, e caso a mesma ocorra, informe ao usuário que ele não pode dividir um inteiro por zero.
  97. 97. Podemos criar nossas próprias exceptions?
  98. 98. A classe ContaCorrente, executando a operação de debitar Caso o método debitar falhe o que acontece?
  99. 99. Uma possibilidade é, alterar o método debitar() para retornar um boolean indicando se a operação foi executada: Agora sim, né ?
  100. 100. Exceções – Disparando Exceções. • Podemos criar uma exceção e dispará-la. • O primeiro passo é definir uma classe que represente a exceção. • Essa classe deverá herdar da classe RuntimeException.
  101. 101. Agora, qual método pode disparar essa exceção ? throws – Diz que um método pode lançar uma exceção
  102. 102. Disparando a exceção throw – Dispara à exceção!
  103. 103. Testando Executando: Resultado: Saldo
  104. 104. Como capturar nossas exceções?
  105. 105. Capturando/Tratando Resultado:
  106. 106. Mais um pouco de Exceptions… SaldoInsuficienteException herda agora de Exception. Nada impede que o usuário não capture a exceção.
  107. 107. Exceções verifcadas e não verificadas?
  108. 108. Quando verificada Agora o compilador obriga o tratamento da exceção ou a declaração da mesma.
  109. 109. Finally •  Sempre será executado independente de ocorrer ou não uma exceção.
  110. 110. •  A exceção pode disponibilizar informações sobre o erro. •  Por exemplo, a SaldoInsuficienteException poderia informar qual o valor do saldo atual da conta. •  Para fazer isso, defina um construtor na classe Exception com os devidos parâmetros
  111. 111. Sobrecarregando o construtor
  112. 112. Capturando mensagem
  113. 113. Inner Class
  114. 114. Classes Internas Comuns Classes Internas de Métodos
  115. 115. Classes Internas •  Declarada dentro de outra classe; •  Possue um relacionamento especial com sua externa; •  Acessando membros privados.. •  Pode ter todos os membros que um classe normal tem; •  Não pode ter membros estáticos
  116. 116. Exemplo
  117. 117. Criando objetos da Interna na Externa
  118. 118. Criando objetos da interna em outras classes Instancia da Externa Instancia da Interna
  119. 119. Acessando membros da classe interna
  120. 120. Internas de Métodos •  São apenas acessíveis no método – esse é seu escopo. •  Apenas final e abstract; •  Apenas acessa variáveis local FINAL; •  Acessando também membros privados da externa;
  121. 121. Exemplo de Interna de método
  122. 122. Classes Anônimas
  123. 123. Usadas comumente em padrões de projetos como Listeners
  124. 124. Botão sair com java Swing Quantos botões sair uma aplicação tem?
  125. 125. Usando classe anônima Criando um objeto que implementa ActionListener J
  126. 126. Mais… •  Apenas acessa variáveis local FINAL; •  Acessando também membros privados da externa; •  Sempre será herança ou implementação de interface;
  127. 127. .: M_V_C :.
  128. 128. Padrão de Projeto que influência na arquitetura
  129. 129. Estrutura
  130. 130. Agora é de verdade! •  Implementar seguindo o padrão MVC, o modelo de seu projeto, utilizando os recursos da OO. •  Três casos de uso devem ser codificados; •  Tratar possíveis falhas do sistema; •  Seguir boas práticas discutidas (ex: orientado a interfaces) e padrões; •  15 min de apresentação para cada fábrica (após o intervalo).
  131. 131. Lembrar da bricadeira da bola No domingo: apresentar no inicio; a galera corrigir falhas nos diagramas e documentos e apresentar novamente e código com regra de negocio e validação de falhas;

×