Buscar

03-EstruturaGeral.pptx

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 5 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

Prévia do material em texto

22/4/14	
  
1	
  
Estrutura geral de uma classe 
Introdução a Programação II 
BCC – DEINFO – UFRPE 
sidney.ufrpe@gmail.com 
 
Até agora 
•  Definimos classes sem atributos 
–  Apenas método main 
•  A maior utilidade das classes é definir seus 
atributos e o comportamento de objetos 
Forma geral para uma classe 
pública 
•  Nome da classe igual ao nome do arquivo .java 
 
 // lista de imports 
 public class NomeDaClasse { 
 // declaração de atributos 
 // declaração de métodos 
 } 
 
	
Classe 
•  Tipo para objetos 
•  Define variáveis (atributos) e operações (métodos) 
dos objetos 
•  Exemplo: Classe Conta na representação gráfica 
(UML) 
Conta 
numero : String 
saldo: double 
creditar(double valor) 
debitar(double valor) 
Objeto 
•  Instância (exemplo) de uma classe 
•  Possui valor para cada atributo (variáveis de 
instância) 
•  Exemplo: Objetos do Tipo Conta na representação 
gráfica 
c1	
  :	
  Conta	
  
numero	
  =	
  “1246-­‐8”	
  
saldo	
  =	
  400.50	
  	
  
creditar(...)	
  
debitar(...)	
  
c2	
  :	
  Conta	
  
numero	
  =	
  “9654-­‐3”	
  
saldo	
  =	
  780.50	
  	
  
creditar(...)	
  
debitar(...)	
  
Objeto	
  c1	
   Objeto	
  c2	
  
Estado de um objeto 
•  Valor variáveis (ou atributos) de um objeto em dado 
instante 
c1 : Conta 
numero = “1246-8” 
saldo = 400.50 
... 
c1 : Conta 
numero = “1246-8” 
saldo = 300.50 
... 
c1.debitar(100)	
  
Estado antes Estado depois 
22/4/14	
  
2	
  
Atributos da classe 
•  Definem as variáveis dos objetos (instâncias) 
•  Possuem valor padrão caso nenhum seja definido 
•  Possuem um tipo de acesso definido: 
–  Public 
–  Private 
–  Protected 
–  Default (quando nenhum é definido) 
Classe Conta 
	
public class Conta { 
 public String numero; 
 public double saldo; 
 // métodos 
} 
 	
Definindo atributos 
	
tipoAcesso tipo nome = valorInicial; 
	
	
	
	
public ou private 
(mais comuns) Opcional 
Classe Conta 
•  Criando objeto do tipo conta e mudando seus 
atributos 
Conta c1 = new Conta(); 
c1.numero = “1”; 
c1.saldo = 100; 
 
Construtor 
•  Método usado para criar instâncias da classe 
–  Tem o mesmo nome da classe 
–  Usado após a palavra new 
•  O construtor que não recebe parâmetros é 
chamado de construtor padrão 
–  Se nenhum é definido o compilador cria um padrão 
•  Uma classe pode ter mais de um construtor 
 
Construtor padrão para a Classe 
Conta 
public class Conta { 
 public String numero; 
 public double saldo; 
 // métodos 
} 
 	
 public Conta() { 
 numero = null; 
 saldo = 0; 
 } 
22/4/14	
  
3	
  
Valor padrão para atributos 
•  De tipo primitivo: 
–  numérico é 0 
–  booleano é igual a false 
•  De tipo de referência é null	
•  Exemplo: ao criar uma Conta com o construtor 
padrão número = null e saldo = 0.0; 
 
 	
Definindo construtor para Conta 
public class Conta { 
 public String numero; 
 public double saldo; 
 public Conta(String num, double s) { 
 numero = num; 
 saldo = s; 
 } 
 // outros métodos 
} 
 
Definindo construtor para Conta 
•  Passando parâmetros para o construtor definido 
para Conta 
 
Conta c1 = new Conta(“1246-8”, 400.5); 
 
Conta c2 = new Conta(“9654-3”, 780.5); 
 
Construtor da Classe Conta 
•  Usando this no construtor de Conta 
public class Conta { 
 // atributos 
 public Conta(String numero, double saldo) { 
 this.numero = numero; 
 this.saldo = saldo; 
 } 
} 
 
