









Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Este documento aborda conceitos importantes sobre métodos em java, incluindo a diferença entre parâmetros passados por valor e por referência, como invocar métodos e a influência dos modificadores de acesso em sua visibilidade. Além disso, são apresentados exemplos de métodos que retornam valores e void, além de métodos estáticos e não-estáticos.
Tipologia: Notas de estudo
1 / 16
Esta página não é visível na pré-visualização
Não perca as partes importantes!










Disciplina: Programação I
Introdução Um método é composto por um conjunto de instruções logicamente organizadas que são executadas quando este é invocado, podendo ou não, possuir argumentos ou retornar um valor. Um método em Java pode ser comparado a uma função ou procedimento em Pascal.
A invocação dum método pode ser explicita ou implícita, a chamada explícita se dá por ordem do programador através da execução de uma expressão contendo o nome do método. Um exemplo dese tipo de invocação é quando usamos o método System.out.println para mostrar um texto no ecrã do computador. As chamadas implícitas ocorrem quando o interpretador Java chama um método por sua própria deliberação. A chamada do método main é um exemplo de chamada impícita. O interpretador Java chama esse método para dar início à execução do programa.
// Método que retorna int
int soma(int a, int b) {
int c = a + b;
return c;
}
// Método que retorna void
void soma(int a, int b) {
int c = a + b;
System.out.println(c);
}
Para este exercício o próprio enunciado indica o parâmetro e o retorno, ou seja “...recebe o número de um dado mês...” quer dizer que o método deverá possuir um parâmetro do tipo inteiro, e “...retorne o nome desse mesmo mês.” quer dizer que o método deve devolver um valor do tipo String.
String nomeMes(int mes) {
switch(mes) {
case 1: return “Janeiro”;
case 2: return “Fevereiro”;
case 3: return “Março”;
case 4: return “Abril”;
case 5: return “Maio”;
case 6: return “Junho”;
case 7: return “Julho”;
case 8: return “Agosto”;
case 9: return “Setembro”;
case 10: return “Outubro”;
case 11: return “Novembro”;
case 12: return “Dezembro”;
default: return “Mês inválido”;
}
}
Como podemos ver pelo enunciado, o único parâmetro que o método recebe é um array de inteiros, e deve calcular a médias destes inteiros.
double media(int[] amostra) {
double s = 0;
for (int i = 0; i <= amostra.length-1; i++)
s = s + amostra[i];
return s/amostra.length;
}
NB: O length usado neste exercício não é um método é uma variável interna do array que controla o número de elementos do array.
Se fosse para invoca-los em outra Classe seria:
“...
int[] dados = {4, 6, 7, 10};
double result = Nome_Classe.soma (dados);
...”
4. Tipos de Métodos Em Java, tanto para as variáveis como para os métodos podemos encontrar o conceito de “Métodos ou Variáveis da Classe” e “Métodos ou Variáveis do Objecto”. - Métodos ou Variáveis da Classe – neste caso, os métodos e variáveis actuam sobre a classe, sendo assim não é necessário criar um objecto para usar o método ou a variável, pois este pode ser invocado através da Classe. Um dos exemplos deste tipo de método, aplicado nas aulas, é o readInt () da Classe InputReader que é invocado juntamente com a classe, ou seja, “InputReader.readInt()”. - Métodos ou Variáveis do Objecto – neste caso, os métodos e variáveis actuam sobre o objecto, sendo assim é necessário criar um objecto para usar o método ou a variável, pois o objecto herda as variáveis e métodos da Classe. Um dos exemplos deste tipo de método, aplicado nas aulas, é o length () da Classe String. Para este caso é necessário, primeiro criar-se um objecto:
“... String st = “Programação Orientada a Objectos”; ...”
Após a criação do objecto st já podemos invocar o método:
“ ... System.out.println(st.length()); ...”
Em termos de sintaxe, um método ou variável da Classe é definido com o emprego da palavra reservada static antes do tipo de variável retornada pelo método, por isso também é referenciado como método estático enquanto que o método ou variável do objecto não e é conhecido como método não-estático. Os métodos apresentados acima são todos não- estáticos, mas também já foram criados nas aulas métodos estáticos, e um deles foi o main que é declarado como “... public static void main(String args) ...”.
Concluindo, o método readInt(), só pode ser invocado através da Classe (InputReader.readInt()) porque ele é estático, caso contrário seria necessário criar um objecto.
Em termos de invocação, um método estático não pode invocar um não- estático, mas um não não-estático pode invocar um estático. Por exemplo, no caso do exercício 1, podíamos ter resolvido da seguinte forma:
Caso 1 Caso 2
// Método que retorna int
int soma1(int a, int b) {
int c = a + b;
return c;
}
/* Método que retorna void usando o método soma1 */
static void soma2(int a, int b) {
System.out.println(soma1(a,b ));
}
// Método que retorna int
static int soma1(int a, int b) {
int c = a + b;
return c;
}
/* Método que retorna void usando o método soma1*/
void soma2(int a, int b) {
System.out.println(soma1(a,b ));
}
Neste exemplo, o Caso 1 irá dar um erro, nomeadamente:
“… non-static method soma1(int,int) cannot be referenced from a static context…”.
5. Tipo de parâmetros Em java, os parâmetros passados por valor e por referência dependem do tipo de dados, ou seja, se forem tipos de dado primitivo (int, double, char, boolean, etc.) serão passados por valor e se forem Objectos ou arrays serão passados por referência.
public static void main (String[] args){
int x = 5;
System.out.println(“Valor de x antes da invocação do método é ” + x);
porValor(x);
System.out.println(“Valor de x depois da invocação do método é ” + x);
}
static void porValor (int a) {
a *= 10;
System.out.println(“Valor do parâmetro dentro do método é ” + a);
}
Teríamos como resultado:
Teríamos como resultado:
Valor da Posição 0 de x antes da invocação do método é 3
Valor da Posição 0 do parâmetro dentro do método é 30
Valor da Posição 0 de x depois da invocação do método é 30
Como podemos ver, dentro do método a posição 0 do array toma o valor 30, e quando termina a execução do método a posição 0 do array x continua com o valor adquirido no método. Por causa desta propriedade, o exercício 4 poderia ter sido resolvido retornando void , pois ao modificarmos o array dentro do método, este manteria as alterações fora do método, sendo assim teríamos:
void ordenacaoAmostra (int[] amostra) {
int temp;
for (int i=0; i<= amostra.length-2;i++)
for (int j=i+1; j<= amostra.length-1;j++)
if (amostra[i] > amostra[j]) {
temp = amostra[i];
amostra[i] = amostra[j];
amostra[j] = temp;
}
}
uma variável, por exemplo se invocássemos o método porReferencia sem o uso de uma variável, ou seja, “... porReferencia({3, 5, 6}) ...”, durante a compilação surgiria uma mensagem de erro dizendo “… illegal start of expression …”.
6. Modificadores de Acesso Os modificadores de acesso determinam se uma dada variável ou um método podem ser invocados em outras Classes. Neste momento vamos abordar casos com o public , private , protected e o sem modificador, sendo assim: - Uma classe public é visível por todas as classes; - Sem modificador significa que esta visível apenas para o seu
Modificador Classe Pacot e
Subclasse Outras
public Sim Sim Sim Sim protected Sim Sim Sim Não Sem modificador
Sim Sim Não Não
private Sim Não Não Não
A segunda coluna indica se a própria classe tem acesso aos seus membros dependendo do tipo de modificador, como podemos ver a classe sempre tem acesso aos seus membros. A terceira coluna indica quando as classes dum mesmo pacote tem acesso ao membro. A quarta coluna mostra como