Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Java Bsico
85
Objeto DVD
voltar()
alterarHora() tocar()
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
Saldo
Nmero
875,32
21.342-7
debitar
Java Bsico
91
creditar(20.00)
creditar
Saldo
Nmero
Saldo
Nmero
875,32
21.342-7
895,32
21.342-7
debitar
debitar
Java Bsico
92
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
O corpo de uma classe pode conter atributos mtodos construtores outras classes...
Java Bsico 94
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
Exemplos de atributos
class Cabine { int nivel; class Livro { String codigo; int anoDePublicacao; int codCategoria int numeroDePaginas; int lotacaoMaxima; ... String titulo; }
...
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 ) ;
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
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
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.
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
Modificadores
Java Bsico
107
Modificadores
Modificadores de acesso
Outros modificadores
Modificadores de Acesso
Controlam o acesso aos membros de uma classe Membros de uma classe:
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:
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
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
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
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);
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