Você está na página 1de 19

LINGUAGENS DE PROGRAMAO AULA 08

Allan Guerreiro Carneiro UNIVIOSA

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

A sintaxe para construo de um mtodo a seguinte:


[modificador] tipo_retorno identificador ([argumentos]) { //Corpo do mtodo }

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.

Retornando Valor a Partir de um Mtodo


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

Retornando Valor a Partir de um Mtodo


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 Parmetros para um Mtodo


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.

Passando Parmetros para um Mtodo


1. 2. 3. 4. 5. 6. 7. 8.

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

Passando Parmetros para um Mtodo


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

1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.

Passando Parmetros para um Mtodo


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.

Passando Parmetros para um Mtodo


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

1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.

Passando Parmetros para um Mtodo


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

1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.

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

Você também pode gostar