Buscar

JAVA Classes, Objetos, Atributos e Metodos LP

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 45 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 45 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 45 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

85Java Básico
Classes e Objetos:
atributos e métodos
86Java Básico
Programação Orientada a Objetos
� Olhar o mundo como se tudo pudesse ser 
representado por objetos
� Estruturação do programa é baseada na 
representação de objetos do mundo real 
(estados + comportamento)
� Vantagens
− Facilidade de manutenção
− Maior extensibilidade
− Maior reuso
87Java Básico
Objeto DVD
parar()parar()
pausar()pausar()
avancar()avancar()
voltar()voltar()
tempoDecorridotempoDecorrido
horaAtualhoraAtual
tipoSistematipoSistema
alterarHora()alterarHora()
duracaoDiscoduracaoDisco
tocar()tocar()
carregarDisco()carregarDisco()
88Java Básico
Classes e Objetos
� Classes especificam a estrutura e o 
comportamento dos objetos
� Classes são como "moldes" para a criação de 
objetos
� Objetos são instâncias de classes.
89Java Básico
Objetos
� Um objeto representa uma entidade do 
mundo real
� Todo objeto tem
Identidade
Estado
Comportamento
90Java Básico
Objetos
� Identidade
− Todo objeto é único e pode ser distinguido de 
outros objetos
� Estado
− Todo objeto tem estado, que é determinado 
pelos dados contidos no objeto
� Comportamento
− O comportamento de um objeto é definido pelos 
serviços/operações que ele oferece
91Java Básico
 Número Saldo
 21.342-7 875,32
creditar
debitar
Objeto Conta Bancária
92Java Básico
Estados do Objeto Conta
creditar(20.00)
 Número Saldo
 21.342-7 875,32
creditar
debitar
 Número Saldo
 21.342-7 895,32
creditar
debitar
93Java Básico
Classe e objeto Conta Bancária
 Número Saldo
 String double
creditar
debitar
 Número Saldo
 21.342-7 875,32
creditar
debitar
 Número Saldo
 89.342-X105,33
creditar
debitar
classeclasse
objetosobjetosinstanciaçãoinstanciação
94Java Básico
Definição de Classes em Java
class NomeDaClasse {
 CorpoDaClasse 
}
class NomeDaClasse {
 CorpoDaClasse 
}
O corpo de uma classe pode conter 
• atributos
• métodos
• construtores
• outras classes... 
95Java Básico
Estrutura básica de uma classe 
Java
class NomeDaClasse {
 atributo1;
 atributo2;
 ...
 método1 {
 Corpo do método1
 }
 método2 {
 Corpo do método2
 }
}
class Conta {
 CorpoDaClasse
}
class Conta {
 CorpoDaClasse
}
96Java Básico
Atributos
97Java Básico
Declaração de atributos
double LIMITE_MAXIMO;double LIMITE_MAXIMO;
private static String numero;private static String numero;
double saldo;double saldo;
modificadores tipo nome ;
private String nome, sobrenome;private String nome, sobrenome;
Vários atributos podem ser
 declarados na mesma linha
int numEstoque = 8;int numEstoque = 8; Um atributo pode ser 
inicializado na declaração
98Java Básico
Exemplos de atributos
class Livro {
 int anoDePublicacao;
 int numeroDePaginas;
 String titulo;
 ...
} class Conta {
 String numero;
 double saldo;
 ...
}
class Cabine {
 int nivel;
 String codigo;
 int codCategoria
 int lotacaoMaxima;
 ...
}
99Java Básico
Métodos
100Java Básico
O que são métodos? 
Métodos são operações que realizam ações
 e modificam os valores dos atributos do objeto 
responsável pela sua execução
Métodos são operações que realizam ações
 e modificam os valores dos atributos do objeto 
responsável pela sua execução
101Java Básico
Declaração de métodos
modificadores tipo de retorno nome ;( )parâmetros
private double obterRendimento(String numConta, int mes);
nomeDoMetodo()nomeDoMetodo() { {
 
 Corpo do métodoCorpo do método
 
 }}
