Você está na página 1de 45

Classes e Objetos: atributos e mtodos

Java Bsico

85

Programao Orientada a Objetos


Olhar o mundo como se tudo pudesse ser representado por objetos Estruturao do programa baseada na representao de objetos do mundo real (estados + comportamento) Vantagens

Facilidade de manuteno Maior extensibilidade Maior reuso


Java Bsico 86

Objeto DVD

voltar()

pausar() avancar() parar()

alterarHora() tocar()

carregarDisco() tempoDecorrido horaAtual duracaoDisco


Java Bsico

tipoSistema
87

Classes e Objetos
Classes especificam a estrutura e o comportamento dos objetos Classes so como "moldes" para a criao de objetos Objetos so instncias de classes.

Java Bsico

88

Objetos
Um objeto representa uma entidade do mundo real Todo objeto tem
Identidade

Estado Comportamento
Java Bsico 89

Objetos
Identidade

Todo objeto nico e pode ser distinguido de outros objetos Todo objeto tem estado, que determinado pelos dados contidos no objeto O comportamento de um objeto definido pelos servios/operaes que ele oferece

Estado

Comportamento

Java Bsico

90

Objeto Conta Bancria


creditar

Saldo

Nmero

875,32

21.342-7

debitar

Java Bsico

91

Estados do Objeto Conta


creditar

creditar(20.00)

creditar

Saldo

Nmero

Saldo

Nmero

875,32

21.342-7

895,32

21.342-7

debitar

debitar
Java Bsico

92

Classe e objeto Conta Bancria


creditar Saldo Nmero

creditar
875,32 21.342-7

Saldo

Nmero

debitar

double

String

instanciao instanciao

objetos objetos
creditar

debitar
Saldo Nmero

105,33

89.342-X

classe classe
debitar Java Bsico 93

Definio de Classes em Java


class class NomeDaClasse NomeDaClasse { { CorpoDaClasse CorpoDaClasse } }

O corpo de uma classe pode conter atributos mtodos construtores outras classes...
Java Bsico 94

Estrutura bsica de uma classe Java


class NomeDaClasse { atributo1; atributo2; ... mtodo1 { Corpo do mtodo1 } mtodo2 { Corpo do mtodo2 } }
Java Bsico

class class Conta Conta { { CorpoDaClasse CorpoDaClasse } }

95

Atributos

Java Bsico

96

Declarao de atributos
modificadores tipo nome ;

private static String numero; double LIMITE_MAXIMO; double saldo; private String nome, sobrenome; int numEstoque = 8;
Vrios atributos podem ser declarados na mesma linha

Um atributo pode ser inicializado na declarao


Java Bsico 97

