Criação de métodos em Java



Documentos relacionados
Orientação a Objetos

LINGUAGEM JAVA - RESUMO

Programação Orientada a Objeto Java

Sistemas Distribuídos Capítulo 4 - Aula 5

Programação de Computadores I. Linguagem C Função

POO fundamentos Parte II. Professor Vicente Paulo de Camargo

Introdução à Programação. Funções e Procedimentos. Prof. José Honorato F. Nunes honoratonunes@gmail.com

TUTORIAL MATLAB Victor Breder 2016

Estruturas de Repetição

Métodos e Procedimentos. Prof. Jesus José de Oliveira Neto

Introdução a Funções

Linguagem de Programação C. Fluxo de Saída Padrão. Linguagem de Programação C. printf. Fluxo de Saída Padrão. Algoritmos e Lógica de Programação

Classes e Objetos. Sintaxe de classe em Java

Dados armazenados em um objeto podem ser tanto primitivos, tais como inteiros ou caracteres, ou referências para outros objetos.

Especificam quem tem acesso a cada entidade, isto é, quem tem acesso a. cada classe e cada membro da classe (dados e métodos)

3. COMPILAÇÃO E ESTRUTURA BÁSICA DE UM PROGRAMA EM C

Linguagem de Programação II Implementação

MANUAL DE UTILIZAÇÃO DO AUTO ATENDIMENTO SETOR PÚBLICO DO BANCO DO BRASIL

Switch switch switch switch switch variável_inteira valor1 valor2 switch variável_inteira case case break switch case default default switch switch

Num programa em JAVA é possível definir diferentes sequências de execução independente: Threads.

Algoritmos APRENDENDO A PROGRAMAR COM C#

Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de programação em linguagem C. Exercícios: Structs

Programação Orientada a Objetos

Cadastro de Usuários Manual de Usuário 09/05/2011 FAPESP

CONCEITOS BÁSICOS DE ORIENTAÇÃO A OBJETOS PROF. ME. HÉLIO ESPERIDIÃO

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan Prof a. Rachel Reis

Programação de Computadores - I. Profª Beatriz Profº Israel

Programação de Computadores I Estruturas de Repetição PROFESSORA CINTIA CAETANO

BC-0505 Processamento da Informação

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan

Modularidade - Funções e Procedimentos

Linguagem de Programação II Programação Orientada a Objetos. Orientação a Objetos

SUB-ROTINAS (PROCEDIMENTOS E FUNÇÕES)

Conceitos básicos de programação

Linguagem C Funções. André Tavares da Silva.

RESULUÇÃO DOS EXERCÍCIOS E INSTRUÇÕES DE DECISÃO (if{} e else{}) Profº André Aparecido da Silva Disponível em:

COMPORTAMENTOS - Observações

Lista de Exercícios Nro. 1 Programação Orientada a Objetos - SCC204

Palavras Reservadas da Linguagem Java

Programação WEB I Funções

O AMBIENTE DELPHI. Programação de Computadores.

Programação Orientada a Objetos. Métodos e Atributos. Métodos. Métodos. Alexandre César Muniz de Oliveira. Parte III

Manual do Usuário SISCOLE - Sistema de Cadastro de Organismos e Laboratórios Estrangeiros

Linguagem de Programação III

Classes e Objetos INTRODUÇÃO À ORIENTAÇÃO A OBJETOS COM JAVA - MÓDULO II. Classes. Objetos. Um modelo para a criação de objetos

Threads. O que é uma Thread? Paralelismo

Exercícios: comandos de repetição

Informativo de Versão 19.10

