19
Programación Orientada a Objetos Prof. Herminio Paucar Prof. Edson Huillca Sesión 3.0: Lenguaje de Modelamiento Unificado-UML Subprogramação

Programación Orientada a - WordPress.com · 2019-05-12 · Organização de Programas em Java 19 • Prof. Leonardo Gresta Paulino Murta, Programação Orientada a Objetos, UFF,

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Programación Orientada a - WordPress.com · 2019-05-12 · Organização de Programas em Java 19 • Prof. Leonardo Gresta Paulino Murta, Programação Orientada a Objetos, UFF,

Programación Orientada a Objetos

Prof. Herminio PaucarProf. Edson Huillca

Sesión 3.0: Lenguaje de Modelamiento Unificado-UMLSubprogramação

Page 2: Programación Orientada a - WordPress.com · 2019-05-12 · Organização de Programas em Java 19 • Prof. Leonardo Gresta Paulino Murta, Programação Orientada a Objetos, UFF,

Aula de hoje

Subprogramação 2

• Estudaremos a estrutura mais básica de

encapsulamento da Orientação a Objetos

– Métodos

Page 3: Programación Orientada a - WordPress.com · 2019-05-12 · Organização de Programas em Java 19 • Prof. Leonardo Gresta Paulino Murta, Programação Orientada a Objetos, UFF,

Exemploimport java.util.Scanner;public class IMC { public static void main(String[] args) { Scanner teclado = new Scanner(System.in);

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

Parecidos!

Subprogramação 3

Page 4: Programación Orientada a - WordPress.com · 2019-05-12 · Organização de Programas em Java 19 • Prof. Leonardo Gresta Paulino Murta, Programação Orientada a Objetos, UFF,

Exemplo usando métodoimport 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(); } 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); }}

Declaração do método

Chamadas ao método

Subprogramação 4

Page 5: Programación Orientada a - WordPress.com · 2019-05-12 · Organização de Programas em Java 19 • Prof. Leonardo Gresta Paulino Murta, Programação Orientada a Objetos, UFF,

Dividir para conquistar

• Antes: um programa gigante

• Depois: vários programas menores

Método A Método BPrograma Principal

Método C

Programa Principal

Subprogramação 5

Page 6: Programación Orientada a - WordPress.com · 2019-05-12 · Organização de Programas em Java 19 • Prof. Leonardo Gresta Paulino Murta, Programação Orientada a Objetos, UFF,

Fluxo de execução

Método Principal Método A Método B Método C

• O programa tem início em um método principal (no caso do Java é o método main)

• O método principal chama outros métodos• Estes métodos podem chamar outros métodos,

sucessivamente• Ao fim da execução de um método, o programa retorna para a

instrução seguinte à da chamada ao método

Máquina Virtual Java

Método Principal

Método A Método B

Método C

12

3

4

Subprogramação 6

Programa Possível sequência de chamadas

Page 7: Programación Orientada a - WordPress.com · 2019-05-12 · Organização de Programas em Java 19 • Prof. Leonardo Gresta Paulino Murta, Programação Orientada a Objetos, UFF,

Fluxo de execução

7

Page 8: Programación Orientada a - WordPress.com · 2019-05-12 · Organização de Programas em Java 19 • Prof. Leonardo Gresta Paulino Murta, Programação Orientada a Objetos, UFF,

Fluxo de execução

• É equivalente ao que acontece quando chamamos um

método predefinido do Java

Subprogramação 8

Page 9: Programación Orientada a - WordPress.com · 2019-05-12 · Organização de Programas em Java 19 • Prof. Leonardo Gresta Paulino Murta, Programação Orientada a Objetos, UFF,

Vantagens

Subprogramação 9

• Economia de código– Quanto mais repetição, mais economia

• Facilidade na correção de defeitos– Corrigir o defeito em um único local

• Legibilidade do código– Podemos dar nomes mais intuitivos a blocos de código

– É como se criássemos nossos próprios comandos

• Melhor tratamento de complexidade

– Estratégia de “dividir para conquistar” nos permite lidar melhor com a complexidade de programas grandes

– Abordagem top-down ajuda a pensar!

Page 10: Programación Orientada a - WordPress.com · 2019-05-12 · Organização de Programas em Java 19 • Prof. Leonardo Gresta Paulino Murta, Programação Orientada a Objetos, UFF,

Sintaxe de um método

public static int divide (int a, int b)

public static void main(String[] args)

MODIFICADORES TIPO DE RETORNO NOME (ARGUMENTOS)

Vamos usar essesmodificadores por

enquanto

Significa que não tem retorno

Qualquer tipo da Mesma regra de linguagem nome de variável

Mesma regra de declaração de variáveis, separando por

vírgula cada argumento

Subprogramação 10

Page 11: Programación Orientada a - WordPress.com · 2019-05-12 · Organização de Programas em Java 19 • Prof. Leonardo Gresta Paulino Murta, Programação Orientada a Objetos, UFF,

