13

Click here to load reader

POO - 15 - Passagem de Argumentos

Embed Size (px)

Citation preview

Page 1: POO - 15 - Passagem de Argumentos

Passagem de Argumentos

Programação Orientada a Objetos

Ludimila Monjardim Casagrande 2012

Page 2: POO - 15 - Passagem de Argumentos

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.

Page 3: POO - 15 - Passagem de Argumentos

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?

Page 4: POO - 15 - Passagem de Argumentos

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);

Page 5: POO - 15 - Passagem de Argumentos

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.

Page 6: POO - 15 - Passagem de Argumentos

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

Page 7: POO - 15 - Passagem de Argumentos

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

Page 8: POO - 15 - Passagem de Argumentos

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

Page 9: POO - 15 - Passagem de Argumentos

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

Page 10: POO - 15 - Passagem de Argumentos

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

Page 11: POO - 15 - Passagem de Argumentos

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

Page 12: POO - 15 - Passagem de Argumentos

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

Page 13: POO - 15 - Passagem de Argumentos

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