Download - Java 05 Oo Basica
- 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