102Java Básico
O corpo do método
� O corpo do método contém os comandos que 
determinam as ações do método
� Esses comandos podem
− realizar simples atualizações dos atributos de um objeto
− retornar valores
− executar ações mais complexas como chamar métodos de 
outros objetos
� O corpo do método também pode conter 
declarações de variáveis
− Variáveis cuja existência e valores são válidos somente 
dentro do método em que são declaradas.
103Java Básico
Exemplo de Método
class Conta {
 String numero;
 double saldo;
 void creditar(double valor) {
 saldo = saldo + valor;
 } 
 ... 
}
104Java Básico
Métodos e tipo de retorno
class Conta {
 String numero;
 double saldo;
 
 String getNumero() {
 return numero;
 }
 double getSaldo() {
 return saldo;
 }
 ...
}
Os métodos que retornam valores como
resultado usam o comando return
Os métodos que retornam valores como
resultado usam o comando return
105Java Básico
Mais sobre métodos
class Conta {class Conta {
 
 ......
 
 voidvoid debitar(double valor) { debitar(double valor) {
 
 saldo = saldo - valor;saldo = saldo - valor;
 
 }}
}}
Por que o debitar não tem como parâmetro
o número da conta?
Por que o debitar não tem como parâmetro
o número da conta?
Usa-se void para indicar que o método não retorna nenhum valor,
 apenas altera os valores dos atributos de um objeto
106Java Básico
Chamada de métodos
� Métodos são invocados em instâncias (objeto) de alguma 
classe.
− Podem também ser invocados a partir da própria classe 
(métodos estáticos). 
� Os objetos se comunicam para realizar tarefas
� Parâmetros são passados por “cópia”
� A comunicação é feita através da chamada de métodos
conta.creditar(45.30)
variável contendo
referência para 
objeto
nome do 
método a ser
executado
operador de chamada 
de método
107Java Básico
Modificadores
108Java Básico
Modificadores
� Modificadores de acesso
− public
− protected
− private
− default (friendly)
� Outros modificadores
− static
− final
− native
− transient
− synchronized
Valor padrão quando nenhum 
modificador de acesso é 
especificado
109Java Básico
Modificadores de Acesso
� Controlam o acesso aos membros de uma 
classe
� Membros de uma classe:
− A própria classe
− Atributos
− Métodos e construtores (um tipo especial de 
métodos)
� Não são aplicados à variáveis
110Java Básico
public
� Uma classe public pode ser instanciada por qualquer classe
� Atributos public podem ser acessados (lidos, alterados) por 
objetos de qualquer classe
� Métodos public podem ser chamados por métodos de qualquer 
classe
public class Conta {
 public String numero;
 public double saldo;
 public void creditar(double valor) {
 saldo = saldo + valor;
 } 
 ... 
}
public class Conta {
 public String numero;
 public double saldo;
 public void creditar(double valor) {
 saldo = saldo + valor;
 } 
 ... 
}
111Java Básico
protected
� Usado somente para atributos e métodos
� 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
� Métodos protected podem ser chamados por objetos de 
classes dentro do mesmo pacote ou de qualquer subclasse da 
classe ao qual ele pertence
public class Conta {
 protected String numero;
 protected double saldo;
 protected void creditar(double valor) {
 saldo = saldo + valor;
 } 
 ...
 
 
}}
public class Conta {
 protected String numero;
 protected double saldo;
 protected void creditar(double valor) {
 saldo = saldo + valor;
 } 
 ...
 
 
}}
112Java Básico
default (friendly)
� A classe é visível somente por classes do mesmo pacote
� Se um atributo não tem nenhum modificador de acesso 
associado, ele é “implicitamente”definido como friendly, e 
só é visível para objeto de classes do mesmo pacote
� Se um método não 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 Conta {class Conta {
 
 String numero;String numero;
 
 double saldo;double saldo;
 
 void creditar(double valor) {void creditar(double valor) {
 
 saldo = saldo + valor;saldo = saldo + valor;
 
 } } 
 
 ... ... 
}}
class Conta {class Conta {
 
 String numero;String numero;
 
 double saldo;double saldo;
 