this 
•  Referência que aponta para o próprio objeto 
•  Útil para remover ambiguidades 
–  Ex: definir se uma variável é parâmetro do método 
ou atributo da classe 
•  Facilita a leitura do código 
Exercício: 
•  Algum outro construtor pode ser útil para a Classe 
Conta? 
•  Qual seria o construtor de uma Classe Endereco 
que possui atributos do tipo string para rua, cidade 
e estado? 
22/4/14	
  
4	
  
Escondendo atributos 
•  Os atributos Saldo e número estão 
“abertos” (public) portanto podem ser modificados 
por outras classes 
–  Ex: é possível mudar o número a qualquer momento 
•  Information hiding 
–  Princípio de projeto OO que esconde os detalhes 
internos da classe 
–  Utiliza métodos para controlar o acesso aos atributos 
Escondendo atributos 
•  Tornando atributos da classe conta privativos 
public class Conta { 
 private String numero; 
 private double saldo; 
 public Conta(String numero, double saldo) {...} 
} 
 	
Métodos 
•  Definem as formas de interagir com os objetos de um 
tipo 
•  Interface da classe 
•  Exemplo: 
•  Interface de uma conta: debitar, creditar, etc 
•  Interface de um carro: acelerar, freiar, etc 
Métodos debitar e creditar 
public class Conta { 
 // atributos privativos 
 // método construtor 
 public void debitar(double valor) { 
 this.saldo = this.saldo - valor; 
 } 
 public void creditar(double valor) { 
 this.saldo = this.saldo + valor; 
 } 
 // métodos get e set 
} 
 
Métodos 
•  Idealmente, toda mudanças em um objeto devem ser 
feita através de seus métodos (interface) 
•  Exemplos: 
1.  para colocar o velocímetro de um carro em 100 km/
h é preciso acelerar 
2.  não posso mudar o saldo de uma conta sem 
colocar ou tirar dinheiro 
public vs private 
•  Regra padrão: 
–  atributos private 
–  métodos public 
•  Quando necessário outros modificadores podem 
ser usados 
–  Default (classes no mesmo pacote podem acessar) 
–  Protected (subclasses podem acessar) 
22/4/14	
  
5	
  
Métodos de acesso (get/set) 
•  Boa prática de programação para controlar 
mudança nos atributos 
–  Essenciais para atributos privativos 
•  Método get permite leitura no atributo 
–  Ex: getNumero 
•  Método set permite atualização do atributo 
–  Ex: setSaldo 
Get/set para Classe Conta 
public class Conta { 
 // atributos, construtor, debitar, creditar 
 public String getNumero() { 
 return this.numero; 
 } 
 public void setSaldo(double saldo) { 
 if (saldo > 0) this.saldo = saldo; 
 } 
 public double getSaldo() { 
 return this.saldo; 
 } 
} 
Atenção quando programar! 
•  Variável de Tipo Primitivo vs Tipo Referência 
•  Acesso a ponteiro nulo 
•  Comparação de referência vs comparação de 
conteúdo 
Acesso à referência nula 
•  Boa prática: inicializar todas as variáveis de 
referência 
•  Invocar um método de uma referência nula (null) 
resulta em erro de execução que interrompe o 
programa 
 	
 Conta c; 
 c.debitar(10); Levanta	
  a	
  exceção	
  
NullPointerExcepMon	
  
Tipo primitivo vs Tipo referência 
int num = 2; 
int num2 = num; 
 
2	
   2	
  
num	
   num2	
  
c1,	
  c2:	
  Conta	
  
numero	
  =	
  “1”	
  
...	
  
...	
  
c1	
  
c2	
  
•  Primitivo: atribuição copia o valor 
•  Referência: atribuição copia a referência 
Conta c1 = new Conta(“1”,0); 
Conta c2 = c1; 
Comparação entre objetos 
•  Deve ser feita sempre usando o método equals 
•  Exemplo: comparação entre contas c1 e c2 
c1.getNumero() 
== 
c2.getNumero() 
c1.getNumero().equals( 
c2.getNumero()) 
Comparando 
referências 
Comparando 
conteúdos

Outros materiais