Orientação a Objetos Básica <ul><ul><li>Regis Pires Magalhães </li></ul></ul><ul><ul><li>[email_address] </li></ul></ul>
Classe e Objeto
Classe e Objeto <ul><li>Classe </li></ul><ul><ul><li>Projeto ou definição da conta. </li></ul></ul><ul><ul><li>Possui: </l...
Classe e Objeto <ul><li>Classe  != Objeto </li></ul><ul><li>Receita de bolo != bolo </li></ul><ul><li>Planta da casa != ca...
Classe e Objeto class   Conta   { int   numero ; String   nome ; double   saldo ; double   limite ; // .. }
Instanciação de Objetos <ul><ul><li>Um objeto é uma instância de uma classe; </li></ul></ul><ul><ul><li>Para instanciar um...
new <ul><li>Aloca memória para um objeto; </li></ul><ul><li>Devolve uma referência para o objeto criado. </li></ul>
Atributos <ul><li>São características de cada objeto de uma determinada classe. </li></ul><ul><li>São declarados fora de u...
Usando uma outra Classe class   Programa   { public   static   void   main ( String []   args )   { Conta   minhaConta  = ...
Métodos <ul><li>Definem os comportamentos de uma classe, ou seja, o que ela faz. </li></ul><ul><li>É a maneira de fazer um...
Métodos class   Conta   { int   numero ; String   nome ; double   saldo ; double   limite ; void   saca ( double   valor )...
Retorno de Métodos <ul><li>Todo método deve ter um retorno, nem que esse retorno seja nada (void). </li></ul>
Retorno de Métodos class   Conta   { int   numero ; String   nome ; double   saldo ; double   limite ; boolean   saca ( do...
Usando a classe Conta class   Programa   { public   static   void   main ( String []   args )   { Conta   minhaConta   =  ...
Criando instâncias da classe Conta class   TestaDuasContas   { public   static   void   main ( String []   args )   { Cont...
Referência <ul><li>Variáveis associadas a um objeto não guardam o objeto, mas uma referência para o objeto. </li></ul><ul>...
Referência
Referência <ul><ul><li>Não é correto dizer:  “c1 é um objeto” . </li></ul></ul><ul><ul><li>Correto seria:  “Tenho uma refe...
Referência – Qual o resultado? class   TestaReferencias   { public   static   void   main ( String   args [])   { Conta   ...
Referência Conta   c1   =   new   Conta (); Conta   c2   =   c1 ;
Referência  this <ul><ul><li>Todo objeto possui uma referência implícita para si mesmo, chamada referência  this. </li></u...
Igualdade de objetos <ul><ul><li>O operador  ==  compara o conteúdo das variáveis. </li></ul></ul><ul><ul><li>As variáveis...
Igualdade de objetos <ul><li>Para saber se dois objetos têm o mesmo conteúdo, é preciso comparar atributo por atributo. </...
Criando o método transfere
Criando o método transfere class   Conta   { // atributos e metodos... void   transfere ( Conta   destino ,   double   val...
Um método usando outro
Um método usando outro class   Conta   { // atributos e metodos... boolean   transfere ( Conta   destino ,   double   valo...
Passagem de Parâmetros <ul><li>Para parâmetros que são objetos, há a passagem apenas do endereço de memória. </li></ul><ul...
Inicialização de Atributos <ul><ul><li>Variáveis locais sempre precisam ser explicitamente inicializadas; </li></ul></ul><...
Associação
Associação – Composição  class   Cliente   { String   nome ; String endereco ; String   cpf ; Conta conta; } class   Conta...
null <ul><li>null é uma palavra chave em Java que indica uma referência para nenhum objeto. </li></ul>
Construtores Ver Cap. 6 da apostila da Caelum <ul><ul><li>Utilizados para instanciar objetos da classe. </li></ul></ul><ul...
Construtores <ul><li>Criando um construtor </li></ul><ul><li>Usando um construtor </li></ul>// Construtor da classe Pessoa...
Construtores Múltiplos <ul><ul><li>Fornecem diferentes formas para se inicializar um objeto. </li></ul></ul><ul><ul><li>Im...
Construtores Múltiplos <ul><li>Uso especial da referência  this </li></ul><ul><ul><li>Quando uma classe possui vários cons...
Exercícios <ul><li>Classe Carro e Motor </li></ul><ul><ul><li>Páginas 46, 47 (40, 41) </li></ul></ul><ul><li>Classe Funcio...
Exercício <ul><ul><li>Implemente as classes em Java de acordo com o diagrama abaixo: </li></ul></ul><ul><ul><li>O método m...
Referências e Recursos <ul><li>Livros/Apostilas </li></ul><ul><ul><li>Apostila Caelum – Java e Orientação a Objetos - FJ11...
Upcoming SlideShare
Loading in …5
×

Java 05 Oo Basica

3,662 views

Published on

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

No Downloads
Views
Total views
3,662
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
206
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Java 05 Oo Basica

  1. 1. Orientação a Objetos Básica <ul><ul><li>Regis Pires Magalhães </li></ul></ul><ul><ul><li>[email_address] </li></ul></ul>
  2. 2. Classe e Objeto
  3. 3. Classe e Objeto <ul><li>Classe </li></ul><ul><ul><li>Projeto ou definição da conta. </li></ul></ul><ul><ul><li>Possui: </li></ul></ul><ul><ul><ul><li>Características / Propriedades / Atributos. </li></ul></ul></ul><ul><ul><ul><li>Comportamentos / Métodos. </li></ul></ul></ul><ul><li>Objetos </li></ul><ul><ul><li>São contas de verdade, possuindo a mesma estrutura definida na classe. </li></ul></ul>
  4. 4. Classe e Objeto <ul><li>Classe != Objeto </li></ul><ul><li>Receita de bolo != bolo </li></ul><ul><li>Planta da casa != casa </li></ul>
  5. 5. Classe e Objeto class Conta { int numero ; String nome ; double saldo ; double limite ; // .. }
  6. 6. Instanciação de Objetos <ul><ul><li>Um objeto é uma instância de uma classe; </li></ul></ul><ul><ul><li>Para instanciar um objeto a palavra reservada new é utilizada; </li></ul></ul><ul><ul><ul><li>Retorna uma referência para o objeto criado. </li></ul></ul></ul><ul><ul><li>Em Java, todos os objetos são criados dinamicamente. </li></ul></ul>// Declaração da variável &quot;s&quot; String s ; // Criação da variável atribuída a &quot;s&quot; s = new String (); // Declaração da variável &quot;p&quot; e // criação da variável atribuída a &quot;p&quot; Pessoa p = new Pessoa ();
  7. 7. new <ul><li>Aloca memória para um objeto; </li></ul><ul><li>Devolve uma referência para o objeto criado. </li></ul>
  8. 8. Atributos <ul><li>São características de cada objeto de uma determinada classe. </li></ul><ul><li>São declarados fora de um bloco. </li></ul><ul><ul><li>Ficam “soltos” dentro da classe. </li></ul></ul><ul><li>Também chamados de: </li></ul><ul><ul><li>Propriedades </li></ul></ul><ul><ul><li>Características </li></ul></ul><ul><ul><li>Variáveis de instância </li></ul></ul><ul><ul><li>Variáveis de objeto </li></ul></ul>
  9. 9. Usando uma outra Classe class Programa { public static void main ( String [] args ) { Conta minhaConta = new Conta (); minhaConta . nome = &quot;Duke&quot; ; minhaConta . saldo = 1000.0 ; System . out . println ( &quot;Saldo atual: &quot; + minhaConta . saldo ); } }
  10. 10. Métodos <ul><li>Definem os comportamentos de uma classe, ou seja, o que ela faz. </li></ul><ul><li>É a maneira de fazer uma operação com um objeto. </li></ul><ul><li>Exemplos de métodos para uma conta: </li></ul><ul><ul><li>saca </li></ul></ul><ul><ul><li>deposita </li></ul></ul><ul><ul><li>consultaSaldo </li></ul></ul>
  11. 11. Métodos class Conta { int numero ; String nome ; double saldo ; double limite ; void saca ( double valor ) { this . saldo = this . saldo - valor ; } void deposita ( double valor ) { this . saldo = this . saldo + valor ; } double consultaSaldo () { return this . saldo ; } }
  12. 12. Retorno de Métodos <ul><li>Todo método deve ter um retorno, nem que esse retorno seja nada (void). </li></ul>
  13. 13. Retorno de Métodos class Conta { int numero ; String nome ; double saldo ; double limite ; boolean saca ( double valor ) { if ( this . saldo < valor ) { return false ; } else { this . saldo = this . saldo - valor ; return true ; } } void deposita ( double valor ) { this . saldo = this . saldo + valor ; } double consultaSaldo () { return this . saldo ; } }
  14. 14. Usando a classe Conta class Programa { public static void main ( String [] args ) { Conta minhaConta = new Conta (); minhaConta . nome = &quot;Duke&quot; ; minhaConta . saldo = 1000 ; boolean consegui = minhaConta . saca ( 2000 ); if ( consegui ){ System . out . println ( &quot;Consegui sacar&quot; ); } else { System . out . println ( &quot;Não consegui sacar&quot; ); } } }
  15. 15. Criando instâncias da classe Conta class TestaDuasContas { public static void main ( String [] args ) { Conta minhaConta = new Conta (); minhaConta . saldo = 1000 ; Conta meuSonho = new Conta (); meuSonho . saldo = 1500000 ; } }
  16. 16. Referência <ul><li>Variáveis associadas a um objeto não guardam o objeto, mas uma referência para o objeto. </li></ul><ul><li>Uma variável nunca é um objeto, mas uma referência para um objeto. </li></ul>
  17. 17. Referência
  18. 18. Referência <ul><ul><li>Não é correto dizer: “c1 é um objeto” . </li></ul></ul><ul><ul><li>Correto seria: “Tenho uma referência c1 a um objeto do tipo Conta” . </li></ul></ul><ul><ul><li>No entanto, por praticidade diz-se: “Tenho um objeto c1 do tipo Conta” . </li></ul></ul><ul><ul><li>c1 e c2 guardam um número que identifica a posição de memória do objeto Conta referenciado por cada uma delas. </li></ul></ul>Conta c1 ; c1 = new Conta (); Conta c2 ; c2 = new Conta ();
  19. 19. Referência – Qual o resultado? class TestaReferencias { public static void main ( String args []) { Conta c1 = new Conta (); c1 . deposita ( 100 ); Conta c2 = c1 ; c2 . deposita ( 200 ); System . out . println ( c1 . saldo ); System . out . println ( c2 . saldo ); } }
  20. 20. Referência Conta c1 = new Conta (); Conta c2 = c1 ;
  21. 21. Referência this <ul><ul><li>Todo objeto possui uma referência implícita para si mesmo, chamada referência this. </li></ul></ul><ul><ul><li>A referência this é válida dentro de todo o corpo de uma classe, até mesmo no construtor. </li></ul></ul><ul><ul><li>Quando um parâmetro de algum método de uma classe tiver o mesmo nome de um atributo da classe, a referência this é utilizada para referenciar o atributo. </li></ul></ul>
  22. 22. Igualdade de objetos <ul><ul><li>O operador == compara o conteúdo das variáveis. </li></ul></ul><ul><ul><li>As variáveis não guardam o objeto, mas o endereço em que o objeto se encontra. </li></ul></ul><ul><ul><li>== compara se as variáveis apontam para o mesmo objeto e não se os objetos possuem o mesmo conteúdo. </li></ul></ul>class VerificaIgualdade { public static void main ( String args []) { Conta c1 = new Conta (); c1 . nome = &quot;Duke&quot; ; c1 . saldo = 227 ; Conta c2 = new Conta (); c2 . nome = &quot;Duke&quot; ; c2 . saldo = 227 ; if ( c1 == c2 ) { System . out . println ( &quot;Contas iguais&quot; ); } } }
  23. 23. Igualdade de objetos <ul><li>Para saber se dois objetos têm o mesmo conteúdo, é preciso comparar atributo por atributo. </li></ul>
  24. 24. Criando o método transfere
  25. 25. Criando o método transfere class Conta { // atributos e metodos... void transfere ( Conta destino , double valor ) { this . saldo = this . saldo – valor ; destino . saldo = destino . saldo + valor ; } }
  26. 26. Um método usando outro
  27. 27. Um método usando outro class Conta { // atributos e metodos... boolean transfere ( Conta destino , double valor ) { boolean retirou = this . saca ( valor ); if ( retirou == false ) { // não deu pra sacar! return false ; } else { destino . deposita ( valor ); return true ; } } }
  28. 28. Passagem de Parâmetros <ul><li>Para parâmetros que são objetos, há a passagem apenas do endereço de memória. </li></ul><ul><ul><li>Assim, não há cópia de objetos. </li></ul></ul>
  29. 29. Inicialização de Atributos <ul><ul><li>Variáveis locais sempre precisam ser explicitamente inicializadas; </li></ul></ul><ul><ul><li>Atributos recebem um valor padrão, mesmo que não sejam inicializados. </li></ul></ul><ul><ul><ul><li>No caso numérico, recebem 0 ; </li></ul></ul></ul><ul><ul><ul><li>No caso de boolean, recebem false . </li></ul></ul></ul><ul><ul><ul><li>No caso de objetos, recebem null . </li></ul></ul></ul><ul><ul><li>Podemos inicializar os atributos juntamente com sua declaração: </li></ul></ul>class Conta { int numero = 1234 ; String dono = &quot;Duke&quot; ; String cpf = &quot;123.456.789-10&quot; ; double saldo = 1000 ; double limite = 1000 ; // ... }
  30. 30. Associação
  31. 31. Associação – Composição class Cliente { String nome ; String endereco ; String cpf ; Conta conta; } class Conta { int numero ; double saldo ; double limite ; Cliente dono ; // .. } class Teste { public static void main ( String [] args ) { Conta minhaConta = new Conta (); Cliente c = new Cliente (); minhaConta . dono = c ; c.conta = minhaConta; // ... } }
  32. 32. null <ul><li>null é uma palavra chave em Java que indica uma referência para nenhum objeto. </li></ul>
  33. 33. Construtores Ver Cap. 6 da apostila da Caelum <ul><ul><li>Utilizados para instanciar objetos da classe. </li></ul></ul><ul><ul><li>Não são métodos, pois não possuem retorno e só são executados durante a instanciação do objeto. </li></ul></ul><ul><ul><li>Algumas vezes são usados para inicializar atributos de um novo objeto. </li></ul></ul><ul><ul><li>Possuem nome idêntico ao da classe. </li></ul></ul><ul><ul><li>Possibilitam ou mesmo obrigam a passagem de argumentos para o objeto durante o processo de criação do mesmo. </li></ul></ul><ul><ul><li>Facilitam a instanciação seguida de inicialização de atributos. </li></ul></ul><ul><ul><li>Quando a classe não tem um construtor declarado explicitamente, um construtor padrão sem argumentos é implicitamente criado. </li></ul></ul>
  34. 34. Construtores <ul><li>Criando um construtor </li></ul><ul><li>Usando um construtor </li></ul>// Construtor da classe Pessoa Conta (String nome, double saldo ) { this . nome = nome ; this . saldo = saldo ; } Conta c = new Conta (&quot;Maria&quot;, 1000);
  35. 35. Construtores Múltiplos <ul><ul><li>Fornecem diferentes formas para se inicializar um objeto. </li></ul></ul><ul><ul><li>Implementam sobrecarga de métodos. </li></ul></ul><ul><ul><li>São diferenciados pela quantidade, tipo e posição dos parâmetros. </li></ul></ul>// Construtores múltiplos public Conta (String nome, double saldo , double limite ) { this . nome = nome ; this . saldo = saldo ; this . limite = limite ; } public Conta ( Conta c ) { this .nome = c . nome ; this . saldo = c . saldo ; this . limite = c . limite ; } public Conta () { }
  36. 36. Construtores Múltiplos <ul><li>Uso especial da referência this </li></ul><ul><ul><li>Quando uma classe possui vários construtores, a referência this pode ser usada, em um construtor, para chamar outros construtores </li></ul></ul><ul><ul><li>Esse uso da referência this exige que ela seja o primeiro comando dentro de um construtor. </li></ul></ul>// Construtores múltiplos public Conta (String nome, double saldo , double limite ) { this . nome = nome ; this . saldo = saldo ; this . limite = limite ; } public Conta ( Conta c ) { this (c.nome, c.saldo, c.limite) ; } public Conta(String nome) { this (nome, 0, 0); } public Conta () { }
  37. 37. Exercícios <ul><li>Classe Carro e Motor </li></ul><ul><ul><li>Páginas 46, 47 (40, 41) </li></ul></ul><ul><li>Classe Funcionario </li></ul><ul><ul><li>Páginas 47 a 51 (41 a 44) </li></ul></ul><ul><li>Classe Pessoa, Porta e Casa </li></ul><ul><ul><li>Página 52 (45 e 46) </li></ul></ul>
  38. 38. Exercício <ul><ul><li>Implemente as classes em Java de acordo com o diagrama abaixo: </li></ul></ul><ul><ul><li>O método main de UsaConta deve instanciar e associar uma Pessoa de nome “Maria” a uma Conta com saldo 1000. </li></ul></ul>
  39. 39. Referências e Recursos <ul><li>Livros/Apostilas </li></ul><ul><ul><li>Apostila Caelum – Java e Orientação a Objetos - FJ11 </li></ul></ul><ul><ul><li>Object-Oriented System Development: HTML Edition </li></ul></ul><ul><ul><ul><li>http://g.oswego.edu/dl/oosdw3/ </li></ul></ul></ul><ul><ul><li>Software Engineering (5th Edition) – Ian Sommerville </li></ul></ul><ul><ul><li>Object-Oriented Analysis and Design with Applications – Grady Booch </li></ul></ul><ul><ul><li>Object-Oriented Software Engineering: A Case Driven Approach – Ivar Jacobson </li></ul></ul><ul><ul><li>Thinking in Java, 3 rd ed. Revision 4.0 – Bruce Eckel </li></ul></ul><ul><ul><ul><li>http://www.mindview.net/Books/TIJ/ </li></ul></ul></ul><ul><li>Web </li></ul><ul><ul><li>http://www.argonavis.com.br/cursos/java/j100/index.html </li></ul></ul>

×