Acesso a variáveis• Um método não consegue acessar as variáveis de outros

métodos– Cada método pode criar as suas próprias variáveis locais

– Os parâmetros para a execução de um método devem ser definidos como argumentos do método

• Passagem por valor

– Java copiará o valor de cada argumento para a respectiva variável

– Os nomes das variáveis podem ser diferentes

z = calcula(a, b);

public static double calcula(int x, int y)

Subprogramação 11

Page 12: Programación Orientada a - WordPress.com · 2019-05-12 · Organização de Programas em Java 19 • Prof. Leonardo Gresta Paulino Murta, Programação Orientada a Objetos, UFF,

Exemplo

Subprogramação 12

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

Page 13: Programación Orientada a - WordPress.com · 2019-05-12 · Organização de Programas em Java 19 • Prof. Leonardo Gresta Paulino Murta, Programação Orientada a Objetos, UFF,

Passagem de ponteiro por valor• Variáveis compostas são,

na verdade, ponteiros.

• Seus endereços são

passados por valor

– Se criar uma nova variável, o efeito não é notado fora do método

– Se trocar o valor de uma posição da variável, o efeito é notado fora do método

&1234notas

8.0

5.5

1.5

0

&1234 1

2

Subprogramação 13

Page 14: Programación Orientada a - WordPress.com · 2019-05-12 · Organização de Programas em Java 19 • Prof. Leonardo Gresta Paulino Murta, Programação Orientada a Objetos, UFF,

Exemplo 1

Subprogramação 14

public class Array {

public static void mostra(int[] array) {

System.out.println(array[0] + ", " + array[1]);

}

public static void troca(int[] array) {

array = new int[2];

array[0] = 20;

array[1] = 10;

}

public static void main(String[] args) {

int[] array = {10,20};

mostra(array);

troca(array);

mostra(array);

}

}

Page 15: Programación Orientada a - WordPress.com · 2019-05-12 · Organização de Programas em Java 19 • Prof. Leonardo Gresta Paulino Murta, Programação Orientada a Objetos, UFF,

Exemplo 2

Subprogramação 15

public class Array {

public static void mostra(int[] array) {

System.out.println(array[0] + ", " + array[1]);

}

public static void troca(int[] array) {

int tmp = array[0];

array[0] = array[1];

array[1] = tmp;

}

public static void main(String[] args) {

int[] array = {10,20};

mostra(array);

troca(array);

mostra(array);

}

}

Page 16: Programación Orientada a - WordPress.com · 2019-05-12 · Organização de Programas em Java 19 • Prof. Leonardo Gresta Paulino Murta, Programação Orientada a Objetos, UFF,

Sobrecarga de métodos

Subprogramação 16

• Uma classe pode ter dois ou mais métodos com o

mesmo nome, desde que os tipos de seus argumentos

sejam distintos

• Isso é útil quando queremos implementar um método em função de outro

• Exemplo baseado na classe String:

public int indexOf(String substring) {

return indexOf(substring, 0);

}

Page 17: Programación Orientada a - WordPress.com · 2019-05-12 · Organização de Programas em Java 19 • Prof. Leonardo Gresta Paulino Murta, Programação Orientada a Objetos, UFF,

Métodos sem argumentos

Subprogramação 17

• Não é necessário ter argumentos nos métodos

– Nestes casos, é obrigatório ter () depois do nome do

método

– A chamada ao método também precisa conter ()

• Exemplo de declaração:public static void pulaLinha()

{ System.out.println();}

• Exemplo de chamada:pulaLinha();

Page 18: Programación Orientada a - WordPress.com · 2019-05-12 · Organização de Programas em Java 19 • Prof. Leonardo Gresta Paulino Murta, Programação Orientada a Objetos, UFF,

Exercício

Subprogramação 18

• Faça uma calculadora que forneça as seguintes opções para o usuário, usando métodos sempre que possível

• A calculadora deve operar sempre sobre o valor corrente na memória

Estado da memória: 0 Opções:1) Somar2) Subtrair3) Multiplicar4) Dividir5) Limpar memória6) Sair do programaQual opção você deseja?

Page 19: Programación Orientada a - WordPress.com · 2019-05-12 · Organização de Programas em Java 19 • Prof. Leonardo Gresta Paulino Murta, Programação Orientada a Objetos, UFF,

Bibliografia

Organização de Programas em Java 19

• Prof. Leonardo Gresta Paulino Murta, Programação Orientada a Objetos, UFF, Brasil

• Prof. Anselmo Montenegro Programação Orientada a Objetos, UFF, Brasil

• Java como Programar, Deitel & Deitel, Pearson, Edição: 9ª Ed.

• Use a Cabeça! Java, Kathy Sierra e Bert Bates, Alta Books, 2ª Ed., 2012