Anda di halaman 1dari 49

Java Standard Edition (JSE)

Captulo 04. Orientao a Objetos: Classes,


Objetos e mtodos

Esp. Mrcio Palheta


MSN: marcio.palheta@hotmail.com
1
Agenda
 Reviso da aula anterior;
 Motivao Trabalho em equipe e
regras;
 Orientao a objetos;
 Classes, atributos e mtodos;
 Relacionamento entre classes;
 Arrays dinmicos;
 Exerccios de fixao
2
Reviso
 Declarao e atribuio de variveis;
 Casting e comparao de variveis;
 Declarao, criao e inicializao de
arrays;
 Laos de repetio for e while;
 Dvidas ?

3
Motivao A importncia da
equipe
 A verdade que no h nada de digno
em ser superior a outra pessoa. A nica
nobreza genuna ser superior a seu
antigo eu.(Whitney M. Young JR)
 Um dia voc precisou de algum;
 Jogue com o time. Siga as regras;
 Vdeos:
 04.01 Equipe;
 04.02 Siga regras - Sinto de seguranca
4
Novos recursos a aprender
 Dizer o que e para que serve
orientao a objetos;
 Conceituar classes, atributos e
comportamentos;
 Entender o significado de variveis e
objetos na memria.
 Criao e manipulao de arrays
dinmicos;
5
Orientao a Objetos - OO
 Hei, j estamos usando OO;
 A OO, em alguns trechos utiliza os conceitos
de programao estruturada;
 Em OO, os problemas so resolvidos
pensando em interaes entre diferentes
objetos;
 Os dados e operaes formam um nico
conjunto (objeto);
 O objeto guarda(encapsula) a lgica de
negcios; 6
Orientao a Objetos - OO
 Benefcios da abordagem orientada a
objetos:
 Modularidade: Uma vez criado, um objeto
pode ser passado por todo o sistema;
 Encapsulamento: Detalhes de implementao
ficam ocultos externamente ao objeto;
 Reuso: Uma vez criado, um objeto pode ser
utilizado em outros programas;
 Manutenibilidade: Manuteno realizada em
pontos especficos do seu programa
(objetos). 7
Objetos
 So coisas do mundo real que
possuem dados(atributos) e realizam
aes(mtodos);
 O estado de um objeto pode variar de
acordo com a execuo do programa
(tempo);
 So oriundos(instncias) de classes;

8
Objetos Exemplos
Objeto Estado Comportamento

Pessoa Nome, idade, Falar, andar, respirar


RG
Cachorro Nome, raa Latir, correr

Conta Agncia, Creditar, debitar


bancria nmero
Carro Cor, marca, Acelerar, frear,
modelo abastecer; 9
Classe
 a especificao para um determinado
tipo de objeto;
 Cada instncia da classe um objeto;
 Todo objeto respeita s regras definidas
na classe qual pertence;

10
Exemplo de classe e objeto
Documento Documento01 Documento02

Foto: Img01.jpg Img02.jpg

Cdigo: 123456 654321

Nome: Joao Maria

Nascimento: 10/05/1980 30/06/1990

11
Classe - exemplo
 Considerando um programa para um
banco, bem fcil perceber que uma
entidade extremamente importante
para o nosso sistema a conta.
 Nossa idia aqui, generalizarmos
alguma informao, juntamente com
funcionalidades que toda conta deve
ter.
12
Classe exemplo
 O que toda conta tem e importante para ns?
 nmero da conta
 nome do cliente
 saldo
 limite
 O que toda conta faz e importante para ns? Isto
, o que gostaramos de pedir conta.
 saca uma quantidade x
 deposita uma quantidade x
 imprime o nome do dono da conta
 devolve o saldo atual
 transfere uma quantidade x para uma outra conta y
 devolve o tipo de conta
13
Representao Grfica -
Diagrama de classes UML

14
Classe cdigo JAVA