Exemplos de atributos
class Cabine { int nivel; class Livro { String codigo; int anoDePublicacao; int codCategoria int numeroDePaginas; int lotacaoMaxima; ... String titulo; }

...

class Conta { String numero; double saldo; ... }

Java Bsico

98

Mtodos

Java Bsico

99

O que so mtodos?

Mtodos Mtodos so so operaes operaes que que realizam realizam aes aes e e modificam modificam os os valores valores dos dos atributos atributos do do objeto objeto responsvel responsvel pela pela sua sua execuo execuo

Java Bsico

100

Declarao de mtodos
modificadores tipo de retorno nome ( parmetros ) ;

private double obterRendimento(String numConta, int mes);

nomeDoMetodo() { Corpo do mtodo }


Java Bsico 101

O corpo do mtodo
O corpo do mtodo contm os comandos que determinam as aes do mtodo Esses comandos podem

realizar simples atualizaes dos atributos de um objeto retornar valores executar aes mais complexas como chamar mtodos de outros objetos

O corpo do mtodo tambm pode conter declaraes de variveis

Variveis cuja existncia e valores so vlidos somente dentro do mtodo em que so declaradas.

Java Bsico

102

Exemplo de Mtodo
class Conta { String numero; double saldo; void creditar(double valor) { saldo = saldo + valor; } ... }

Java Bsico

103

Mtodos e tipo de retorno


class Conta { String numero; double saldo; String getNumero() { return numero; } double getSaldo() { return saldo; } ... } Os Os mtodos mtodos que que retornam retornam valores valores como como resultado resultado usam usam o o comando comando return return
Java Bsico 104

Mais sobre mtodos


class Conta { ... void debitar(double valor) { saldo = saldo - valor; } }
Usa-se void para indicar que o mtodo no retorna nenhum valor, apenas altera os valores dos atributos de um objeto

Por Por que que o o debitar debitar no no tem tem como como parmetro parmetro o o nmero nmero da da conta? conta?
Java Bsico 105

Chamada de mtodos
Mtodos so invocados em instncias (objeto) de alguma classe.

Podem tambm ser invocados a partir da prpria classe (mtodos estticos).

Os objetos se comunicam para realizar tarefas Parmetros so passados por cpia A comunicao feita atravs da chamada de mtodos

conta.creditar(45.30)
varivel contendo referncia para objeto nome do mtodo a ser executado
106

operador de chamada de mtodo


Java Bsico

Modificadores

Java Bsico

107

Modificadores
Modificadores de acesso

public protected private default (friendly)

Valor padro quando nenhum modificador de acesso especificado

Outros modificadores

static final native transient synchronized


Java Bsico 108

Modificadores de Acesso
Controlam o acesso aos membros de uma classe Membros de uma classe:

A prpria classe Atributos Mtodos e construtores (um tipo especial de mtodos)

No so aplicados variveis
Java Bsico 109

public
Uma classe public pode ser instanciada por qualquer classe Atributos public podem ser acessados (lidos, alterados) por objetos de qualquer classe Mtodos public podem ser chamados por mtodos de qualquer classe public public class class Conta Conta { { public public String String numero; numero; public public double double saldo; saldo; public public void void creditar(double creditar(double valor) valor) { { saldo saldo = = saldo saldo + + valor; valor; } } ... ...

} }

Java Bsico

110

protected
Usado somente para atributos e mtodos Atributos protected podem ser acessados (lidos, alterados) por objetos de classes dentro do mesmo pacote ou de qualquer subclasse da classe ao qual ele pertence Mtodos protected podem ser chamados por objetos de classes dentro do mesmo pacote ou de qualquer subclasse da classe ao qual ele pertence public public class class Conta Conta { { protected String protected String numero; numero; protected protected double double saldo; saldo; protected protected void void creditar(double creditar(double valor) valor) { { saldo saldo = = saldo saldo + + valor; valor; } } ... ...
Java Bsico 111

} }

default (friendly)
A classe visvel somente por classes do mesmo pacote Se um atributo no tem nenhum modificador de acesso associado, ele implicitamente definido como friendly, e s visvel para objeto de classes do mesmo pacote Se um mtodo no tem nenhum modificador de acesso associado, ele implicitamente definido como friendly, e s pode ser chamado a partir de objetos de classes do mesmo pacote class class Conta Conta { { String String numero; numero; double double saldo; saldo; void void creditar(double creditar(double valor) valor) { { saldo saldo = = saldo saldo + + valor; valor; } } ... ...
Java Bsico 112

} }

private e encapsulamento
atributos private podem ser acessados somente por objetos da mesma classe
class class Pessoa Pessoa { { private private int int anoDeNascimento; anoDeNascimento; private private String String nome, nome, sobrenome; sobrenome; private private boolean boolean casada casada = = false; false; ... ... } }

Java no obriga o uso de private, mas vrios autores consideram isso essencial para a programao orientada a objetos Impacto em coeso e acoplamento Use private para atributos!
Java Bsico 113

private
Mtodos private s podem ser chamados por mtodos da classe onde so declarados
class class Pessoa Pessoa { { private private int int anoDeNascimento; anoDeNascimento; ... ... int int getAnoDeNascimento(){ getAnoDeNascimento(){ } } return return formatarAno(); formatarAno();

private private int int formatarAno(){ formatarAno(){ //cdigo //cdigo para para formatar formatar o o ano ano } } } } ... ...
Java Bsico 114

Outros modificadores
final

Pode ser utilizado para em qualquer membro de uma classe Torna o atributo constante O atributo no pode ser alterado depois de inicializado Mtodos final no podem ser redefinidos Classes final no podem ser estendidas

Java Bsico

115

Outros modificadores
final
class ConstantesBanco { public static final int NUM_MAXIMO_CONTAS; private static final double LIMITE_MIN_CHEQUES; private static final int NUM_CHEQUES_TALAO; ... }
Atributos final geralmente so declarados como static tambm Pelo padro de codificao, constantes devem ter seus nomes em maisculas

Java Bsico

116

Outros modificadores
static

Pode ser usado somente em atributos e mtodos Atributos static pertencem classe e no aos objetos S existe uma cpia de um atributo static de uma classe, mesmo que haja vrios objetos da classe Atributos static so muito usados para constantes O acesso feito usando o nome da classe:

int numCheques = numTaloes * ConstantesBanco.NUM_CHEQUES_TALAO;


Java Bsico 117

Outros modificadores
static
Mtodos static pertencem a classes e no a objetos Podem ser usados mesmo sem criar os objetos S podem acessar diretamente atributos estticos O acesso feito usando o nome da classe: x = Math.random(); media = Funcoes.calcularMedia(valores);

Java Bsico

118

Outros modificadores
native

Usado somente em mtodos Cdigo nativo Usado somente em atributos No armazenado como parte persistente do objeto Usado somente em mtodos Acesso concorrente
Java Bsico 119

transient

synchronized

Criao e remoo de objetos

Java Bsico

120

Criao de objetos
Objetos precisam ser criados antes de serem utilizados Construtores precisam ser definidos na classe A criao feita com o operador new
Conta Conta c c= = new new Conta(); Conta();
construtor

Java Bsico

121

Construtores
Alm de mtodos e atributos, uma classe pode conter construtores Construtores definem como os atributos de um objeto devem ser inicializados So semelhantes a mtodos, mas no tm tipo de retorno O nome do construtor deve ser exatamente o nome da classe. Uma classe pode ter diversos construtores, diferenciados pelos parmetros

modificador

nome da classe

parmetros

corpo do construtor } public public Navio(String Navio(String umNome, umNome, int int umNumero) umNumero) { { nome nome = = umNome; umNome; numCabines numCabines = = umNumero; umNumero; } }
Java Bsico 122

Construtor default
Caso no seja definido um construtor, um construtor default fornecido implicitamente O construtor default inicializa os atributos com seus valores default O construtor default no tem parmetros:
public public Conta() Conta() { { } }
Java Bsico 123

Valores default para atributos


Tipo byte, short, int, long float double char Tipos referncia (Strings, arrays, objetos em geral) boolean Valor Default 0 0.0f 0.0 `\u0000` null false

Java Bsico

124

Outros construtores
Podem ser criados novos construtores, com parmetros
class class Conta Conta { { String String numero; numero; double double saldo; saldo; public public Conta(String Conta(String numeroConta, numeroConta, double double saldoInicial){ saldoInicial){ numero numero = = numeroConta; numeroConta; saldo saldo = = saldoInicial; saldoInicial; } } ... ... } }

Quando definido um construtor com parmetros, o construtor default no mais gerado Java Bsico 125

Mais sobre criao de objetos


Conta c; ... c = new Conta(12345,100);
Atribui varivel c a referncia criada para o novo objeto responsvel por inicializar os atributos do objeto criado

responsvel por criar um objeto do tipo Conta em memria

Java Bsico

126

Remoo de objetos
No existe mecanismo de remoo explcita de objetos da memria em Java (como o free() de C++) O Garbage Collector (coletor de lixo) de Java elimina objetos da memria quando eles no so mais referenciados Voc no pode obrigar que a coleta de lixo seja feita A mquina virtual Java decide a hora da coleta de lixo

Java Bsico

127

Referncias
Objetos so manipulados atravs de referncias
Conta c = null; c == null

c = new Conta(1287,0);

c.getSaldo(); chama o mtodo getSaldo() do objeto referenciado pela varivel c


Java Bsico 128

Referncias
Mais de uma varivel pode armazenar referncias para um mesmo objeto (aliasing) Conta a = new Conta(123-4,340.0); Conta b; a e b passam a referenciar a mesma conta b = a; b.creditar(100); System.out.println(a.getSaldo()); qualquer efeito via b refletido via a
Java Bsico 129