curso de aprendizado industrial desenvolvedor web disciplina: programação orientada a objetos i...

21

Upload: internet

Post on 21-Apr-2015

106 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa This
Page 2: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa This

Curso de Aprendizado Industrial

Desenvolvedor WEB

Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa

This

Page 3: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa This

Auto-referência com o this - Invocando métodos de Classes e Objetos

Page 4: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa This

 Na aula passada relacionado a Orientação a Objetos, falamos como criar construtores, com ou sem parâmetros, em nossas classes.

 Nesta pequena aula, iremos aprender como referenciar membros de um objeto através da keyword 'this', que é uma ferramenta bastante usada por programadores Java em métodos dentro de Classes.

Auto referência com o this - Invocando métodos de Classes e Objetos

Page 5: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa This

  Imagine que criamos uma classe chamada "Funcionario", onde seu construtor padrão recebe uma String com o nome do funcionário, um inteiro com seu número de identificação e um double com seu salário.Se esses dados, dentro da classe são:

  private String nome; private int ID; private double salario;

Referenciando membros da classe com this

Page 6: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa This

 E o cabeçalho do construtor é: public Funcionario( String nome, int ID, double salario)

 Como faríamos a atribuição? Ora, do mesmo jeito que fizemos antes:

 nome = nome;ID = ID;salario = salario;

Page 7: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa This

 Epa! Notou que as variáveis da classe e as variáveis do cabeçalho tem o mesmo nome? E agora, como o Java vai saber que as variáveis da esquerda se referem as variáveis 'private' da classe a as da direita são as que o usuário mandou pra criar o objeto?

Page 8: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa This

  Já sei! Basta criar o método com nomes de variáveis diferentes, como fizemos antes:

  public Funcionario( String Nome, int id, double Salario){ nome = Nome; ID = id; salario = Salario;}

  Ok, isso funcionaria perfeitamente. Mas seria extremamente incômodo, e desorganizado, criar dois nomes pra um mesmo tipo de variável.

Page 9: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa This

 Não pode parecer problema agora, com essa simples aplicação. Mas em uma situação real, em que seu programa em Java terá centenas de variáveis e você tiver que criar e decorar nomes de variáveis, isso vai ser um baita problema.

 Para isso, existe o 'this', que referencia - ou seja, aponta - a própria classe!'this' em inglês, significa 'isso', 'isto'. É bem fácil seu uso, veja como ficaria nosso construtor:

Page 10: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa This

 public Funcionario( String nome, int ID, double salario){ this.nome = nome; this.ID = ID; this.salario = salario; }

 Pronto.Agora ficou óbvio que 'this.nome' é a variável 'nome' da classe "Funcionario" e 'nome' é a variável que a classe recebeu para criar um objeto!

Page 11: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa This

 Usamos o 'this' dentro da classe. Assim, sempre que colocarmos 'this.' antes de uma variável, fica implícito ao Java que estamos nos referindo aos atributos daquela Classe. Podemos usar, inclusive, em um print, caso esteja dentro da classe. Em um método, por exemplo, como veremos a seguir.

Page 12: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa This

 Outra utilidade do 'this' é passar o objeto atual como parâmetro. public Object getObjeto(){     return this;}

 Outro exemplo disso é criar o método...:public String toString()

Page 13: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa This

  ...na sua classe, e usar 'this' dentro de um print. O Java entenderá que deve ser impresso o que estiver dentro desse método 'toString()'.

 Outra utilidade do 'this' é invocar outros construtores. Para invocar um construtor dentro de outro, essa chamada deve ser o primeiro comando do construtor atual. Por exemplo, fazendo simplesmente:this;

Page 14: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa This

  Estamos chamando o construtor padrão, que não recebe parâmetros.Fazendo: this(2112);

Estamos invocando o construtor que recebe um inteiro como parâmetro.Lembrando que quando criamos um construtor que não é o padrão, o Java não vai mais criar o construtor padrão vazio. Esse construtor padrão vazio só é criado automaticamente quando não criamos nenhum construtor.

Page 15: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa This

 Vamos criar um método, dentro da classe "Funcionário", que exibe todas as informações de um objeto dessa classe. Vamos chamar de 'exibir':

 public void exibir(){ System.out.printf("O funcionário %s, de número %d recebe %.2f por mês", this.nome,this.ID,this.salario);}

Como invocar métodos de objetos que criamos

Page 16: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa This

 Para invocar, basta colocar '.exibir()' após o nome do objeto, que fará com que este método rode.Note, porém, que conforme explicamos em nossa aula sobre Classes e Objetos, essa classe é apenas uma abstração. Ou seja, esse método não existe de verdade! Ele só vai passar a existir quando criarmos um objeto dessa classe!(Na verdade ele pode existir, caso a classe fosse estática. Estudaremos isso em breve).

Page 17: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa This

  Para ilustrar a chamada de métodos de um objeto e o uso do 'this', vamos criar um funcionário - um objeto - de nome 'chefe'.O código ficará assim:

  thisMetodo.java

  public class thisMetodo{    public static void main(String[] args){  String nome = “Zezinho";  int ID=2112;   double salario = 1000;    Funcionario chefe = new Funcionario(nome, ID, salario);    chefe.exibir();  }     }

Page 18: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa This

 Funcionario.java

 public class Funcionario {  private String nome;  private int ID;  private double salario;    public Funcionario(){  System.out.println("Método construtor padrão invocado!");  }

Page 19: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa This

 public Funcionario( String nome, int ID, double salario){  this();  System.out.println(this);     this.nome = nome;  this.ID = ID;  this.salario = salario;  }

Page 20: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa This

 public String toString(){  return "Foi usado : System.out.println(this)";  }     public void exibir(){  System.out.printf("O funcionário %s, de número %d recebe %.2f por mês", this.nome,this.ID,this.salario);    }   

Page 21: Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa This

Vamos agora conhecer o Métodos get e set !!!