15
Criao e utilizao de um
objeto
 O que temos? uma classe ContaBancaria
que especifica o comportamentos de
todos os objetos dessa classe;
 Para criar (construir, instanciar) uma
conta, basta usar a palavra chave new:
 ContaBancaria conta = new
ContaBancaria();

16
Exemplo Programa.java

17
Exemplo
 Atravs da varivel minhaConta, podemos acessar o objeto recm
criado para alterar seu nome, seu saldo etc:
 public class Programa {
public static void main(String[] args) {
ContaBancaria minhaConta;
minhaConta = new ContaBancaria();
minhaConta.nome = "Duke";
minhaConta.saldo = 1000.0;
System.out.println("Saldo atual: " + minhaConta.saldo);
}
}
 importante fixar que o ponto foi utilizado para acessar algo em
minhaConta. Agora, minhaConta pertence ao Duke, e tem saldo de
mil reais.
18
Mtodos
 Representam as aes realizadas sobre
os atributos de um objeto;
 Equivalem s funes e procedimentos
da programao estruturada;
 A declarao e implementao dos
mtodos ocorre dentro das classes;

19
Exerccio 01
 Vamos implementar o mtodo sacar()
da classe ContaBancaria, onde o
parmetro o valor a ser debitado da
conta. Este mtodo no retorna valor
algum;
 Em seguida, implemente o mtodo
depositar()

20
Exerccio 01 soluo sacar()

21
Exerccio 02
 Crie a classe SacaEDeposita, onde seu
mtodo main() utiliza a classe
ContaBancaria para sacar, depositar e
imprimir o saldo da conta, aps cada
transao;

22
Mtodos com retorno
 So mtodos que retornam algum valor
para o cdigo que o chamou;
 Ex.: Um cliente no pode sacar um
valor maior do que o saldo de sua conta
bancria;
 Com isso, podemos alterar o cdigo do
mtodo ContaBancaria.sacar(), a fim de
que seja retornado um valor booleano;
 Operao realizada == true;
 Operao no realizada == false; 23
ContaBancaria.sacar()

24
Exerccio 03
 Crie uma nova classe Operacao;
 No mtodo main(), crie um novo objeto
ContaBancaria;
 Realize um depsito de R$ 100;
 Realize um saque de R$ 150;
 De acordo com o resultado do saque,
imprima as mensagens:
 Saque realizado com sucesso OU
 Saldo insuficiente;
25
Operacao.main()

26
Acesso por referncia
 Quando declaramos uma varivel para
associar a um objeto, na verdade, essa
varivel no guarda o objeto, e sim uma
maneira de acess-lo, chamada de
referncia.
 por esse motivo que, diferente dos tipos
primitivos como int e long, precisamos usar o
new depois de declarada a varivel:
 Ex.: Conta c1;
c1 = new Conta();
27
Acesso por referncia
 Em JAVA, uma varivel nunca um
objeto, mas uma referncia a objeto;
 Uma varivel referncia guarda o
endereo de memria onde est o
objeto;
 O que acontece quando criamos e
iniciamos uma varivel de referncia?
 Conta c1 = new Conta();
 Conta c2 = new Conta(); 28
Acesso por referncia
 Internamente, c1 e c2 vo guardar um
nmero que identifica em que posio
da memria cada Conta se encontra.

29
Outro exemplo de referncia
 O que ser impresso aps a execuo do
cdigo abaixo?
 public static void main(String args[]) {
 Conta c1 = new Conta();
 c1.deposita(100);
 Conta c2 = c1; // linha importante!
 c2.deposita(200);
 System.out.println(c1.saldo);
 System.out.println(c2.saldo);
} 30
Referncia ao mesmo objeto
 C2 copia o endereo de memria
armazenado em C1 e passa a apontar
para o mesmo objeto (C2==C1):

31
Referncia a objetos distintos
 O que ser impresso com o cdigo abaixo?
 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");
 }else{
 System.out.println("Contas diferentes")
 }
 }
