Você está na página 1de 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 ?

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;

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,
RG
Nome, raa

Falar, andar, respirar

Agncia,
nmero
Cor, marca,
modelo

Creditar, debitar

Cachorro
Conta
bancria
Carro

Latir, correr

Acelerar, frear,
abastecer;

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) {


}else{


System.out.println("Contas iguais");
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