Escolar Documentos
Profissional Documentos
Cultura Documentos
Mtodos
Quando
definimos um objeto num programa orientado a objetos, implementamos todo o comportamento desse objeto em um ou mais mtodos. mtodo em Java equivalente a uma funo, subrotina ou procedimento em outras linguagens de programao.
Um
Mtodos
No
existe em Java o conceito de mtodos globais. Todos os mtodos devem sempre ser definidos dentro de uma classe.
y
Modificadores de Acesso
Java
controla o acesso a atributos e mtodos atravs do uso dos modificadores de acesso. So eles :
y
public: o menos restritivo de todos. Atributos e mtodos declarados como public em uma classe podem ser acessados pelos mtodos da prpria classe, por classes derivadas desta e por qualquer outra classe em qualquer outro pacote (veremos mais sobre pacotes e classes derivadas posteriormente).
Modificadores de Acesso
y
protected: Atributos e mtodos definidos como protected so acessveis pelos mtodos da prpria classe e pelas classes derivadas. private: o mais restritivo. Atributos e mtodos declarados como private s podem ser acessados pelos mtodos da prpria classe.
Modificadores de Acesso
Quando
nenhum modificador definido, os atributos e mtodos podem ser acessados pelos mtodos da prpria classe, pelas classes derivadas e por qualquer outra classe dentro do mesmo pacote. importante destacar que esse controle no se aplica s variveis locais aos mtodos.
Nome de Mtodos
O nome de um mtodo deve comear com uma letra (a-z/A-Z), um underscore (_), ou um sinal de dlar ( $ ). Os caracteres subseqentes podem incluir os dgitos de 0 a 9. Conveno : Use verbos para nome de mtodos. Faa a primeira letra do nome minscula com cada letra inicial interna maiscula. y Por exemplo :
getUserName(), getMaxPrice().
Argumentos
Um mtodo pode ter zero ou mais argumentos (ou parmetros). Caso no tenha argumentos, necessrio informar os parnteses vazios tanto na definio como na chamada do mtodo. O nome do mtodo acrescido de seus parmetros denominado assinatura do mtodo. Cada argumento deve ser declarado como definese uma varivel, especificando o seu tipo e nome.
Argumentos
Caso seja mais de um argumento, cada declarao deve estar separada por vrgula. public void setAge(int newAge) { age = newAge; } //exemplo a public void displayAge(){ System.out.println(Age is : + age); } //exemplo b public void setUser(int newAge, String newName) { age = newAge; name = newName; }//exemplo c
1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
1. 2. 3. 4. 5. 6.
possvel associar um valor de retorno a um mtodo. Para isso, preciso definir, na frente do nome do mtodo, o tipo do valor a ser retornado. O tipo pode ser um primitivo ou ento uma classe ou interface. Caso o mtodo no retorne valor algum, obrigatria a utilizao do tipo void na assinatura do mtodo. public int getAge () { return age; } public String getName () { return name; }
O comando return utilizado para passar o valor requerido de volta para quem chamou o mtodo e obrigatrio quando o tipo de retorno no void. Ele deve receber um nico valor ou uma expresso que deve ser compatvel com o tipo de retorno especificado para o mtodo. Quando o comando encontrado, o mtodo termina sua execuo imediatamente, ignorando todas as instrues subsequentes. Um comando return sem valor de retorno retorna o tipo void, mas no obrigatria sua utilizao nestes casos.
Passando um Primitivo: Quando um valor primitivo passado na chamada de um mtodo, uma cpia deste valor criada e atribuda para o argumento do mtodo responsvel por receb-la. Se o mtodo mudar este valor, apenas o valor do argumento local ao mtodo afetado. Quando o mtodo terminar sua execuo, o valor original da varivel utilizada para passar o valor primitivo na chamada do mtodo permanecer inalterado.
public void incrementa (int num) { num++; System.out.println(num : + num); } // veja agora int num = 10; incrementa (num); //Imprimir 11 System.out.println(num : + num); //Imprimir 10
Vejamos um exemplo, onde iremos definir um mtodo chamado terco, que calcula um tero do valor que foi passado como parmetro, veja que continuamos a definir main e por onde tudo se inicia.
public class UmTerco{ public static void main(String[] args){ double num; for (num=1; num<10; num++){ System.out.println ("Um tero de " + num + " " + terco(num)); } System.out.println ("*** FIM ***"); } // mtodo auxiliar terco (calcula um tero de um parametro double) private static double terco (double n){ return n/3; } }
Note que a declarao de parmetros segue a regra de declarao comum, que colocar o tipo primeiro, depois o nome do parmetro. Outro detalhe que como estamos dentro da classe que contm o mtodo no precisamos preceder o nome do mtodo com o nome da classe.
No prximo exemplo iremos criar uma funo de recebe como parmetro uma frase e retorna esta frase espacejada, ou seja, iremos adicionar um espao em branco para cada caractere da frase.
public class FraseSpace{ public static void main(String[] args){ System.out.println(espacejando ("java")); System.out.println(espacejando ("O mtodo uma boa prtica de programao")); } private static String espacejando (String f){ String aux=""; for (byte i=0;i<f.length();i++){ aux=aux+f.charAt(i)+ " "; } return aux; } }
Note que o parmetro pode ser passado tambm como um literal (java), no precisa ser uma varivel, porque estamos usando passagem de parmetro por valor, ou seja, feita uma cpia do valor e colocada na varivel que representa o parmetro no caso f.
Para finalizar temos um exemplo com dois mtodos, somatrio e produtrio, que recebem um vetor de inteiros e devolvem a somatria e o produtrio dos elementos respectivamente.
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
public class CalcVetor{ public static void main(String[] args){ int[ ] vetor = {10, 5, 7, 8, 1}; System.out.println("O somatrio " + somatorio(vetor)); System.out.println("O produtrio " + produtorio(vetor)); } private static int somatorio(int[ ] v){ int aux=0; // Elemento neutro do somatrio for (byte i = 0; i < v.length; i++) aux+=v[i]; return aux; } private static int produtorio (int[ ] v){ int aux = 1; // Elemento neutro do produtrio for (byte i = 0; i < v.length; i++) aux*= v[i]; return aux; } }
import javax.swing.*; public class Invocando{ static int saida = 10; public static void main(String[] args){ Invocando obj = new Invocando(); obj.adiciona1(saida); } public void adiciona1(int a){ saida = a + 1; JOptionPane.showMessageDialog(null, saida); } }