 void creditar(double valor) {void creditar(double valor) {
 
 saldo = saldo + valor;saldo = saldo + valor;
 
 } } 
 
 ... ... 
}}
113Java Básico
private e encapsulamento
class Pessoa {class Pessoa {
 
 privateprivate int anoDeNascimento; int anoDeNascimento;
 
 privateprivate String nome, sobrenome; String nome, sobrenome;
 
 privateprivate boolean casada = false; boolean casada = false;
 
 ......
}}
class Pessoa {class Pessoa {
 
 privateprivate int anoDeNascimento; int anoDeNascimento;
 
 privateprivate String nome, sobrenome; String nome, sobrenome;
 
 privateprivate boolean casada = false; boolean casada = false;
 
 ......
}}
� Java não obriga o uso de private, mas vários 
autores consideram isso essencial para a 
programação orientada a objetos
� Impacto em coesão e acoplamento
� Use private para atributos!
atributos private podem ser acessados somente por 
objetos da mesma classe
114Java Básico
private
� Métodos private só podem ser chamados por 
métodos da classe onde são declarados
class class PessoaPessoa { {
 
 
 
 privateprivate int anoDeNascimento; int anoDeNascimento;
 
 ......
 
 int getAnoDeNascimento(){int getAnoDeNascimento(){
 
 return formatarAno(); return formatarAno(); 
 
 }}
 
 private private int formatarAno(){int formatarAno(){
 
 //código para formatar o ano//código para formatar o ano
 
 }}
 
 
 
 ... ... 
}}
class class PessoaPessoa { {
 
 
 
 privateprivate int anoDeNascimento; int anoDeNascimento;
 
 ......
 
 int getAnoDeNascimento(){int getAnoDeNascimento(){
 
 return formatarAno(); return formatarAno(); 
 
 }}
 
 private private int formatarAno(){int formatarAno(){
 
 //código para formatar o ano//código para formatar o ano
 
 }}
 
 
 
 ... ... 
}}
115Java Básico
Outros modificadores
� final
− Pode ser utilizado para em qualquer membro de uma 
classe
− Torna o atributo constante
− O atributo não pode ser alterado depois de 
inicializado
− Métodos final não podem ser redefinidos
− Classes final não podem ser estendidas
116Java Básico
Outros modificadores
� final
class ConstantesBanco {class ConstantesBanco {
 
 public static public static finalfinal int NUM_MAXIMO_CONTAS; int NUM_MAXIMO_CONTAS;
 
 private static private static finalfinal double LIMITE_MIN_CHEQUES; double LIMITE_MIN_CHEQUES;
 
 private static private static finalfinal int NUM_CHEQUES_TALAO; int NUM_CHEQUES_TALAO;
 
 ......
}}
Pelo padrão de codificação, constantes devem
 ter seus nomes em maiúsculas
Atributos final 
geralmente são 
declarados como 
static também
117Java Básico
Outros modificadores
� static
− Pode ser usado somente em atributos e métodos
− Atributos static pertencem à classe e não aos 
objetos
− Só existe uma cópia de um atributo static de 
uma classe, mesmo que haja vários objetos da 
classe
− Atributos static são muito usados para 
constantes
− O acesso é feito usando o nome da classe:
int numCheques = numTaloes * int numCheques = numTaloes * 
 
 ConstantesBanco.NUM_CHEQUES_TALAOConstantesBanco.NUM_CHEQUES_TALAO; ; 
