Subprogramação

Propaganda
Subprogramação
LeonardoGrestaPaulinoMurta
[email protected]ff.br
Auladehoje
•  Estudaremosaestruturamaisbásicade
encapsulamentodaOrientaçãoaObjetos
–  Métodos
Leonardo Murta
Subprogramação
2
Exemplo
import java.util.Scanner;
public class IMC {
public static void main(String[] args) {
Scanner teclado = new Scanner(System.in);
Parecidos!
System.out.print("Entre com a sua altura em metros: ");
double altura = teclado.nextDouble();
System.out.print("Entre com a sua massa em kg: ");
double massa = teclado.nextDouble();
double imc = massa / Math.pow(altura, 2);
System.out.println("Seu IMC é " + imc);
}
}
Leonardo Murta
Subprogramação
3
Exemplousandométodo
import java.util.Scanner;
public class IMC {
public static double leia(String mensagem) {
Scanner teclado = new Scanner(System.in);
System.out.print(mensagem);
return teclado.nextDouble();
}
Declaração
do método
public static void main(String[] args) {
double altura = leia("Entre com a sua altura em metros: ");
double massa = leia("Entre com a sua massa em kg: ");
}
}
double imc = massa / Math.pow(altura, 2);
System.out.println("Seu IMC é " + imc);
Leonardo Murta
Subprogramação
Chamadas
ao método
4
Dividirparaconquistar
•  Antes:umprogramagigante
ProgramaPrincipal
•  Depois:váriosprogramasmenores
Programa
Principal
Leonardo Murta
MétodoA
MétodoB
MétodoC
Subprogramação
5
Fluxodeexecução
•  Oprogramateminícioemummétodoprincipal(nocasodo
Javaéométodomain)
•  Ométodoprincipalchamaoutrosmétodos
•  Estesmétodospodemchamaroutrosmétodos,
sucessivamente
•  Aofimdaexecuçãodeummétodo,oprogramaretornapara
ainstruçãoseguinteàdachamadaaométodo
Programa
Método Principal
Método A
Método B
Método C
Leonardo Murta
Possível sequencia de chamadas
2
Máquina
Virtual Java
1
Método
Principal
4
Subprogramação
3
Método A
Método B
Método C
6
Fluxodeexecução
Leonardo Murta
Subprogramação
7
Fluxodeexecução
•  Éequivalenteaoqueacontecequandochamamosum
métodopredefinidodoJava
Leonardo Murta
Subprogramação
8
Vantagens
•  Economiadecódigo
–  QuantomaisrepeUção,maiseconomia
•  Facilidadenacorreçãodedefeitos
–  Corrigirodefeitoemumúnicolocal
•  Legibilidadedocódigo
–  PodemosdarnomesmaisintuiUvosablocosdecódigo
–  Écomosecriássemosnossospróprioscomandos
•  Melhortratamentodecomplexidade
–  Estratégiade“dividirparaconquistar”nospermitelidar
melhorcomacomplexidadedeprogramasgrandes
–  Abordagemtop-downajudaapensar!
Leonardo Murta
Subprogramação
9
Sintaxedeummétodo
Vamos usar esses
modificadores por
enquanto
Qualquer tipo da
linguagem
Mesma regra de
nome de variável
public static int divide(int a, int b)
MODIFICADORES TIPODERETORNO
NOME
(ARGUMENTOS)
public static void main(String[] args)
Mesma regra de declaração
de variáveis, separando por
vírgula cada argumento
Significa que não tem
retorno
Leonardo Murta
Subprogramação
10
Acessoavariáveis
•  Ummétodonãoconsegueacessarasvariáveisdeoutros
métodos
–  Cadamétodopodecriarassuasprópriasvariáveislocais
–  Osparâmetrosparaaexecuçãodeummétododevemser
definidoscomoargumentosdométodo
•  Passagemporvalor
–  JavacopiaráovalordecadaargumentoparaarespecUva
variável
–  Osnomesdasvariáveispodemserdiferentes
z = calcula(a, b);
public static double calcula(int x, int y)
Leonardo Murta
Subprogramação
11
Exemplo
public class Troca {
public static void troca(int x, int y) {
int aux = x;
x = y;
y = aux;
}
public static float media(int x, int y) {
return (x + y) / 2f;
}
public static void main(String[] args) {
int a = 5;
int b = 7;
troca(a, b);
System.out.println("a: " + a + ", b: " + b);
System.out.println("média: " + media(a,b));
}
}
Leonardo Murta
Subprogramação
12
Sobrecargademétodos
•  Umaclassepodeterdoisoumaismétodoscomo
mesmonome,desdequeosUposdeseus
argumentossejamdisUntos
•  IssoéúUlquandoqueremosimplementarum
métodoemfunçãodeoutro
•  ExemplobaseadonaclasseString:
public int indexOf(String substring) {
return indexOf(substring, 0);
}
Leonardo Murta
Subprogramação
13
Métodossemargumentos
•  Nãoénecessárioterargumentosnosmétodos
–  Nestescasos,éobrigatórioter()depoisdonomedo
método
–  Achamadaaométodotambémprecisaconter()
•  Exemplodedeclaração:
public static void pulaLinha() {
System.out.println();
}
•  Exemplodechamada:
pulaLinha();
Leonardo Murta
Subprogramação
14
Exercício
•  Façaumacalculadoraqueforneçaasseguintesopçõesparao
usuário,usandométodossemprequepossível
•  Acalculadoradeveoperarsempresobreovalorcorrentena
memória
Estado da memória: 0
Opções:
(1)
(2)
(3)
(4)
(5)
(6)
Somar
Subtrair
Multiplicar
Dividir
Limpar memória
Sair do programa
Qual opção você deseja?
Leonardo Murta
Subprogramação
15
Subprogramação
LeonardoGrestaPaulinoMurta
[email protected]ff.br
Download