alocação de custo têm que ser feita de maneira estimada e muitas vezes arbitrária (como o aluguel, a supervisão, as chefias, etc.

Sistemas de Objetos DistribuídosRevisão Java e Java ORBs p.1/26

Até o momento, vimos que a estrutura de um computador segue uma seqüência: ENTRADA => PROCESSAMENTO => SAÍDA

Estrutura de repetição do/while

Lógica de Programação e Algoritmos

AULA 3 Alocação dinâmica de memória: Ponteiros

O que é Microsoft Excel? Microsoft Excel. Inicialização do Excel. Ambiente de trabalho

Conceitos c++ Prof. Demétrios Coutinho INFORMÁTICA BÁSICA

PROGRAMAÇÃO JAVA. Parte 3

Programação Orientada a Objetos. Aula 1.9 this e static. Prof. Bruno Moreno

Esta categoria mais geral, à qual cada objeto pertence, denominamos de classe; IFSC/POO + JAVA - prof. Herval Daminelli

Desenvolvimento Web TCC Turma A-1

Modularidade - Fun ções e Procedimentos

Análise de Programação

Programação Orientada a Objetos

Algoritmos e Estruturas de Dados I. Variáveis Indexadas. Pedro O.S. Vaz de Melo

UNIVERSIDADE ESTADUAL PAULISTA Julio de Mesquita Filho" FACULDADE DE ENGENHARIA

Java e sua Sintaxe. Estrutura mínima de um programa em Java: public class Exemplo { }

Linguagem C. Introdução à Programação C. Variáveis. Identificadores. Identificadores 12/03/2011 VARIÁVEIS E TIPOS DE DADOS

Algoritmos e Programação. Linguagem C Procedimentos e. Eliane Pozzebon

LINGUAGEM C: FUNÇÕES FUNÇÃO 04/07/2017. Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa.

Aula 03 Introdução à Java. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes

Java possui 4 tipos de dados. Estes tipos de dados são divididos em: boolean, character, integer e float.

Classes o Objetos. Classes, objetos, métodos e variáveis de instância

Herança. Prof. Leonardo Barreto Campos 1

ção a Objetos em Java

Algoritmo e Pseudo-código

Aula Extra. Depurador Code::Blocks. Monitoria de Introdução à Programação

Programação Orientada a Objetos

Primeiro Passo. Na sequência, surgirá a tela de Login, onde você poderá realizar uma das seguintes tarefas:

Orientação a objetos. Programação. Orientada a Objetos. Orientação a objetos. Orientação a objetos. Abstração e encapsulamento

Unidade 7: Documentação de Código A Importância dos Comentários Prof. Daniel Caetano

21 Strings O que são strings? 21.2 Leitura de Strings. Ronaldo F. Hashimoto e Carlos H. Morimoto

Guia para instalação da Loja demonstração

Proporcionar a modelagem de sistemas utilizando todos os conceitos da orientação a objeto;

AULA 11 PROGRAMAÇÃO ORIENTADA A OBJETOS (INTRODUÇÃO) Disciplina: Programação Orientada a Objetos Professora: Alba Lopes

Linguagens e códigos digitais

Algoritmos I Aula 14 Java: estruturas de seleção e repetição

Transcrição:

1. Objetivos Criação de métodos em Java Identifica os principais tipos de métodos usados em Java; Levar o leitor a compreender as vantagens de uso dos métodos; Introduzir o conceito de modularidade a partir da criação de métodos; Fornecer subsídios para que o leitor possa criar seus próprios métodos; Descrever os mecanismos necessários para a troca de dados entre os métodos. 2. Métodos Este capitulo apresenta os conceitos básicos para a elaboração e utilização de métodos. Espera-se que o leitor adquira conhecimento suficientes para criar seus próprios métodos. Métodos soa trechos de códigos que permitem modularizar um sistema, isto é, são pequenos blocos que, juntos, compõem um sistema maior. Os métodos recebem um determinado nome e podem ser chamados varias vezes durante a execução de uma classe, ou seja, é uma sub-rotina que pode ser invocada toda vez que sua funcionalidade for necessária em um trecho da classe ou ainda a partir de outra classe. Os principais motivos que levam a utilizar métodos se referem à redução do tamanho total do código de um sistema, à melhoria da modularização do sistema (cada trecho de código realiza uma tarefa) e à facilitação e agilização do processo de manutenção. Considere o método um programa autossuficiente que possui internamente todas as definições necessárias para seu funcionamento, no entanto ele compõe um sistema maior do qual é membro. O método pode ser comparado ao setor de uma empresa especializado numa determinada tarefa. Para ilustra estes conceitos, imagine um grande sistema (envolvendo muitas classes em Java) em que existe a necessidade de verificar se uma determinada data é valida. Imagine ainda que em diversas aplicações isso deve ser realizado, isto é, a mesma validação de data dever ser realizada em diversas classes. Um programador pouco experiente talvez repita o mesmo trecho de programa em diversas classes no sistema. Isso não é bom, pois alem de o código dos programas fica maior, pode ser preciso alterar alguma coisa na rotina. Por exemplo, a data era considerada com dois dígitos para o ano e depois foi necessário tratá-la para ser aceita com quatro dígitos. É preciso alterar todas as classes que utilizam essa validação. Suponha que em 15 casses diferentes, com diversos métodos distintos em cada uma, essas rotina fosse utilizada. Seria necessário alterar e compilar as 15 classes novamente. Por outro lado, se essa rotina de validação estivesse armazenada na forma de método em uma classe, todas as outras classes poderiam usar (importar) esse método. E melhor ainda, caso alterações no método fossem necessárias, apenas ele seria alterado e todas as classes que o utilizam seriam atualizadas automaticamente. Caso este exemplo não tenha sido muito bem compreendido, Linguagem de Programação Página 1

não se preocupe, pois os exemplos que seguem vão tornar estes conceitos mais claros. Um método pode invocar outro método, isto é, durante a execução do método1 pode ser necessária à execução do método2 que pode invocar o método3 e assim por diante. Todo método possui uma declaração e um corpo, cuja estrutura simplificada é formada por: modificador-de-acesso tipo-do-retorno nome-do-método ([lista-de-argumentos]) { Sendo: código do corpo modificador-de-acesso: Define a visibilidade do método. A Sun define como nível de acesso (accesslevel) do método. Trata-se de uma forma de especificar se o método é visível apenas à própria classe em que esta declarada, ou pode ser visualizado (e utilizado) por classes externas. O modificador de acesso do método pode ser do tipo: public: o método é visível por qualquer classe. É o modificador de acesso mais aberto no sentido de que qualquer classe pode usar esse método. private: o método é visível apenas pela própria classe. É o modificador mais restrito. protected: o método é visível pela própria classe, por suas subclasses e pelas classes do mesmo pacote. Tipo-de-retorno: refere-se ao tipo de dado retornado pelo método. Métodos que não retornam valores devem possuir nesse parâmetro a palavra void. Sempre que void for usada em uma declaração de método, nenhum valor é retornado após sua execução, isto é, o metodo atua com uma procedure de outras linguagens de programação. Um método pode ter como retorno qualquer tipo primitivo (int, float, double, etc.), um vetor (abordado mais a frente) ou ainda um objeto qualquer. Nome-do-método: pode ser qualquer palavra ou frase, desde que iniciada por uma letra. Se o nome for uma frase, não podem existir espaços em branco entre as palavras. Como padrão da linguagem Java, o nome de um método sempre inicia com uma palavra com letras minúsculas. Se outras palavras forem necessárias, então elas devem iniciar com maiúsculas. São exemplos de nomes de métodos de acordo com o padrão da linguagem: imprime, imprimefrase, gravearquivotexto. É importante dar os métodos nomes sugestivos, ou seja, que identificam facilmente a tarefa executada pelo método. Lista-de-argumentos: trata-se de uma lista de variáveis opcionais, que podem ser recebidas pelo método para tratamento interno. Quando um método é invocado (chamado), ele ode receber valores de quem o chamou. Esses valores podem ser manipulados internamente e devolvidos ao emissor da solicitação. Esse processo ser comparado ao de fabricação industrial: entra matéria-prima (os valores passados ao método) e sai um produto acabado (o retorno do método). Um mesmo Linguagem de Programação Página 2

método pode receber diferentes tipos de variáveis, desde tipos primitivos até objetos complexos. Códigos do corpo: trata-se dos códigos Java que realizam os processos internos e retornam os valores desejados, isto é, constituem o programa do método. O nome do método e a lista de argumentos formam a assinatura do método, algo que identifica de maneira única. Toda vez que um método for invocado (chamado), a assinatura deve ser obedecida, uma maneira que torna possível identificar um método em relação aos demais. Se a assinatura for diferente, ou seja, se qualquer um dos componentes não coincidir com a declaração, o método não pode ser utilizado. Voltaremos a falar sobre a assinatura à medida que os exemplos forem analisados. Existem ainda outros aspectos referentes à declaração de métodos que serão citados em momentos oportunos, como, por exemplo, o uso da palavra static em que os métodos podem ser acessados sem a necessidade de instancia um objeto. 2.1. Métodos sem retorno Não retornam valores e são semelhantes às procedures encontradas na maioria das linguagens de programação. Os métodos que não retornam valores devem ser definidos como void. Desta forma, todos os métodos sem retorno observam a seguinte estrutura: modificador-de-acesso void nome-do-método ([lista-de-argumentos]) { código do corpo Além de diversos conceitos apresentados sobre métodos, eles podem ser usados também para a criação de outra linguagem, a partir da linguagem original. Considere método println() da classe System, utilizado varias vezes em exemplos anteriores (System.out.println(... )). É possível para um desenvolvedor criar um método chamado imprima() que faça exatamente o mesmo que println, como será demonstrado em seguida. Algumas declarações possíveis de métodos sem retorno podem ser as seguintes: 1. public void imprime() 2. public static void imprime() 3. private void imprimefrase() 4. protected void gravearquivotexto() Importante As declarações 1 e 2 são praticamente as mesmas, com a seguinte diferença: a 2 possui a palavra static na declaração do método. Isso faz com que o método seja considerado um método de classe, fato que não obriga a criação deu um objeto para chamá-lo. Esse aspecto torna o aprendizado um pouco mais simples. Por esse motivo, todos os métodos declarados nessas aulas serão definidos como static. Linguagem de Programação Página 3

Passando ao lado pratico da utilização, será mostrado um exemplo de método em que ele é chamado para que uma mensagem seja apresentada na tela. Na realidade, este pequeno exemplo talvez não tenha utilidade pratica, pois possui um meto que imprime na tela sempre a mesma mensagem. O exemplo mostra a chamada de um método (imprime) que imprime na tela uma frase qualquer. public class TesteMetodo { public static void main (String args[]) { imprime(); // invocação do método private static void imprime() { // declaração do método System.out.println("Aprendendo a Linguagem Java"); A classe TesteMetodo possui dois métodos: main() e imprime(). Esta é a primeira vez que um exemplo com dois métodos aparece. Observe que cada método possui um inicio, e um encerramento por meio de abre e fecha-chaves. Todas as vezes que um método for declarado, ele dever ser obrigatoriamente possuir uma chave inicial e uma final. A chave da classe TesteMetodo envolve os dois métodos. Isso e necessário porque a classe envolve todos os métodos que possui. Ao ser executada a classe TestaMetodo, é invocado automaticamente o método main enquanto o método imprime será invocado a partir de uma chamada de dentro do método main. É muito comum em Java um método chamar outro. Quando isso ocorre, a execução do método é suspensa e inicia-se a execução do método externo, no caso o método imprime. A chamada do método deve corresponder exatamente à sua declaração, ou melhor, à sua assinatura. Quando invocado, o método deve possuir o mesmo tipo de retorno, o mesmo nome e o mesmo número de argumento. Observe a assinatura do método imprime. Ela possui o nome imprime e não recebe nenhum tipo de argumento (nada dentro dos parentes). Agora observe a invocação do método imprime dentro do método main. O resultado da execução do meto não é atribuído a nenhuma variável, pois ele não tem retorno. Conforme descrito anteriormente, quando declarada à palavra reservada void, significa que não existe um valor de retorno. O método declarado como público (public), como já discutido, possibilita que ele seja utilizado externamente à classe em que é declarado. Um tipo de método de maior utilidade é aquela que recebe argumento e faz algum processamento com eles. São os métodos que recebem argumentos dentro dos parênteses. O próximo exemplo demonstra o uso de um método com passagem de argumento. O exemplo a seguir utiliza-se de um método para imprimir o conteúdo de uma variável String qualquer, funcionando de maneira similar a System.out.println(). Linguagem de Programação Página 4

public class TesteMetodoComArgumento { public static void main (String args[]) { String frase1 = "Sou muito"; String frase2 = "feliz porque sei"; String frase3 = "que Deus me ama!"; limpatela(); tela(frase1); // invocação do método tela(" "); tela(frase2); tela(" "); tela(frase3); public static void tela(string texto) { // declaração do método System.out.println(texto); public static void limpatela() { // declaração do método for(int i=1;i<=25;i++) { System.out.println(); A assinatura usada para invocar o método tela que recebe um argumento é tela(frasen), em que: tela e o nome do método que corresponde ao nome declarado frasen é o conteudo que será enviado ao método, ou seja, o método é invocado e recebe uma variável do tipo String. Além de uma variável, o método pode receber diretamente uma cadeira de caracteres, conforme usado em tela( ), em que um espaço em branco é enviado para ser impresso na tela. Ao declarar o método public static void tela(string texto), foi informado, entre parênteses, o tipo de variável a ser recebido (String texto). Este aspecto é muito importante: ao invocar um método, o tipo de variável a ser enviado deve corresponder ao tipo da variável declarado no método. Quando o método for invocado, a variável texto receberá a String enviada. O método limpatela, ira imprimir 25 linhas em branco na tela, provocando a sensação de que a tela foi limpa. O próximo exemplo apresenta outra classe com dois métodos que ano retornam valores (além do main) e são executadas em cascata, uma vez que o método main chamará tela que chamara tempo. Linguagem de Programação Página 5

public class TestaMetodoComArgumento2{ public static void main (String args[]) { String frase1 = "Sou muito"; String frase2 = "feliz porque sei"; String frase3 = "que Deus me ama!"; tela(frase1); // invocação do método tela(frase2); tela(frase3); public static void tela(string texto){ // declaração do método texto System.out.println(texto); tempo(1); public static void tempo(int segundos){ // declaração do método segundos try { Thread t; t = new Thread(); t.start(); t.sleep(segundos * 1000); catch (InterruptedException e) { Neste exemplo foi incluído um novo método, chamado tempo, que funciona como um temporizado durante a execução do programa. Ele realiza a mesma função que delay de outras linguagens de programação. Quanto maior o numero passado dentro dos parênteses (note que é um argumento inteiro) no momento de invocar esse método, maior será a temporização controlada pela variável segundo. O método main, o método tela pede que o conteúdo das variáveis frasen seja impresso. No método tela existe o chamamento do método tempo em que é enviado um numero inteiro correspondente à duração da temporização. Vale a pena considera que um método pode receber mais de um argumento do mesmo tipo ou não. Veja as declarações seguintes public static void tela(string arg1, String arg2) : informa que o método recebe dois argumentos do tipo string (arg1 e arg2). public static void tela(string arg1, int arg2) : informa que o método recebe um argumentos do tipo string (arg1) e um argumento do tipo inteiro (arg2). public static void tela(double arg1, int arg2, float arg3, String arg4) : informa que o método recebe um argumentos do tipo double (arg1), um argumento do tipo inteiro (arg2), um argumento do tipo float (arg3) e um argumento do tipo String (arg4). Linguagem de Programação Página 6

2.2. Métodos com Retorno de Valores Nos exemplos anteriores os métodos utilizados não retornavam nenhum valor (void), podendo ser comparados às procedures de outras linguagens de programação. Neste item são abordados métodos que retornam valores, os quais podem ser comparados às funções de outras linguagens. A sintaxe para a declaração de métodos que retornam valores é a mesma anteriormente apresentada, por exemplo: public static int soma(int x, int y) A declaração desse método informa que ele recebera dois argumentos inteiros (x,y) e retornara um numero do tipo inteiro (int). Os valores recebidos e retornados não precisam ser necessariamente do mesmo tipo, conforme aparece nesta declaração. Podem existir métodos que recebem números e retornam um string, recebem inteiros e retornam números com ponto flutuante, ou qualquer outra combinação. O exemplo abaixo apresentado em seguida demonstra a utilização de um método que recebe duas variáveis do tipo string e retorna a soma entre elas na forma de um numero do tipo inteiro. import javax.swing.*; public class TesteMetodoComRetorno { public static void main (String args[]) { String n1 = JOptionPane.showInputDialog(null, "forneça o 1º número inteiro"); String n2 = JOptionPane.showInputDialog(null, "forneça o 2º número inteiro"); int res = soma(n1,n2); JOptionPane.showMessageDialog(null, "Numeros fornecidos : " + n1 + ", "+ n2 + "\nresultado = " + res); public static int soma(string num1, String num2) { // declaração do método int x = 0,y = 0; try { x = Integer.parseInt(num1); y = Integer.parseInt(num2); catch(numberformatexception e) { JOptionPane.showMessageDialog(null, "Digite apenas caracteres numéricos!"); System.exit(0); // caso houver erro encerra o programa return (x + y); // retorna a soma dos argumentos passados Ao rodar a aplicação, o método main é executado e invoca a execução do método soma. O resultado da execução do método soma é armazenado na variável res, cujo tipo é o mesmo declarado para o retorno do método, isto é, inteiro. Ao invocar o método soma, são enviadas duas variáveis do tipo String que se referem aos valores fornecidos pelo usuário no momento da execução do programa (n1,n2). Veja que a assinatura do método e sua invocação são idênticas. Ao ser invocado, o método soma recebe duas variáveis do tipo String (num1 que recebe o conteúdo de n1 e num2 que recebe o conteúdo de n2), executa suas tarefas internas (entre chaves) e retorna um valor inteiro por meio da palavra return. Todo método que não for declarado como void, isto é, que retorna algum Linguagem de Programação Página 7

valor, necessita, obrigatoriamente, utilizar o método return() para retornar um valor. O valor retornado deve ser sempre do mesmo tipo declarado no método. O uso dos parênteses após a palavra return é opcional, apesar de ser esteticamente melhor. O exemplo mostrado, reforça a ideia de que nem sempre o tipo de retorno precisa ser igual ao tipo recebido, pois são recebidos valores do tipo String, que são convertidos em valores inteiros, e sua soma é retornada também no tipo inteiro. Uma classe pode possuir tantos métodos quantos forem necessários. Este exemplo poderia ter um método para cada operação matemática, ou seja, um para subtração, um para divisão, um para multiplicação ou ainda qualquer outro método. Desde que devidamente declarado. Os métodos representam um dois mais importantes recursos de programação, uma vez que sua funcionalidade pode ser reaproveitado em diferentes programas. Por exemplo, é possível a criação de métodos especialistas para a entrada de dados, pois um método possibilita a digitação de dados do tipo inteiro, outra de dados do tipo double, outra de dados do tipo String e assim por diante. Com isso toda vez que uma entrada via teclado for necessária, um método pode ser invocado. Linguagem de Programação Página 8