Your SlideShare is downloading. ×
Java 05 Oo Basica
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

Java 05 Oo Basica

3,325
views

Published on


0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

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