Anda di halaman 1dari 6

Explicando os tipos de mtodos existentes na programao OO.

Quando definimos um objeto num programa orientado a objetos, implementamos todo o comportamento desse objeto em um ou mais mtodos. Um mtodo em Java equivalente a uma funo, subrotina ou procedimento em outras linguagens de programao. No existe em Java o conceito de mtodos globais. Todos os mtodos devem sempre ser definidos dentro de uma classe. 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 : 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). 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. Quando nenhum modificador definido (acesso do tipo package), 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 subsequentes 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. 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 define-se uma varivel, especificando o seu tipo e nome. 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 Retornando Valor a Partir de um Mtodo 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. Veja os exemplos abaixo: 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 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. 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 a Referncia de um Objeto : Quando o tipo passado para o mtodo no for um primitivo mas sim um objeto, esse comportamento muda. Quando passamos um objeto, uma referncia ao objeto original passada ao invs de uma cpia do

objeto. A referncia contm o endereo de memria onde est contido o objeto original e qualquer modificao feita pelo mtodo no argumento que recebeu esta referncia afetar tambm o objeto original.

O Java mais purista em relao orientao a objetos que Delphi, portanto no existem funes perdidas, cada mtodo esta hierarquicamente ligado a uma classe, portanto voc sempre ir acessar um mtodo atravs:

Classe.Mtodo() ou Objeto.Mtodo Para os mtodos estticos no necessrio instanciar um objeto para us-lo, j nos outros casos, a funcionalidade do mtodo s possvel aps instanciao, que a criao de um objeto a partir da sua classe. J utilizamos mtodos de classes pr-definidas como em: Integer.parseInt() String.charAt() String.length(), entre outros. Podemos criar nossos prprios mtodos e j temos feito isso nos exemplos, j que cdigo funcional em Java sempre esta dentro de mtodos.

O mtodo main que recebe o argumento String[] args tem sido utilizado em todos os exemplos, porm podemos dividir, modularizar mais ainda, distribudo a lgica em outros mtodos. At aqui os exemplos tm sido pequenos, imagine algo maior, com vrias tarefas agregadas, cada um com seu escopo natural, neste contexto o uso de mtodos se faz quase imprescindvel. O uso de mtodos separa e organiza a lgica, alm disso, tratar problemas grandes, dividindo os mesmos em problemas menores uma tcnica bastante efetiva. Um mtodo deve ser codificado dentro da classe a qual pertence, portanto estar entre as chaves da classe. Um mtodo em Java, tal como uma funo retorna um valor, mas alternativamente podemos dizer que ele retorna vazio (void), sendo, portanto somente um procedimento. Vejamos a sintaxe bsica para criao de um mtodo: <qualificadores> <tipo-de-retorno> <nome-do-mtodo> ([lista-de-parmetros]){ <bloco-de-comandos> } O primeiro detalhe relativo a <qualificadores> estes podem assumir vrias formas, iremos destacar mais a frente este tpico, mas neste momento voc deve conhecer: public static Permite criar um mtodo que pode ser executado por agentes externos, inclusive independente de instanciao. private static Como o nome sugere este mtodo s visvel dentro da prpria classe onde foi definido e poder ser executado diretamente sem necessidade de instanciao. Em ambos os casos omitindo-se a palavra, static, estaremos obrigando a instanciao de um objeto para ento utilizar o mtodo, um mtodo esttico mais oneroso para o sistema, porm sempre temos algum mtodo esttico que inicia o processo de execuo. Com estes dois qualificadores possvel atender a praticamente todos os casos. O <tipo-de-retorno> um valor ou objeto que retornado pelo mtodo aps o processamento interno do mtodo, como em uma funo matemtica, voc pode passar parmetros e ter um valor como resposta. Voc declara o <tipo-de-retorno> como um tipo de dados ou uma classe. O <nome-do-mtodo> segue o padro de nomenclatura adotado at agora, veja que voc poder executar o mtodo chamadoo pelo nome. Relembrando este nome dever ter letras minsculas, a no ser as iniciais das segundas componentes em diante. A [lista-de-parmetros] opcional, mas muito interessante para fazer a interface entre o exterior e a rotina que esta internalizada ao mtodo, ao seja, pela parametrizao que voc consegue criar mtodos genricos, que atendam a vrias situaes. As chaves serviro para agrupar o que faz parte do mtodo, em termos de codificao. 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. UmTerco.java 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. FraseSpace.java 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. CalcVetor.java public class CalcVetor{ public static void main(String[] args){ int[] vetor = new int[5]; vetor[0]=10; vetor[1]=5; vetor[2]=7; vetor[3]=8; vetor[4]=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; }}

Anda mungkin juga menyukai