Baixe o app para aproveitar ainda mais
Prévia do material em texto
MÉTODOS E COMENTÁRIOS Thaís Alves Burity Rocha Agenda Métodos Retorno Variáveis locais Parâmetros Argumentos Sobrecarga Comentários Linha Bloco Javadoc Métodos Métodos Proveem a separação de tarefas em unidades auto-contidas São declarados uma única vez e são reusados em diferentes partes do sistema, inclusive por outros métodos Todos os objetos de uma mesma classe podem executar os mesmos métodos O projeto dos métodos influencia na facilidade de entendimento, manutenção e reuso Métodos Métodos constituem uma forma de manipular objetos Execução Passagem de parâmetros Métodos não static podem alterar o estado dos objetos, acessando e modificando o valor de seus atributos diretamente Métodos static proveem funcionaliades de propósito geral Métodos podem receber valores e retornar valores Retorno de Métodos Quando o método termina de executar, ele retorna o controle da execução para quem o invocou Esse retorno pode acontecer com ou sem valores public static void main(String[] args){ Conta conta1 = new Conta(“11140-6”,400); Conta conta2 = new Conta(“11266-4”,0); conta1.creditar(500); conta1.transferir(conta2,100); } int somar(int a, int b){ return a + b; } Se o método retorna um valor, este precisa ser significativo Variáveis Locais Possuem a mesma capacidade de armazenamento que os atributos Mas são declaradas dentro de um método ou construtor (ou ainda em blocos de comandos dentro destes, como já visto) Só existem durante o tempo que o método ou construtor é executado Não são inicializadas automaticamente Variáveis Locais: Utilidade Armazenar resultados temporários que serão utilizados depois Armazenar resultados que serão utilizados mais de uma vez Melhorar a legibilidade do método ou construtor, quebrando uma expressão grande em expressões menores Parâmetros Na declaração do método, os valores que podem ser passados são denominados parâmetros Trata-se de variáveis locais Só são válidas dentro do método Como toda variável, possuem tipo e nome Só devem ser definidos se necessário void transferir(Conta c, double valor){ this.debitar(valor); c.creditar(valor); } Argumentos Na chamada do métodos, os valores passados são denominados argumentos Valores são atribuídos na ordem em que são passados O tipo do argumento deve ser compatível com o tipo do parâmetro Se um método define parâmetros, a chamada do método requer a passagem de argumentos A menos que seja um var-arg Conta conta1 = new Conta(“11140-6”,400); Conta conta2 = new Conta(“11266-4”,0); conta1.transferir(conta2,100); Passagem de Primitivos para Métodos Quando a variável é de tipo primitivo, na verdade é passada uma cópia do valor //Suponha o método na classe Conta void creditar(double val){ saldo = saldo + val; val = 0; } public static void main(String[] args){ Conta conta = new Conta(); double valor = 110.50; System.out.println(valor); conta.creditar(valor); System.out.println(valor); } A variável valor não é alterada após a execução do método creditar Passagem de Objetos para Métodos No caso de variável de referência, também é passada uma cópia do valor O valor é o endereço do objeto no Heap Aliasing As modificações que um método realiza sobre um objeto são permanentes Em Java só existe passagem de parâmetro por valor (ou cópia) Passagem de Objetos para Métodos public class Conta{ public void transferir(Conta c,double val){ this.debitar(val); c.creditar(val); } public static void main(String[] args){ Conta conta1 = new Conta(300); Conta conta2 = new Conta(); double valor = 110.50; conta1.transferir(conta2, valor); } } DEPOIS de transferir: conta1.saldo = 189.50 conta2.saldo = 110.50 valor = 110.50 ANTES de transferir: conta1.saldo = 300 conta2.saldo = 0 valor = 110.50 Passagem de Objetos para Métodos: Cuidado! static void metodo1(){ Conta conta = new Conta(“1234-5”, 100); metodo2(conta); } static void metodo2(Conta c){ c.creditar(200); c = new Conta(“1234-6”, 1000); } Imagine que metodo1() é chamado. O que acontece? Sobrecarga de Métodos (Overloading) Ter mais de um método com mesmo nome, porém com parâmetros diferentes, em uma mesma classe Já vimos com construtores (aqui é a mesma coisa) Utilidade: Flexibilidade Regras: O novo método… Deve mudar a lista de argumentos Pode mudar o tipo de retorno Pode mudar o modificador de acesso Sobrecarga de Métodos /* vamos supor que a classe Conta definisse outro metodo creditar()*/ public void creditar(int v){ saldo += v; } --------------------------------------------------- Conta c = new Conta(“21.342-7”,470.50,0.01; c.creditar(50); //método que recebe int c.creditar(100.0); //método que recebe double A versão do método a ser executada é definida em tempo de compilação, pelos argumentos passados Comentários Comentários No geral, servem para dar informação útil sobre o código Explicar o funcionamento de um dado algoritmo As entradas e saídas de métodos O significado de uma dada variável Qualquer coisa cujo entendimento não seja óbvio com base apenas nas boas práticas Tipos de Comentário Comentários de uma linha Indicados por // Comentários de bloco Delimitados por /* e */ Aparecem na cor verde // este é um comentário de uma linha /* Este é um comentário de um bloco * em java */ Documentação Quando o objetivo é disponibilizar uma classe para uso, é fundamental ter uma documentação É o caso da API de Java O usuário da classe precisa saber como utilizar, em particular quando não se tem acesso ao código-fonte Comentários podem ser usados para fins de documentação Tipos de Comentário Comentários em bloco para documentação Delimitados por /** e */ Aparecem na cor azul É possível gerar um arquivo html com o conteúdo usando a ferramenta javadoc /** Este é um comentário de um bloco * em java */ Javadoc Para tornar a documentação mais organizada, o Javadoc utiliza marcadores (tags) especiais para formatar a informação Comentários gerais @deprecated: adiciona um comentário de que a classe, método ou variável deveria não ser usada @since: descreve a versão do produto quando o elemento foi adicionado @version: descreve a versão do produto Javadoc Comentários de classes e interfaces @author: autor do elemento @version: número da versão atual Comentários de métodos @param: descreve os parâmetros de um método acompanhado por uma descrição @return: descreve o valor retornado por um método Javadoc: Exemplo /** * Essa classe mantém a hora no formato de 24 horas. * @author Deitel & Associates, Inc. * @version 1.05 */ public class Time{ … /** * Construtor Time * @param h a hora * @param m o minuto * @param s o segundo */ public Time(int h, int m, int s){ setTime( h, em, s );// valida hora } } Observe que o comentário deve vir antes do elemento ao qual está associado Javadoc O Eclipse tem uma funcionalidade para gerar a documentação automaticamente Project > Generate Javadoc Vamos utilizar para a classe Time Para maiores informações http://www.oracle.com/technetwork/java/javase/ documentation/index-137868.html
Compartilhar