23
Programação I Aula 2 (Métodos) Prof. Gilberto Irajá Müller Prof. Gilberto Irajá Müller Última atualização 2/3/2009

Programação I Aula 2 (Métodos) Prof. Gilberto Irajá Müller Última atualização 2/3/2009

Embed Size (px)

Citation preview

Page 1: Programação I Aula 2 (Métodos) Prof. Gilberto Irajá Müller Última atualização 2/3/2009

Programação IAula 2(Métodos)

Prof. Gilberto Irajá MüllerProf. Gilberto Irajá Müller

Última atualização 2/3/2009

Page 2: Programação I Aula 2 (Métodos) Prof. Gilberto Irajá Müller Última atualização 2/3/2009

Métodos• É a parte da classe que se encarrega de detalhar

como as operações serão feitas;• Todo o processamento que um programa Java faz

está definido dentro dos métodos de suas classes• Utilizando ou não os dados dos seus objetos,

representados pelos atributos (getter e setter)

Page 3: Programação I Aula 2 (Métodos) Prof. Gilberto Irajá Müller Última atualização 2/3/2009

Métodos• Em java a sintaxe para criação de métodos é:

modificadores tipo de retorno nome do método(lista de parâmetros) { // código...}

• Modificadores: Pode-se citar a visibilidade (private, public, protected, package, ...)

• Tipo de retorno: Sempre mencionamos que um método é uma função. Neste caso, o tipo de retorno é o tipo de dado (int, double, String) que o método retornará. Caso o método não tenha retorno, ou seja, um procedimento, então, utiliza-se a palavra reservada void

• Lista de parâmetros: Os métodos poderão receber parâmetros que serão úteis para o seu propósito. Então, cada parâmetro (que é uma variável), recebe duas informações: tipo de dado e o nome. Ex: String nome, double salario, entre outros. Caso o método não possua parâmetros, então, devemos utilizar apenas o parênteses () sem informação.

Page 4: Programação I Aula 2 (Métodos) Prof. Gilberto Irajá Müller Última atualização 2/3/2009

Métodos• Implementação do método setPeso da classe Pessoa (revisão)

public class Pessoa { public String nome; private double altura; private double peso; private int idade;

public void setPeso(double novoPeso) { peso = novoPeso; }}

• Basicamente, este método irá alterar o atributo “peso” do objeto através do valor do parâmetro “novoPeso”

Modificador

Tipo de Retorno

Parâmetro

Page 5: Programação I Aula 2 (Métodos) Prof. Gilberto Irajá Müller Última atualização 2/3/2009

• A sintaxe para a chamada de métodos em java é:

Identificador do objeto (ou variável).nome do método(lista de parâmetros);

Identificador do objeto (ou variável).nome do método();

• Exemplo

Pessoa p1 = new Pessoa();

Pessoa p2 = new Pessoa(); p1.setPeso(80.0);p2.setPeso(70.0);

Métodos

nome: nullaltura: 0.0peso: 70.0idade: 0

Pessoa2

p1

p2

nome: nullaltura: 0.0peso: 80.0idade: 0

Pessoa1

Page 6: Programação I Aula 2 (Métodos) Prof. Gilberto Irajá Müller Última atualização 2/3/2009

• Exercício: Codificar os métodos setNome(), setAltura() e setIdade para a classe Pessoa

• E o método getPeso() ? Como é realizado o retorno do valor de um método? Até o momento, criamos um método que não tem retorno (void)

Métodos

Page 7: Programação I Aula 2 (Métodos) Prof. Gilberto Irajá Müller Última atualização 2/3/2009

• Exercício: Crie uma classe Circulo com um atributo inteiro chamado “raio”. Escreva o método alteraRaio (lembre-se: esse é um método do tipo setter). Como ficaria o Diagrama de Classes?

• Exercício: Crie o objeto do tipo Circulo (nossa classe) e chame o método alteraRaio.

Métodos

Page 8: Programação I Aula 2 (Métodos) Prof. Gilberto Irajá Müller Última atualização 2/3/2009

• Saída de dados• Para visualizar os dados dos objetos, utilizaremos uma classe

“interna” do java, ou seja, uma classe pronta com seus métodos e atributos.

• System.out.println();• System -> classe• Out -> objeto• Println() -> método

• Vamos criar um método em nossa classe Pessoa que permitirá visualizar os dados na tela do computador

public void exibeDados() {System.out.println(nome);System.out.println(peso);System.out.println(altura);System.out.println(idade);

}

Métodos

Page 9: Programação I Aula 2 (Métodos) Prof. Gilberto Irajá Müller Última atualização 2/3/2009

• Saída de dadospublic void exibeDados() {

System.out.println(nome);System.out.println(peso);System.out.println(altura);System.out.println(idade);

}Utilização:Pessoa p1 = new Pessoa(); p1.setNome(“João da Silva”); p1.setAltura(1.80); p1.setPeso(80.0); p1.setIdade(30); p1.exibeDados();

// Saída na tela do computador João da Silva 1.80 80.0

30

Métodos

Page 10: Programação I Aula 2 (Métodos) Prof. Gilberto Irajá Müller Última atualização 2/3/2009

• Concatenação de dados• Em java, podemos concatenar strings utilizando o operador “+”

• “João” + “ da “ + “Silva” -> “João da Silva”

• Caso a primeira ocorrência seja do tipo string, então, podemos concatenar dados do tipo string com int, double, .... • “João “ + 1 + “ “ + 2.50 -> “João 1 2.50”

Melhorando a saída de dados do método exibeDados()public void exibeDados() {

System.out.println(“Nome: “ + nome);System.out.println(“Peso: “ + peso);System.out.println(“Altura: “ + altura);System.out.println(“Idade: “ + idade);

}

Qual seria o resultado na tela do computador?

Métodos

Page 11: Programação I Aula 2 (Métodos) Prof. Gilberto Irajá Müller Última atualização 2/3/2009

• Construtores• Construtor é um método especial usado para inicializar

objetos quando estes são criados.• Características:

• Tem o mesmo nome da classe• É automaticamente chamado pelo operador new• Não tem tipo de retorno (mas não se escreve void)

• Exemplo para a classe Pessoapublic Pessoa(String n, double a, double p, int i) {

nome = n; altura = a;

peso = p;idade = i;

}

Métodos

Page 12: Programação I Aula 2 (Métodos) Prof. Gilberto Irajá Müller Última atualização 2/3/2009

• Construtores• A chamada do construtor é automática, ou seja, quando

o objeto é criado (instanciado) utilizando new.

• ExemploPessoa p1 = new Pessoa(“João da Silva”, 1.80, 80.0, 30);

• O construtor poderá ser chamado SOMENTE no momento da criação do objeto = new.

Métodos

nome: João da Silvaaltura: 1.80peso: 80.0idade: 30

Pessoa1p1

Page 13: Programação I Aula 2 (Métodos) Prof. Gilberto Irajá Müller Última atualização 2/3/2009

• Construtores• Exercício: Para a classe Circulo, crie um método

construtor em que todo o objeto do tipo Circulo tenha raio = 5

• Crie uma classe do tipo Empregado. Ao ser criado o objeto do tipo Empregado, o seu salário deverá iniciar com 2000.00 e o número de dependentes 0.

Métodos

Page 14: Programação I Aula 2 (Métodos) Prof. Gilberto Irajá Müller Última atualização 2/3/2009

• Sobrecarga de métodos ou de construtores• Numa mesma classe, dois ou mais métodos (ou

construtores) podem ter o mesmo nome, desde que tenham tipos ou quantidades de parâmetros diferentes (lista de parâmetros). Chama-se a isso sobrecarga de métodos ou de construtores.

• Chamamos a lista de parâmetros de assinatura de um método

Métodos

Page 15: Programação I Aula 2 (Métodos) Prof. Gilberto Irajá Müller Última atualização 2/3/2009

• Sobrecarga de métodos ou de construtores

• Exemplopublic class Pessoa { public String nome; private double altura; private double peso; private int idade;

public Pessoa(String n) { nome = n; }

public Pessoa(String n, double a) { nome = n; altura = a; }}

Métodos

Mesmo nome, porém, com a

assinatura diferente

Mesmo nome, porém, com a

assinatura diferente

Page 16: Programação I Aula 2 (Métodos) Prof. Gilberto Irajá Müller Última atualização 2/3/2009

• Sobrecarga de métodos ou de construtores• O compilador Java identifica qual o construtor que deve

ser acionado, dependendo dos argumentos que são passados para ele na chamada.

• O mesmo mecanismo vale para métodos sobrecarregados.

• Se não dotarmos nossa classe de construtor(es), Java adota um construtor padrão (default), sem parâmetros, que atribui valores default aos atributos do objeto. Era o que estava acontecendo com a nossa classe Pessoa() antes de introduzirmos os construtores. Pessoa p1 = new Pessoa();

• Se dotarmos nossa classe de um ou mais construtores, Java não adotará construtor padrão para ela. Então, a chamada Pessoa p1 = new Pessoa(); passará a ser um erro de compilação, pois não existe mais construtor padrão na classe.

Métodos

Page 17: Programação I Aula 2 (Métodos) Prof. Gilberto Irajá Müller Última atualização 2/3/2009

• Exercício: Na classe Empregado você tem um construtor com dois parâmetros (salário e dependentes). Crie um outro construtor (sobrecarga) para Empregado, com dois parâmetros, o nome do empregado e o seu salário.

Métodos

Page 18: Programação I Aula 2 (Métodos) Prof. Gilberto Irajá Müller Última atualização 2/3/2009

• De modo a testarmos nossa classe Pessoa ou Empregado, podemos utilizar um recurso que chama-se de CLASSE TESTE.

• Classe Teste é uma classe que objetiva o teste de uma determinada classe (em nosso caso, Pessoa ou Empregado)

• A Classe Teste possui um método estático (veremos adiante!) chamado “main” que permite:• Criar objetos das nossas classes (Pessoa e Funcionario)• Testar os métodos e atributos de nossas classes

Classe Teste

Page 19: Programação I Aula 2 (Métodos) Prof. Gilberto Irajá Müller Última atualização 2/3/2009

• Exemplopublic class TestaPessoa{

public static void main(String args[]) {Pessoa p1 = new Pessoa(“João da Silva”, 1.80, 80.0,

30);p1.exibeDados( );

}}

• Quando executamos uma classe (um arquivo .java), Java procura o método main desta classe e executa-o. Os outros métodos só executam quando são chamados pelo método main ou por outro método qualquer da própria classe

• O arquivo de armazenamento do código acima possui extensão .java e, OBRIGATORIAMENTE, deverá ter o nome da classe principal, em nosso caso, TestaPessoa.java (Laboratório I)

Classe Teste

Page 20: Programação I Aula 2 (Métodos) Prof. Gilberto Irajá Müller Última atualização 2/3/2009

• Exercício: O que acontece (na memória e na tela) quando a classe TestaPessoa é executada?

• Exercício: Crie a classe teste para a classe Empregado e instancia três objetos do tipo Empregado.

Classe Teste

Page 21: Programação I Aula 2 (Métodos) Prof. Gilberto Irajá Müller Última atualização 2/3/2009

Hot Topic

• A palavra-chave this é utilizada para acessar o parâmetro implícito. Exemplo de sua utilização

public pessoa(String nome, double altura, double peso, int idade) {this.nome = nome;

this.altura = altura;this.peso = peso;this.idade = idade;

}• Temos os parâmetros (nome, altura, peso, idade) iguais aos nomes dos

atributos. Então, para não causar problema de referência (confusão do valor do parâmetro com o atributo), utiliza-se o this para que o java interprete de maneira correta. this.nome -> atributo nome do objeto.

Page 22: Programação I Aula 2 (Métodos) Prof. Gilberto Irajá Müller Última atualização 2/3/2009

Hot Topic

• Declaramos na classe Pessoa o atributo nome como public. Para efeitos de visibilidade, podemos acessar o atributo diretamente, ou seja, não utilizar os métodos getters e setters.

• Exemplo• Pessoa p1 = new Pessoa();• p1.nome = “João da Silva”;

• Até o momento, estávamos utilizando p1.setNome(“João da Silva”); por questões de integridade dos dados. Dessa forma, podemos alterar um atributo sem utilizar métodos! PERIGOSO!

• Os modificadores private/protected/package/public permitem fazer isso (visibilidade). Como orientação, usaremos private para os atributos.

• Os demais atributos (altura, peso, idade) podem ser atribuídos dessa forma?

Page 23: Programação I Aula 2 (Métodos) Prof. Gilberto Irajá Müller Última atualização 2/3/2009

Métodos• Referências bibliográficas

• http://inf.unisinos.br/~anibal• http://www.google.com.br

• HORSTMANN, C. Big Java. Bookman, 2004.• DEITEL, H. M.; DEITEL, Paul J. Java: como programar. 6.

ed. São Paulo: Pearson, 2006.