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
10
Exemplo de classe e objeto
Documento Documento01 Documento02
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