Introdução a Orientaçãoo a Objetos

210 visualizações

Publicada em

Rascunho de uma introdução a Orientação a Objetos criada em 2013.

Publicada em: Software
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
210
No SlideShare
0
A partir de incorporações
0
Número de incorporações
1
Ações
Compartilhamentos
0
Downloads
4
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Introdução a Orientaçãoo a Objetos

  1. 1. Uma breve introdução a Orientação a Objetos, UML e Java
  2. 2. Agenda Introdução a Orientação a Objetos ● Definição; ● Tudo é Objeto. Será? ● Resolvendo um problema (quase) real. ● Classe ● Herança ● Polimorfismo ● Encapsulamento
  3. 3. Ao final... Você será capaz de: ● Entender o básico de Orientação a Objetos; ● Identificar e criar um Diagrama de Classe; ● Identificar uma composição de objetos; ● Entender a importância da herança entre objetos e do polimorfismo.
  4. 4. Quem sou? Hoje ● Senior Game Developer na Gazeus Games; ○ Maior empresa brasileira de jogos sociais. No passado... ● VIVO, Ponto-Frio, Embratel, SEFAZ (Cupom Mania) e TECPAR (Instituto de Tecnologia do Paraná); ● Consultoria para pequenas empresas de desenvolvimento de software; ● Há 15 anos desenvolvendo softwares (profissionalmente) de um total de 22 brincando com computadores (tk90!).
  5. 5. Introdução a OO Segundo a Wikipédia: “A orientação a objetos é 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.”
  6. 6. Introdução a OO Existem quase 30 paradigmas de programação e os principais (ou mais comuns) são: ● Imperativa (e.g. Fortran, BASIC e C) ● Funcional (e.g. Haskell, Scala e SQL) ● Declarativa (e.g. HTML e SQL) ● Orientada a Objetos (e.g. Java e C++)
  7. 7. Introdução a OO Tudo é Objeto! ● Identidade; ○ O que o distingue de outros objetos? ● Possui características; ○ Dados armazenados “dentro” do objeto; ● Comportamento ○ Conjunto de ações que descrevem como o objeto pode ser usado. Desafio: vocês conseguem pensar em algo que não se enquadre nesta regra?
  8. 8. Introdução a OO Minha caneta azul possui: ● Identidade: o que a difere das outras canetas azuis existentes no mundo?
  9. 9. Introdução a OO Minha caneta azul possui: ● Identidade: o que a difere das outras canetas azuis existentes no mundo? ○ Esta caneta azul é minha e de mais ninguém.
  10. 10. Introdução a OO Minha caneta azul possui: ● Identidade: o que a difere das outras canetas azuis existentes no mundo? ○ Esta caneta azul é minha e de mais ninguém. ● Características: quais os dados desta caneta?
  11. 11. Introdução a OO Minha caneta azul possui: ● Identidade: o que a difere das outras canetas azuis existentes no mundo? ○ Esta caneta azul é minha e de mais ninguém. ● Características: quais os dados desta caneta? ○ Tinta: azul, preço: R$500 e recarregável: sim.
  12. 12. Introdução a OO Minha caneta azul possui: ● Identidade: o que a difere das outras canetas azuis existentes no mundo? ○ Esta caneta azul é minha e de mais ninguém. ● Características: quais os dados desta caneta? ○ Tinta: azul, preço: R$500 e recarregável: sim. ● Comportamento: quais ações posso realizar com a caneta?
  13. 13. Introdução a OO Minha caneta azul possui: ● Identidade: o que a difere das outras canetas azuis existentes no mundo? ○ Esta caneta azul é minha e de mais ninguém. ● Características: quais os dados desta caneta? ○ Tinta: azul, preço: R$500 e recarregável: sim. ● Comportamento: quais ações posso realizar com a caneta? ○ Escrever, tampar, destampar, recarregar, ...
  14. 14. Introdução a OO Um fusca fabricado em 1977, preto e de placa ABC-1234 como um Objeto: ● Identidade? ● Características? ● Comportamento?
  15. 15. Introdução a OO Um fusca fabricado em 1977, preto e de placa ABC-1234 como um Objeto: ● Identidade? ○ ABC-1234 ● Características? ○ Cor: preto, ano de fabricação: 1977, fabricante: Volkswagen ● Comportamento? ○ Ligar, desligar, acelerar, frear, ...
  16. 16. Introdução a OO Definir um programa usando o conceito de objetos vai forçá-lo a ver o problema a ser resolvido baseado no que o objeto (ou coleção de objetos) faz e/ou é capaz de fazer.
  17. 17. Introdução a OO Definir um programa usando o conceito de objetos vai forçá-lo a ver o problema a ser resolvido baseado no que o objeto (ou coleção de objetos) faz e/ou é capaz de fazer. Modelar um programa como um conjunto de procedimentos isolados? Modelar um programa usando objetos com nomes e termos reais!
  18. 18. Introdução a OO Definir um programa usando o conceito de objetos vai forçá-lo a ver o problema a ser resolvido baseado no que o objeto (ou coleção de objetos) faz e/ou é capaz de fazer. Problema: empresa familiar produz artesanato, possui website mas não realiza vendas online.
  19. 19. Introdução a OO Definir um programa usando o conceito de objetos vai forçá-lo a ver o problema a ser resolvido baseado no que o objeto (ou coleção de objetos) faz e/ou é capaz de fazer. Problema: empresa familiar produz artesanato, possui website mas não realiza vendas online e em 1 mês irá à falência se não aumentar suas vendas.
  20. 20. SOFTWARE DEVELOPMENT INC.
  21. 21. Introdução a OO Você é funcionário da ACME Software. Um time de desenvolvedores (incluindo você) irá criar um e-commerce simples. Você está encarregado de começar a documentar e criar os primeiros códigos.
  22. 22. Introdução a OO São requisitos funcionais do sistema: ● Permitir que a empresa faça o cadastro de produtos a serem vendidos; ● Permitir que o usuário realize a compra de um único produto por vez.
  23. 23. Introdução a OO São requisitos funcionais do sistema: ● Permitir que a empresa faça o cadastro de produtos a serem vendidos; Vela Cor: vermelho Peso: 500g Preço: R$10 Boneca Peso: 200g Tecido: algodão Preço: R$20
  24. 24. Introdução a OO São requisitos funcionais do sistema: ● Permitir que o usuário realize a compra de um único produto por vez. Como será concluída a venda? ● Da forma mais simples possível. Quais informações compõem uma venda?
  25. 25. Introdução a OO São requisitos funcionais do sistema: ● Permitir que o usuário realize a compra de um único produto por vez. Joaquim José da Silva Xavier Endereço de entrega E-mail Número do cartão de crédito Nome do produto Valor da venda
  26. 26. Introdução a OO Vela e Boneca são Produtos: ● Compartilham de características semelhantes; Biologia: gatos, cachorros, golfinhos e humanos são mamíferos;
  27. 27. Introdução a OO A compra por um cliente é um Registro de Venda: ● Contém informações de entrega, cobrança e produto vendido.
  28. 28. Introdução a OO Produto Registro de Venda Vela Cor: vermelho Peso: 500g Preço: R$10 Boneca Peso: 200g Tecido: algodão Preço: R$20 Joaquim José da Silva Xavier Endereço de entrega E-mail Número do cartão de crédito Nome do produto Valor da venda
  29. 29. O que define um Objeto? ● Identidade; ● Características; ● Comportamento. Introdução a OO Produto Vela Cor: vermelho Peso: 500g Preço: R$10 Boneca Peso: 200g Tecido: algodão Preço: R$20
  30. 30. O que define um Objeto? ● Identidade; ○ Nome ou código do produto. ● Características; ○ Cor, peso, preço e tecido. ● Comportamento. ○ Vamos ver isso depois... Introdução a OO Produto Vela Cor: vermelho Peso: 500g Preço: R$10 Boneca Peso: 200g Tecido: algodão Preço: R$20
  31. 31. Introdução a OO Produto + nome + peso + preco + cor + tecido O que define um Objeto? ● Identidade; ○ Nome ou código do produto. ● Características; ○ Cor, peso, preço e tecido. ● Comportamento. ○ Vamos ver isso depois...
  32. 32. Introdução a OO Produto + nome : String + peso : Integer + preco : Double + cor : String + tecido : String O que define um Objeto? ● Identidade; ○ Nome ou código do produto. ● Características; ○ Cor, peso, preço e tecido. ● Comportamento. ○ Vamos ver isso depois...
  33. 33. Introdução a OO Produto + nome : String + peso : Integer + preco : Double + cor : String + tecido : String Parabéns! Você acaba de criar seu primeiro diagrama UML! Diagrama de Classe
  34. 34. UML?
  35. 35. Introdução a OO RegistroVenda O que define um Objeto? ● Identidade; ● Características; ● Comportamento
  36. 36. Introdução a OO RegistroVenda + codigoVenda O que define um Objeto? ● Identidade; ○ Código da venda. ● Características; ● Comportamento.
  37. 37. Introdução a OO RegistroVenda + codigoVenda + nomeCliente + emailCliente + enderecoEntrega + numeroCartaoCredito O que define um Objeto? ● Identidade; ○ Código da venda. ● Características; ○ Dados do cliente. ● Comportamento.
  38. 38. O que define um Objeto? ● Identidade; ○ Código da venda. ● Características; ○ Dados do cliente e da venda. ● Comportamento; ○ ... Introdução a OO RegistroVenda + codigoVenda + nomeCliente + emailCliente + enderecoEntrega + numeroCartaoCredito + nomeProduto + valorVenda
  39. 39. O que define um Objeto? ● Identidade; ○ Código da venda. ● Características; ○ Dados do cliente e da venda. ● Comportamento; ○ Vamos ver isso depois... Introdução a OO RegistroVenda + codigoVenda + nomeCliente + emailCliente + enderecoEntrega + numeroCartaoCredito + nomeProduto + valorVenda
  40. 40. Introdução a OO RegistroVenda + codigoVenda : Integer + nomeCliente : String + emailCliente : String + enderecoEntrega : String + numeroCartaoCredito : Integer + nomeProduto : String + valorVenda : Double Produto + nome : String + peso : Integer + preco : Double + cor : String + tecido : String Diagrama de Classe
  41. 41. Introdução a OO Diagrama de Classe RegistroVenda + codigoVenda : Integer + nomeCliente : String + emailCliente : String + enderecoEntrega : String + numeroCartaoCredito : Integer + nomeProduto : String + valorVenda : Double Produto + nome : String + peso : Integer + preco : Double + cor : String + tecido : StringSerá possível melhorar este diagrama?
  42. 42. Introdução a OO Vela Cor: vermelho Peso: 500g Preço: R$10 Boneca Peso: 200g Tecido: algodão Preço: R$20
  43. 43. Introdução a OO Vela Cor: vermelho Peso: 500g Preço: R$10 Boneca Peso: 200g Tecido: algodão Preço: R$20 Produto + nome : String + peso : Integer + preco : Double
  44. 44. Introdução a OO Vela Cor: vermelho Peso: 500g Preço: R$10 Boneca Peso: 200g Tecido: algodão Preço: R$20 Produto + nome : String + peso : Integer + preco : Double Vela + cor : String
  45. 45. Introdução a OO Vela Cor: vermelho Peso: 500g Preço: R$10 Boneca Peso: 200g Tecido: algodão Preço: R$20 Produto + nome : String + peso : Integer + preco : Double Vela + cor : String Boneca + tecido : String
  46. 46. Introdução a OO Vela Cor: vermelho Peso: 500g Preço: R$10 Boneca Peso: 200g Tecido: algodão Preço: R$20 Produto + nome : String + peso : Integer + preco : Double Vela + cor : String Boneca + tecido : String
  47. 47. Introdução a OO Produto + nome : String + peso : Integer + preco : Double Vela + cor : String Boneca + tecido : String Em Orientação a Objetos, herança é um mecanismo que permite que você crie uma nova classe com base em uma já existente, aproveitando suas propriedades e comportamentos.
  48. 48. Introdução a OO Produto + nome : String + peso : Integer + preco : Double Vela + nome : String + peso : Integer + preco : Double + cor : String Boneca + nome : String + peso : Integer + preco : Double + tecido : String Em Orientação a Objetos, herança é um mecanismo que permite que você crie uma nova classe com base em uma já existente, aproveitando suas propriedades e comportamentos.
  49. 49. Introdução a OO RegistroVenda + codigoVenda : Integer + nomeCliente : String + emailCliente : String + enderecoEntrega : String + numeroCartaoCredito : Integer + nomeProduto : String + valorVenda : Double Continuando com nosso processo de melhoria...
  50. 50. Introdução a OO Cliente + cpf : Integer + nomeCliente : String + emailCliente : String RegistroVenda + codigoVenda : Integer + nomeCliente : String + emailCliente : String + enderecoEntrega : String + numeroCartaoCredito : Integer + nomeProduto : String + valorVenda : Double
  51. 51. Introdução a OO Cliente + cpf : Integer + nomeCliente : String + emailCliente : String RegistroVenda + codigoVenda : Integer + cliente : Cliente + enderecoEntrega : String + numeroCartaoCredito : Integer + nomeProduto : String + valorVenda : Double
  52. 52. Introdução a OO Cliente + cpf : Integer + nomeCliente : String + emailCliente : String RegistroVenda + codigoVenda : Integer + cliente : Cliente + enderecoEntrega : String + numeroCartaoCredito : Integer + nomeProduto : String + valorVenda : Double Endereco + logradouro : String + numero : String + complemento : String + cidade : String + uf : String + cep : Integer
  53. 53. Introdução a OO Cliente + cpf : Integer + nomeCliente : String + emailCliente : String RegistroVenda + codigoVenda : Integer + cliente : Cliente + enderecoEntrega : Endereco + enderecoCobranca : Endereco + numeroCartaoCredito : Integer + nomeProduto : String + valorVenda : Double Endereco + logradouro : String + numero : String + complemento : String + cidade : String + uf : String + cep : Integer
  54. 54. Introdução a OO Cliente + cpf : Integer + nomeCliente : String + emailCliente : String RegistroVenda + codigoVenda : Integer + cliente : Cliente + enderecoEntrega : Endereco + enderecoCobranca : Endereco + numeroCartaoCredito : Integer + nomeProduto : String + valorVenda : Double Endereco + logradouro : String + numero : String + complemento : String + cidade : String + uf : String + cep : Integer
  55. 55. Diagrama de Classe Introdução a OO Cliente + cpf : Integer + nomeCliente : String + emailCliente : String RegistroVenda + codigoVenda : Integer + cliente : Cliente + enderecoEntrega : Endereco + enderecoCobranca : Endereco + numeroCartaoCredito : Integer + nomeProduto : String + valorVenda : Double Endereco + logradouro : String + numero : String + complemento : String + cidade : String + uf : String + cep : Integer Produto + nome : String + peso : Integer + preco : Double Vela + cor : String Boneca + tecido : String
  56. 56. Diagrama de Classe Introdução a OO Cliente + cpf : Integer + nomeCliente : String + emailCliente : String RegistroVenda + codigoVenda : Integer + cliente : Cliente + enderecoEntrega : Endereco + enderecoCobranca : Endereco + numeroCartaoCredito : Integer + nomeProduto : String + valorVenda : Double Endereco + logradouro : String + numero : String + complemento : String + cidade : String + uf : String + cep : Integer Produto + nome : String + peso : Integer + preco : Double Vela + cor : String Boneca + tecido : String
  57. 57. Introdução a OO Relembrando o que é um Objeto... ● Identidade; ● Possui características; ● Comportamento ○ Conjunto de ações que descrevem como o objeto pode ser usado.
  58. 58. Comportamento ● Conjunto de ações que descrevem como o objeto pode ser usado. Introdução a OO Humano + nome : String + dataNascimento : Date + peso : Integer + produzirSom()
  59. 59. Comportamento ● Conjunto de ações que descrevem como o objeto pode ser usado. Introdução a OO Humano + nome : String + dataNascimento : Date + peso : Integer + produzirSom() public class Humano { public String nome; public Date dataNascimento; public Integer peso; public void produzirSom() { System.out.println("Olá pessoal"); } }
  60. 60. Seria impresso na tela... Olá pessoal! Introdução a OO Humano + nome : String + dataNascimento : Date + peso : Integer + produzirSom() public class Humano { public String nome; public Date dataNascimento; public Integer peso; public void produzirSom() { System.out.println("Olá pessoal!"); } }
  61. 61. Seria impresso na tela... Olá pessoal! Introdução a OO Humano + nome : String + dataNascimento : Date + peso : Integer + produzirSom() public class Humano { public String nome; public Date dataNascimento; public Integer peso; public void produzirSom() { System.out.println("Olá pessoal!"); } } Parabéns! Você acaba de entender seu primeiro código Java!
  62. 62. Introdução a OO Comportamento ● Conjunto de ações que descrevem como o objeto pode ser usado. Mamifero + nome : String + dataNascimento : Date + peso + produzirSom() Cão Humano Gato
  63. 63. Introdução a OO Comportamento ● Conjunto de ações que descrevem como o objeto pode ser usado. Mamifero + nome : String + dataNascimento : Date + peso + produzirSom() Cão + ... Humano + ... Gato + ...
  64. 64. Introdução a OO A herança permite que novas classes aproveitem atributos e comportamentos. Mamifero + nome : String + dataNascimento : Date + peso + produzirSom() Cão + ... Humano + ... Gato + ...
  65. 65. Introdução a OO Mamifero + nome : String + dataNascimento : Date + peso + produzirSom() Cão + produzirSom() Humano + produzirSom() Gato + produzirSom()
  66. 66. Introdução a OO Cão: Olá pessoal! Humano: Olá pessoal! Gato: Olá pessoal! Mamifero + nome : String + dataNascimento : Date + peso + produzirSom() Cão + produzirSom() Humano + produzirSom() Gato + produzirSom()
  67. 67. Cão: Olá pessoal! Humano: Olá pessoal! Gato: Olá pessoal! WHAT ...? Introdução a OO
  68. 68. Introdução a OO Solução: declarar na classe base e implementar o método apenas nas classes herdeiras. Palavra-chave: abstract. Mamifero + nome : String + dataNascimento : Date + peso + produzirSom() Cão + produzirSom() Humano + produzirSom() Gato + produzirSom()
  69. 69. Introdução a OO public class Mamifero { public String nome; public Date dataNascimento; public Integer peso; public abstract void produzirSom(); } public class Cao extends Mamifero { public void produzirSom() { System.out.println("Au au!"); } } public class Humano extends Mamifero { public void produzirSom() { System.out.println("Olá pessoal!"); } } public class Gato extends Mamifero { public void produzirSom() { System.out.println("Miau!"); } }
  70. 70. Introdução a OO public class Mamifero { public String nome; public Date dataNascimento; public Integer peso; public abstract void produzirSom(); } public class Cao extends Mamifero { public void produzirSom() { System.out.println("Au au!"); } } public class Humano extends Mamifero { public void produzirSom() { System.out.println("Olá pessoal!"); } } public class Gato extends Mamifero { public void produzirSom() { System.out.println("Miau!"); } } Cão: Au au! Humano: Olá pessoal! Gato: Miau!
  71. 71. Referência Bibliográfica ● Sams Teach Yourself Object Oriented Programming in 21 Days - 2002 - Sams Publishing - Tony Sintes ● Head First Object-Oriented Analysis & Design, O'Reilly, McLaughlin et. al., 2007 ● ROY, Peter Van. Programming Paradigms for Dummies: What Every Programmer Should Know. Disponível em <http://www.info.ucl.ac.be/~pvr/VanRoyChapter.pdf>. Acesso em: 10 maio 2013. ● COHEN, Marcelo. Introdução à Programação Orientada a Objetos. Disponível em <http://www.inf.pucrs.br/flash/lapro2/lapro2_1.pdf>. Acesso em: 10 maio 2013. ● WIKIPEDIA, Orientação a Objetos. Disponível em <http://pt.wikipedia. org/wiki/Orientação_a_objetos>. Acesso em: 10 maio 2013. ● COSTA, André Luiz Monteiro da. Orientação a Objetos na Prática. Disponível em <http://www.slideshare.net/tiinfnet/orientao-a-objetos-na-prtica>. Acesso em: 10 maio 2013.

×