java 05 oo basica

Download Java 05 Oo Basica

If you can't read please download the document

Upload: regis-magalhaes

Post on 06-Jun-2015

3.381 views

Category:

Documents


0 download

TRANSCRIPT

  • 1. Orientao a Objetos Bsica
      • Regis Pires Magalhes
    • [email_address]

2. Classe e Objeto 3. Classe e Objeto

  • Classe
    • Projeto ou definio da conta.
    • Possui:
      • Caractersticas / Propriedades / Atributos.
      • Comportamentos / Mtodos.
  • Objetos
    • So 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. Instanciao de Objetos

    • Um objeto uma instncia de uma classe;
    • Para instanciar um objeto a palavra reservadanew utilizada;
      • Retorna uma referncia para o objeto criado.
    • Em Java, todos os objetos so criados dinamicamente.

// Declarao da varivel "s" String s ; // Criao da varivel atribuda a "s" s = new String (); // Declarao da varivel "p" e // criao da varivel atribuda a "p" Pessoa p = new Pessoa (); 7. new

  • Aloca memria para um objeto;
  • Devolve uma referncia para o objeto criado.

8. Atributos

  • So caractersticas de cada objeto de uma determinada classe.
  • So declarados fora de um bloco.
    • Ficam soltos dentro da classe.
  • Tambm chamados de:
    • Propriedades
    • Caractersticas
    • Variveis de instncia
    • Variveis 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. Mtodos

  • Definem os comportamentos de uma classe, ou seja, o que ela faz.
  • a maneira de fazer uma operao com um objeto.
  • Exemplos de mtodos para uma conta:
    • saca
    • deposita
    • consultaSaldo

11. Mtodos 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 Mtodos

  • Todo mtodo deve ter um retorno, nem que esse retorno seja nada (void).

13. Retorno de Mtodos 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 = "Duke" ; minhaConta . saldo = 1000 ; boolean consegui = minhaConta . saca ( 2000 ); if ( consegui ){ System . out . println ( "Consegui sacar" ); }else{System . out . println ( "No consegui sacar" ); } } } 15. Criando instncias 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. Referncia

  • Variveis associadas a um objeto no guardam o objeto, mas uma referncia para o objeto.
  • Uma varivel nunca um objeto, mas uma referncia para um objeto.

17. Referncia 18. Referncia

    • No correto dizer:c1 um objeto .
    • Correto seria:Tenho uma referncia 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 nmero que identifica a posio de memria do objeto Conta referenciado por cada uma delas.

Conta c1 ; c1 = new Conta (); Conta c2 ; c2 = new Conta (); 19. Referncia 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. Referncia Conta c1 = new Conta (); Conta c2 = c1 ; 21. Refernciathis

    • Todo objeto possui uma referncia implcita para si mesmo, chamada refernciathis.
    • A refernciathis vlida dentro de todo o corpo de uma classe, at mesmo no construtor.
    • Quando um parmetro de algum mtodo de uma classe tiver o mesmo nome de um atributo da classe, a refernciathis utilizada para referenciar o atributo.

22. Igualdade de objetos

    • O operador==compara o contedo das variveis.
    • As variveis no guardam o objeto, mas o endereo em que o objeto se encontra.
    • ==compara se as variveis apontam para o mesmo objeto e no se os objetos possuem o mesmo contedo.

class VerificaIgualdade { public static void main ( String args []) { Conta c1 = new Conta (); c1 . nome = "Duke" ; c1 . saldo = 227 ; Conta c2 = new Conta (); c2 . nome = "Duke" ; c2 . saldo = 227 ; if ( c1 == c2 ) { System . out . println ( "Contas iguais" ); } } } 23. Igualdade de objetos

  • Para saber se dois objetos tm o mesmo contedo, preciso comparar atributo por atributo.

24. Criando o mtodo transfere 25. Criando o mtodo transfere class Conta { // atributos e metodos... void transfere ( Conta destino , double valor ) { this . saldo = this . saldo valor ; destino . saldo = destino . saldo + valor ; } } 26. Um mtodo usando outro 27. Um mtodo usando outro class Conta { // atributos e metodos... boolean transfere ( Conta destino , double valor ) { boolean retirou = this . saca ( valor ); if ( retirou == false ) { // no deu pra sacar! return false ; } else { destino . deposita ( valor ); return true ; } } } 28. Passagem de Parmetros

  • Para parmetros que so objetos, h a passagem apenas do endereo de memria.
    • Assim, no h cpia de objetos.

29. Inicializao de Atributos

    • Variveis locais sempre precisam ser explicitamente inicializadas;
    • Atributos recebem um valor padro, mesmo que no sejam inicializados.
      • No caso numrico, recebem0 ;
      • No caso de boolean, recebemfalse .
      • No caso de objetos, recebemnull .
    • Podemos inicializar os atributos juntamente com sua declarao:

class Conta { int numero = 1234 ; String dono = "Duke" ; String cpf = "123.456.789-10" ; double saldo = 1000 ; double limite = 1000 ; // ... } 30. Associao 31. Associao Composioclass 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 referncia para nenhum objeto.

33. Construtores Ver Cap. 6 da apostila da Caelum

    • Utilizados para instanciar objetos da classe.
    • No so mtodos, pois no possuem retorno e s so executados durante a instanciao do objeto.
    • Algumas vezes so usados para inicializar atributos de um novo objeto.
    • Possuem nome idntico ao da classe.
    • Possibilitam ou mesmo obrigam a passagem de argumentos para o objeto durante o processo de criao do mesmo.
    • Facilitam a instanciao seguida de inicializao de atributos.
    • Quando a classe no tem um construtor declarado explicitamente, um construtor padro 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 ("Maria", 1000); 35. Construtores Mltiplos

    • Fornecem diferentes formas para se inicializar um objeto.
    • Implementam sobrecarga de mtodos.
    • So diferenciados pela quantidade, tipo e posio dos parmetros.

// Construtores mltiplos 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 Mltiplos

  • Uso especial da refernciathis
    • Quando uma classe possui vrios construtores, a refernciathispode ser usada, em um construtor, para chamar outros construtores
    • Esse uso da refernciathisexige que ela seja o primeiro comando dentro de um construtor.

// Construtores mltiplos 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. Exerccios

  • Classe Carro e Motor
    • Pginas 46, 47 (40, 41)
  • Classe Funcionario
    • Pginas 47 a 51 (41 a 44)
  • Classe Pessoa, Porta e Casa
    • Pgina 52 (45 e 46)

38. Exerccio

    • Implemente as classes em Java de acordo com o diagrama abaixo:
    • O mtodo main de UsaConta deve instanciar e associar uma Pessoa de nome Maria a uma Conta com saldo 1000.

39. Referncias e Recursos

  • Livros/Apostilas
    • Apostila Caelum Java e Orientao 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 rded. Revision 4.0 Bruce Eckel
      • http://www.mindview.net/Books/TIJ/
  • Web
    • http://www.argonavis.com.br/cursos/java/j100/index.html