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)
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.
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;
}
Modificador
Parâmetro
Tipo de Retorno
}
• Basicamente, este método irá alterar o atributo “peso” do objeto através
do valor do parâmetro “novoPeso”
Métodos
•
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();
p1
Pessoa p2 = new Pessoa();
p1.setPeso(80.0);
p2.setPeso(70.0);
p2
Pessoa1
nome: null
altura: 0.0
peso: 80.0
idade: 0
Pessoa2
nome: null
altura: 0.0
peso: 70.0
idade: 0
Métodos
•
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
•
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
•
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
•
Saída de dados
public 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
•
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
• 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 Pessoa
public Pessoa(String n, double a, double p, int i) {
nome = n;
altura = a;
peso = p;
idade = i;
}
Métodos
• Construtores
• A chamada do construtor é automática, ou seja, quando o
objeto é criado (instanciado) utilizando new.
• Exemplo
Pessoa p1 = new Pessoa(“João da Silva”, 1.80, 80.0, 30);
p1
Pessoa1
nome: João da Silva
altura: 1.80
peso: 80.0
idade: 30
• O construtor poderá ser chamado SOMENTE no momento da
criação do objeto = new.
Métodos
• 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
• 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
• Sobrecarga de métodos ou de construtores
•
Exemplo
public 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;
}
}
Mesmo nome,
porém, com a
assinatura
diferente
Métodos
• 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
• 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.
Classe Teste
• 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
• Exemplo
public 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
• 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.
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.
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?
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.
Download

Nota de Aula