Click here to load reader
View
770
Download
1
Embed Size (px)
Citation preview
Passagem de Argumentos
Programação Orientada a Objetos
Ludimila Monjardim Casagrande 2012
Passagem de Argumentos ©2012 Ludimila Monjardim Casagrande 2
Passagem de Argumentos
Em Java os argumentos só são passados por
valor, isto é, não existe passagem de
argumentos por referência.
Quando um argumento é passado para um
método, na prática o que é passado é uma
cópia do valor do argumento.
Passagem de Argumentos ©2012 Ludimila Monjardim Casagrande 3
Passagem de Argumentos
Considere o seguinte método:
public void incrementa5(int numero) {
numero += 5; }
int x = 0;
incrementa5(x);
System.out.println(“Agora x é: ” + x);
Uma cópia do valor de x é
passada como argumento
para o método.
Qual é o resultado impresso na tela?
Passagem de Argumentos ©2012 Ludimila Monjardim Casagrande 4
Passagem de Argumentos
Nesse caso, para que o valor da variável x realmente seja alterado, o método deve retornar seu resultado e esse resultado deve ser atribuído à variável x.
public int incrementa5(int numero){
return numero += 5;
}
int x = 0;
x = incrementa5(x);
System.out.println(“Agora x é: ” + x);
Passagem de Argumentos ©2012 Ludimila Monjardim Casagrande 5
Passagem de Argumentos
Quando um objeto é passado como um
argumento de um método, na prática o valor do
argumento é uma cópia da referência para esse
objeto.
Fazendo uso dessa referência dentro do
método, é possível alterar o conteúdo do objeto
referenciado, mas a referência original em si
nunca será modificada pelo método.
Passagem de Argumentos ©2012 Ludimila Monjardim Casagrande 6
Passagem de Argumentos
public class Cor {
public String cor;
public Cor(String c){
this.cor = c; }
public static void substitua(Cor novaCor){
novaCor = new Cor("Verde"); }
public String getCor(){
return cor; }
public static void main(String[] args) {
Cor c1;
c1 = new Cor("Azul");
substitua(c1);
System.out.println(c1.getCor()); } }
Qual é o resultado impresso na tela?
1
2
3
Passagem de Argumentos ©2012 Ludimila Monjardim Casagrande 7
Passagem de Argumentos
public class Cor {
public String cor;
public Cor(String c){
this.cor = c; }
public static void substitua(Cor novaCor){
novaCor = new Cor("Verde"); }
public String getCor(){
return cor; }
public static void main(String[] args) {
Cor c1;
c1 = new Cor("Azul");
substitua(c1);
System.out.println(c1.getCor()); } }
Qual é o resultado impresso na tela?
0x0123
Azul cor
c1 Passo 1:
1
2
3
Passagem de Argumentos ©2012 Ludimila Monjardim Casagrande 8
0x0123
Passagem de Argumentos
public class Cor {
public String cor;
public Cor(String c){
this.cor = c; }
public static void substitua(Cor novaCor){
novaCor = new Cor("Verde"); }
public String getCor(){
return cor; }
public static void main(String[] args) {
Cor c1;
c1 = new Cor("Azul");
substitua(c1);
System.out.println(c1.getCor()); } }
Qual é o resultado impresso na tela?
0x0123
Azul cor
c1 Passo 1:
novaCor
Passo 2:
1
2
3
Passagem de Argumentos ©2012 Ludimila Monjardim Casagrande 9
0x0456
Passagem de Argumentos
public class Cor {
public String cor;
public Cor(String c){
this.cor = c; }
public static void substitua(Cor novaCor){
novaCor = new Cor("Verde"); }
public String getCor(){
return cor; }
public static void main(String[] args) {
Cor c1;
c1 = new Cor("Azul");
substitua(c1);
System.out.println(c1.getCor()); } }
Qual é o resultado impresso na tela?
Verde cor
0x0123
Azul cor
c1 Passo 1:
novaCor
Passo 2:
Passo 3:
1
2
3
Passagem de Argumentos ©2012 Ludimila Monjardim Casagrande 10
Passagem de Argumentos
public class Cor {
public String cor;
public Cor(String c){
this.cor = c; }
public static void substitua(Cor novaCor){
novaCor.cor = "Verde"; }
public String getCor(){
return cor; }
public static void main(String[] args) {
Cor c1;
c1 = new Cor("Azul");
substitua(c1);
System.out.println(c1.getCor()); } }
Qual é o resultado impresso na tela?
1
2
3
Passagem de Argumentos ©2012 Ludimila Monjardim Casagrande 11
0x0123
Azul cor
c1
Passagem de Argumentos
public class Cor {
public String cor;
public Cor(String c){
this.cor = c; }
public static void substitua(Cor novaCor){
novaCor.cor = "Verde"; }
public String getCor(){
return cor; }
public static void main(String[] args) {
Cor c1;
c1 = new Cor("Azul");
substitua(c1);
System.out.println(c1.getCor()); } }
Qual é o resultado impresso na tela?
Passo 1:
1
2
3
Passagem de Argumentos ©2012 Ludimila Monjardim Casagrande 12
0x0123
Azul cor
c1
0x0123
Passagem de Argumentos
public class Cor {
public String cor;
public Cor(String c){
this.cor = c; }
public static void substitua(Cor novaCor){
novaCor.cor = "Verde"; }
public String getCor(){
return cor; }
public static void main(String[] args) {
Cor c1;
c1 = new Cor("Azul");
substitua(c1);
System.out.println(c1.getCor()); } }
Qual é o resultado impresso na tela?
Passo 1:
novaCor
Passo 2:
1
2
3
Passagem de Argumentos ©2012 Ludimila Monjardim Casagrande 13
Verde
0x0123
cor
c1
0x0123
Passagem de Argumentos
public class Cor {
public String cor;
public Cor(String c){
this.cor = c; }
public static void substitua(Cor novaCor){
novaCor.cor = "Verde"; }
public String getCor(){
return cor; }
public static void main(String[] args) {
Cor c1;
c1 = new Cor("Azul");
substitua(c1);
System.out.println(c1.getCor()); } }
Qual é o resultado impresso na tela?
Passo 1:
novaCor
Passo 2:
Passo 3:
1
2
3