118Java Básico
Outros modificadores
� static
− Métodos static pertencem a classes e não a 
objetos
− Podem ser usados mesmo sem criar os objetos
− Só podem acessar diretamente atributos 
estáticos
− O acesso é feito usando o nome da classe:
x = x = MathMath.random();.random();
media = media = FuncoesFuncoes.calcularMedia(valores);.calcularMedia(valores);
119Java Básico
Outros modificadores
� native
− Usado somente em métodos
− Código nativo
� transient
− Usado somente em atributos
− Não é armazenado como parte persistente do 
objeto
� synchronized
− Usado somente em métodos
− Acesso concorrente
120Java Básico
Criação e remoção de objetos
121Java Básico
Criação de objetos
� Objetos precisam ser criados antes de serem 
utilizados
� Construtores precisam ser definidos na 
classe
� A criação é feita com o operador new
Conta c = Conta c = newnew Conta(); Conta();Conta c = Conta c = newnew Conta(); Conta();
construtor
122Java Básico
Construtores
� Além de métodos e atributos, uma classe pode conter construtores
� Construtores definem como os atributos
de um objeto devem ser inicializados
� São semelhantes a métodos, mas não têm tipo de retorno
� O nome do construtor deve ser exatamente o nome da classe.
� Uma classe pode ter diversos construtores, diferenciados pelos 
parâmetros
nome da classe parâmetros( )
corpo do construtor
{
}
modificador
public Navio(String umNome, int umNumero) {public Navio(String umNome, int umNumero) {
 
 nome = umNome;nome = umNome;
 
 numCabines = umNumero;numCabines = umNumero;
}}
public Navio(String umNome, int umNumero) {public Navio(String umNome, int umNumero) {
 
 nome = umNome;nome = umNome;
 
 numCabines = umNumero;numCabines = umNumero;
}}
123Java Básico
Construtor default
public Conta() {public Conta() {
}}
public Conta() {public Conta() {
}}
� Caso não seja definido um construtor, um 
construtor default é fornecido 
implicitamente
� O construtor default inicializa os atributos 
com seus valores default
� O construtor default não tem parâmetros:
124Java Básico
Valores default para atributos
TipoTipo Valor DefaultValor Default
byte, short, int, long 0
float 0.0f
double 0.0
char `\u0000`
Tipos referência (Strings, arrays, 
objetos em geral)
null
boolean false
125Java Básico
Outros construtores
class Conta {class Conta {
 
 String numero;String numero;
 
 double saldo;double saldo;
 
 public public Conta(String numeroConta, double Conta(String numeroConta, double 
saldoInicial){saldoInicial){
 
 numero = numeroConta;numero = numeroConta;
 
 saldo = saldoInicial;saldo = saldoInicial;
 
 }}
 
 ......
}}
class Conta {class Conta {
 
 String numero;String numero;
 
 double saldo;double saldo;
 
 public public Conta(String numeroConta, double Conta(String numeroConta, double 
saldoInicial){saldoInicial){
 
 numero = numeroConta;numero = numeroConta;
 
 saldo = saldoInicial;saldo = saldoInicial;
 
 }}
 
 ......
}}
Quando é definido um construtor com parâmetros,
o construtor default não é mais gerado
• Podem ser criados novos construtores, 
com parâmetros
126Java Básico
Conta c;Conta c;
......
c = c = newnew Conta(“12345”,100); Conta(“12345”,100);
responsável por 
inicializar os 
atributos do 
objeto criado
Mais sobre criação de objetos
responsável por 
criar um objeto do 
tipo Conta em 
memória
Atribui à variável 
c a referência 
criada para o 
novo objeto
127Java Básico
Remoção de objetos
�Não existe mecanismo de remoção explícita de objetos 
da memória em Java (como o free() de C++)
� O Garbage Collector (coletor de lixo) de Java elimina 
objetos da memória quando eles não são mais 
referenciados
� Você não pode obrigar que a coleta de lixo seja feita
� A máquina virtual Java decide a hora da coleta de lixo
128Java Básico
Referências
Objetos são manipulados através de referências
c == nullConta c = null;
c = new Conta(“1287”,0);
c.getSaldo();
c
chama o método getSaldo() do 
objeto referenciado pela 
variável c
129Java Básico
Mais de uma variável pode armazenar referências 
para um mesmo objeto (aliasing)
Conta Conta aa = new Conta(“123-4”,340.0); = new Conta(“123-4”,340.0);
Conta Conta bb;;
b = ab = a; ; 
b.creditar(100);b.creditar(100);
System.out.println(System.out.println(a.getSaldo());a.getSaldo());
a e b passam a referenciar
a mesma conta
qualquer efeito via b
é refletido via a
Referências

Outros materiais