Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Métodos em Java: Parâmetros, Invocação e Modificadores de Acesso, Notas de estudo de Informática

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

2013

Compartilhado em 31/05/2013

helecardino-cabral-7
helecardino-cabral-7 🇧🇷

4.8

(13)

56 documentos

1 / 16

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
Disciplina: Programação I
Métodos
Introdução 2
1. Sintaxe dos Métodos em Java 2
2. Exercícios Resolvidos2
3. Invocação de Métodos 5
4. Tipos de Métodos 5
4.1. Invocação entre métodos estáticos e não-estáticos 6
5. Tipo de paramêtros 7
5.1. Diferença entre parâmetros passados por valor e por
referência 7
6. Modicadores de Acesso 9
6.1. Questões a ter em consideração na escolha de um modicador
de acesso 11
7. Exercícios Propostos 11
Métodos
Página 11 de 12
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff

Pré-visualização parcial do texto

Baixe Métodos em Java: Parâmetros, Invocação e Modificadores de Acesso e outras Notas de estudo em PDF para Informática, somente na Docsity!

Disciplina: Programação I

Métodos

Introdução 2

1. Sintaxe dos Métodos em Java 2

2. Exercícios Resolvidos 2

3. Invocação de Métodos 5

4. Tipos de Métodos 5

4.1. Invocação entre métodos estáticos e não-estáticos 6

5. Tipo de paramêtros 7

5.1. Diferença entre parâmetros passados por valor e por

referência 7

6. Modificadores de Acesso 9

6.1. Questões a ter em consideração na escolha de um modificador

de acesso 11

7. Exercícios Propostos 11

Métodos

Página 11 de 12

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étodos

Página 11 de 12

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

}

  1. Crie um método em Java que recebe o número de um dado mês e retorne o nome desse mesmo mês.

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

Métodos

Página 11 de 12

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

}

}

  1. Crie um Método que calcule a média dos elementos de um array.

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.

Métodos

Página 11 de 12

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()); ...”

Métodos

Página 11 de 12

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.

4.1. Invocação entre métodos estáticos e não-estáticos

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étodos

Página 11 de 12

// 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.

5.1. Diferença entre parâmetros passados por valor e por

referência

  • A variável num parâmetro por valor ao sofrer alterações dentro do método elas não serão reflectidas fora do método. Por exemplo, no código abaixo:

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;

}

}

  • No tipo por valor usa-se exactamente o valor da variável, enquanto que no por referência é usada apenas a referência daquela variável, apenas o endereço de memória, como se fosse um ponteiro. Por isso, um parâmetro por referência deve ser passado sempre através de

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

pacote ou package (que são conjuntos de classes relacionadas);

  • O modificador private indica que o método ou variável só

podem ser acedidos dentro da própria Classe;

  • O modificador protected especifica que o membro só pode ser

acedido dentro do seu pacote mas também por uma subclasse

da sua Classe que se encontra em outro pacote.

A tabela seguinte mostra o acesso permitidos aos membros por cada

modificador.

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

  1. Crie um método que receba uma frase e indique o número de vogais e consoantes.
  2. Conceba um método que receba um determinado número de items consumidos numa cantina e respectivas quantidades e retorne o valor a pagar. O valor a pagar deverá contar com um imposto de 12%.