32
O mtodo
ContaBancaria.transferir()
 E quando precisamos transferir dinheiro
entre contas duas contas?
 Na chamada do mtodo, j temos a
conta de origem(this). S precisamos
da conta destino e do valor a transferir;
 Como fica o cdigo alterado da classe
ContaBancaria.transferir()?

33
Exerccio 04 Implemente o
mtodo transferir();

34
Questionamentos
 O que acontece com a conta que foi
passada como parmetro?
 O objeto clonado?
 A passagem de parmetros uma
atribuio simples do valor da varivel;
 Com isso, quando passamos um objeto
como parmetro, estamos, na verdade,
passando o seu endereo de memria;
35
Melhorando os atributos
 Digamos, agora, que precisamos
aumentar a classe ContaBancaria e
incluir os atributos nome, cpf e rg do
cliente dono da conta;
 Ops, mas nome, cpf e rg so
informaes do cliente, no da conta;
 Ento, precisamos criar uma classe
Cliente e atualizar os atributos de
ContaBancaria; 36
Representao grfica
Diagrama de classes UML

37
Classes atualizadas

38
Como vincular um cliente a
uma conta bancria?

39
Acesso aos dados de cliente
 Aps a atribuio, podemos acessar os dados
de Cliente a partir da Conta:
 conta.meuCliente.nome = Luiz Incio;
 System.out.print(conta.meuCliente.nome);
 Um sistema OO um conjunto de classe que
se comunicam atravs de mensagens
(mtodos);
 Cada classe tem um papel bem definido
 Mas, e se eu no usa-se o new em cliente e
tentasse acess-lo? NullPointerException
40
Exerccio 05: Implemente o
Diagrama de Classe a seguir

41
Exerccio 05 Classe Carro

42
Exerccio 06
 Escreva uma classe FabricaCarro que
simule uma fbrica de carros. Todos os
dias o gerente informa:
 A quantidade de carros a ser produzida;
 A cor, modelo e a velocidade mxima;
 A potncia e o tipo de motor;
 No mtodo main(), implemente o
armazenamento dos carros produzidos
em um Array; 43
Criao de arrays dinmicos
 API Collections Framework: Captulo 10;
 Facilita busca, remoo e tamanho
infinito;
 As classes Object e ArrayList;
 Criao: ArrayList lista = new ArrayList();
 Incluso: lista.add(Object objeto);
 Acesso: lista.get(int indice);

44
Exemplo ArrayList - Criao
 Conta c1 = new Conta ();
 c1.depositar(100);
 Conta c2 = new Conta ();
 c2.depositar(200);
 ArrayList contas = new ArrayList();
 contas.add(c1);
 contas.add(c2);
 Para sabermos o tamanho da lista, podemos
usar o mtodo size():
 System.out.println(contas.size());
45
Exemplo ArrayList - Acesso
 for(int i = 0; i < contas.size(); i++) {
 Conta cc = (Conta) contas.get(i);
 System.out.println(cc.getSaldo());
 }
 O que aconteceu?
 Por que precisamos do cast para conta?
 Podemos incluir objetos de tipos
diferentes em um ArrayList?
46
Bibliografia
 Java - Como programar, de Harvey M.
Deitel
 Use a cabea! - Java, de Bert Bates e
Kathy Sierra
 (Avanado) Effective Java
Programming Language Guide, de Josh
Bloch

47
Referncias WEB
 SUN: www.java.sun.com

Fruns e listas:
 Javaranch: www.javaranch.com

 GUJ: www.guj.com.br

Apostilas:
 Argonavis: www.argonavis.com.br

 Caelum: www.caelum.com.br 48
Java Standard Edition (JSE)
Captulo 04. Orientao a Objetos: Classes,
Objetos e mtodos

Esp. Mrcio Palheta


MSN: marcio.palheta@hotmail.com
49

Anda mungkin juga menyukai