View
219
Download
1
Category
Preview:
Citation preview
3. Conceitos Básicos de 3. Conceitos Básicos de ProgramaçãoProgramação
4. Desenvolvimento de Programas 4. Desenvolvimento de Programas Orientados a ObjetosOrientados a Objetos
Carla Merkle WestphallCarla Merkle WestphallINE-CTC-UFSCINE-CTC-UFSC
E-Mail: carlamw@inf.ufsc.brE-Mail: carlamw@inf.ufsc.brURL: http://moodle.inf.ufsc.brURL: http://moodle.inf.ufsc.br
INE5402/5603-D (20072) - Programação INE5402/5603-D (20072) - Programação Orientada a Objetos IOrientada a Objetos I
2
Tipos ReferênciaTipos Referência• Tipos Referência Tipos Referência
– Todos os demais tipos de Java!– Definidos a partir de declarações de classes
• Quando uma variável em Java é declarada como sendo do tipo de uma classe, esta variável é considerada como sendo do tipo referência
– Declaração e inicialização:• String str = “Entendendo Strings”;• Banco brasil = new Banco (“Brasil”);
– Diferentemente das variáveis de tipos primitivos, que armazenam um valor, variáveis do tipo referência armazenam um ponteiro para um objeto em memória
3
StringsStrings• StringsStrings
– São seqüências de caracteres delimitados por “”– Representadas por instâncias da classe String (pacotes
java.lang)– Declaração e Inicialização:
• String saudacao = “Bom dia!”;• Variável saudacao conterá um ponteiro (referência) para um
objeto do tipo String que estará em memória e que “armazenará” a informação “Bom dia!”
– Exemplo:String s1 = “string1”;String s2 = “string2”;String s3 = new String(“s1”);
char data[] = { ‘a’, ‘b’, ‘c’ }; String cc = “ab”+ “cde”;
– As strings podem ser concatenadas através do operador +
4
StringsStrings• Strings: Comparação Strings: Comparação
– Não use o operador == para comparar Strings– O operador == testa referências quando utilizado com
objetos, ou seja, testa se os objetos “apontam” para mesma posição de memória
– Use o método equals() da classe String– Use o método equalsIgnoreCase() da classe String se não
for importante a caixa (maiúsculas ou minúsculas)String nome = “Lisa”;
if(!nome.equals(“Bart”))
If(“Lisa”.equals(nome))
5
Classe MathClasse Math• Expressões MatemáticasExpressões Matemáticas
– Os métodos da classe Math permitem realizar cálculos comuns necessários em expressões matemáticas.
– Exemplos de chamadas de métodos da classe Math:• Função raiz quadrada: double y = Math.sqrt(10.0);• Função mínimo: double z = Math.min(x,10);
• Os métodos da classe Math são métodos estáticosOs métodos da classe Math são métodos estáticos– não necessitam de objetos da classe para sua chamada– você deve preceder as chamadas dos métodos com o
nome da classe seguido de ponto
6
Classe MathClasse Math• Chamada de MétodosChamada de Métodos
– Métodos podem ser chamados em declarações de variáveis ou como parâmetros de outros métodos
• float z = Math.sqrt(4.0*x);• System.out.println(Math.sqrt(x+y*f));
• A classe Math possui duas constantes importantes A classe Math possui duas constantes importantes em programas matemáticos: em programas matemáticos: – Math.E = 2.7282818284590452354
// valor base de logaritmos naturais– Math.PI = 3.14159265358979323846
// relação entre a circunferência e o diâmetro de círculos
7
Método
abs( x )
ceil ( x )
cos( x )
exp( x )
floor( x )
log( x )
max( x, y )
min( x, y )
pow( x, y )
sin( x )
sqrt( x )
tan( x )
Exemplo
pow(2.0, 7.0) é 128.0; pow(9.0,0.5) é 3.0
sin (0.0) é 0.0
sqrt (900.0) é 30.0; sqrt (9.0) é 3.0
tan (0.0) é 0.0tangente trigonométrica de x (x em radianos)
abs(23.7) é 23.7; abs(0.0) é 0.0; abs(-23.7) é 23.7
ceil (9.2) é 10.0; ceil (-9.8) é -9.0;
cos(0.0) é 1.0
exp(1.0) é 2.718281828
floor (9.2) é 9.0; floor (-9.8) é -10.0
log (2.718282) é 1.0; log (7.389056) é 2.0
max( 2.3, 12.7) é 12.7; max(-2.3;-12.7) é -2.3
min( 2.3, 12.7) é 2.3; min(-2.3;-12.7) é -12.7menor valor entre x e y (também em versões para float, int e long)
x elevado à potência y (x y )
seno trigonométrico de x (x em radianos)
raiz quadrada de x
método esponencial e x
arredonda o valor de x para o maior inteiro menor que x
logaritmo natural de x (base e)
maior valor entre x e y (também em versões para float, int e long)
Descriçãovalor absoluto de x (tem versões para
float, int e log)
arredonda o valor de x para o menor inteiro maior que x
co-seno trigonométrico de x (x em radianos)
Classe MathClasse Math
round( x ) round(9.2) é 9.0; round(-9.8) é -10.0arredonda o valor de x inteiro mais próximo
Importando PacotesImportando Pacotes• Pacotes (Packages)Pacotes (Packages)
– Conjunto de classes relacionadas é chamado de pacote• Grupo de todos os pacotes é conhecido como biblioteca de
classe java ou Java API (Java applications programming interface)
– Scanner está no pacote java.util– Os nomes dos pacotes Java começam com Java (pacotes
do núcleo da linguagem) ou Javax (extensões ao núcleo)
8
9
Importando PacotesImportando Pacotes• Exemplos de pacotes Java:Exemplos de pacotes Java:
– java.lang: Tipos e funcionalidades básicas da linguagem. Inclui, entre outras, as classes String, Math, Integer e Thread. É importada automaticamente em seus programas Java;
– java.util: classes para tarefas gerais, tais como vetores e string de tokens.
– java.net: recursos de rede (sockets e URLs);– java.io: classes para escrita e leitura em arquivos;– java.awt: componentes gráficos originais da linguagem
(Abstract Window Toolkit); – javax.swing: pacote de extensão aos componentes
gráficos com melhoramentos à biblioteca AWT– java.applet: classes específicas para tratamento de
applets;
10
Importando PacotesImportando Pacotes• Nome completo de uma classe: nome do pacote + nome da Nome completo de uma classe: nome do pacote + nome da
classeclasse– Ex.: java.lang.String -> nome completo da classe String
• Sentença import:Sentença import:– Permite a utilização de membros de pacotes sem a necessidade
de referenciá-los a partir do seu nome completo– import <nome completo da classe>;
• A importação pode ser de:A importação pode ser de:– Apenas um membro do pacote
• Ex.: import java.util.Scanner;– Todos os membros do pacote
• Ex.: import java.util.*;• Se não forem usadas todas as classes desse pacote, o compilador vai
descobrir quais foram as classes usadas e as importá-las em tempo de compilação
– O pacote java.lang é sempre importado• import java.lang.*;
11
Leitura do TecladoLeitura do Teclado• Para ler de forma confortável texto do canal de entrada padrãoPara ler de forma confortável texto do canal de entrada padrão
– É preciso criar primeiro um Scanner passando o canal System.in que esta associado ao teclado
• Para cada um dos tipos primitivos há um método Para cada um dos tipos primitivos há um método correspondente com a assinatura nextXxx() que retorne um correspondente com a assinatura nextXxx() que retorne um valor desse tipo. valor desse tipo. – Se a string não puder ser interpretada como sendo deste tipo, é
lançado uma exceção do tipo InputMismatchException. • Exemplos de algumas leituras de tokens: Exemplos de algumas leituras de tokens:
– String aToken = input.next() ; //Lê um token string– int num1 = input.nextInt() ; //Lê um token inteiro – double num2 = input.nextDouble() ; //Lê um token real– String linha = input.nextLine() ; //Lê uma linha
Scanner input = new Scanner(System.in);Scanner input = new Scanner(System.in);
12
Impressão Formatada dados Impressão Formatada dados formatadosformatados• printfprintf
– Primeiro argumento é a string formatada (texto fixo e especificadores de formato)
– Especificadores de formato começam com (%) e são seguidos por um caractere que representa o tipo de dado
• %s para uma string – System.out.printf( "%s\n%s\n", " Bem vindo", " a Java!" );
• %d para um decimal• %f para um número ponto flutuante
System.out.printf( "A soma eh %d\n", soma ); // apresenta System.out.printf( "A soma eh %d\n", soma ); // apresenta somasoma
13
Exemplo: SomaExemplo: Soma// Programa de adição que apresenta a soma de dois números.// Programa de adição que apresenta a soma de dois números.import java.util.Scanner; // programa usa a classe Scanner da package java.utilimport java.util.Scanner; // programa usa a classe Scanner da package java.utilpublic class Soma {public class Soma {
// método main inicia a execução da aplicação Java // método main inicia a execução da aplicação Java public static void main( String args[] ) {public static void main( String args[] ) {// cria objeto da classe Scanner para obter entradas do teclado// cria objeto da classe Scanner para obter entradas do teclado
Scanner input = new Scanner( System.in ); Scanner input = new Scanner( System.in ); int numero1; // declara variável: primeiro numero a somar int numero1; // declara variável: primeiro numero a somar int numero2; // declara variável: segundo numero a somar int numero2; // declara variável: segundo numero a somar int soma; // declara variável: soma de numero1 com numero2int soma; // declara variável: soma de numero1 com numero2
System.out.print( "Digite o primeiro inteiro: " ); // promptSystem.out.print( "Digite o primeiro inteiro: " ); // prompt numero1 = input.nextInt(); // lê primeiro número via método nextInt da classe Scanner numero1 = input.nextInt(); // lê primeiro número via método nextInt da classe Scanner System.out.print( "Digite o segundo inteiro: " ); // promptSystem.out.print( "Digite o segundo inteiro: " ); // prompt numero2 = input.nextInt(); // lê segundo numeronumero2 = input.nextInt(); // lê segundo numero soma = numero1 + numero2; // adiciona númerossoma = numero1 + numero2; // adiciona números System.out.printf( "A soma eh %d\n", soma ); // apresenta somaSystem.out.printf( "A soma eh %d\n", soma ); // apresenta soma
} // fim do metodo main} // fim do metodo main} // fim da classe Soma} // fim da classe Soma
14
ExercíciosExercícios• Exercício 1Exercício 1
– Escreva um programa que calcula a média de três números reais digitados pelo usuário
• Utilize a classe Scanner e printf
15
Caixa de Dialogo: Caixa de Mensagem Caixa de Dialogo: Caixa de Mensagem • Classe JOptionPane Classe JOptionPane
– Oferece caixas de diálogo pré-empacotadas que permitem aos programas apresentarem janelas contendo mensagens para o usuário
– Faz parte do pacote javax.swing• Pacote que contém várias classes que ajudam o
programador a criar GUIs (Graphical User Interfaces) // Imprime linhas na caixa de dialogo// Imprime linhas na caixa de dialogoimport javax.swing.JOptionPane; // importa classe JOptionPane import javax.swing.JOptionPane; // importa classe JOptionPane public class Dialogo1 { public class Dialogo1 {
public static void main( String args[] ) { public static void main( String args[] ) { // apresenta um dialogo com a mensagem// apresenta um dialogo com a mensagemJOptionPane.showMessageDialog( null, " Bem vindo\na\JOptionPane.showMessageDialog( null, " Bem vindo\na\
nJava" ); nJava" ); } }
} }
16
Caixa de Dialogo: Caixa de MensagemCaixa de Dialogo: Caixa de Mensagem• Classe JOptionPane Classe JOptionPane
– Método JOptionPane.showMessageDialog • Método estático: não requer a instanciação de um objeto• Argumentos
– Primeiro usado para posicionamento na tela» Null para colocar a caixa no centro da tela do frame default
– Segundo é a String a apresentar
// Imprime linhas na caixa de dialogo// Imprime linhas na caixa de dialogoimport javax.swing.JOptionPane; // importa classe JOptionPane import javax.swing.JOptionPane; // importa classe JOptionPane public class Dialogo1 { public class Dialogo1 {
public static void main( String args[] ) { public static void main( String args[] ) { // apresenta um dialogo com a mensagem// apresenta um dialogo com a mensagemJOptionPane.showMessageDialog( null, " Bem vindo\na\JOptionPane.showMessageDialog( null, " Bem vindo\na\
nJava" ); nJava" ); } }
} }
17
Caixa de Dialogo: Caixa de MensagemCaixa de Dialogo: Caixa de Mensagem• Classe JOptionPane Classe JOptionPane
– Método JOptionPane.showMessageDialog • Argumentos
– Primeiro usado para posicionamento na tela» Null para colocar a caixa no centro da tela do frame default
– Segundo é a String a apresentar– Terceiro é o título da janela– Quarto é o tipo de mensagem
// Imprime linhas na caixa de dialogo// Imprime linhas na caixa de dialogoimport javax.swing.JOptionPane; // importa classe JOptionPane import javax.swing.JOptionPane; // importa classe JOptionPane public class Dialogo2 { public class Dialogo2 {
public static void main( String args[] ) { public static void main( String args[] ) { // apresenta um dialogo com a mensagem// apresenta um dialogo com a mensagemJOptionPane.showMessageDialog( null, JOptionPane.showMessageDialog( null, ""Bem vindo\na\Bem vindo\na\
nJavanJava"" , , ""TituloTitulo"", , JOptionPane.INFORMATION_MESSAGEJOptionPane.INFORMATION_MESSAGE); );
} } } }
18
Caixa de Dialogo: Digitando textoCaixa de Dialogo: Digitando texto• Classe JOptionPane Classe JOptionPane
– Método JOptionPane.showInputDialog
import javax.swing.JOptionPane; import javax.swing.JOptionPane; public class BoasVindas {public class BoasVindas {
public static void main( String args[] ) { public static void main( String args[] ) { // solicita a digitação do nome// solicita a digitação do nomeString nome = JOptionPane.showInputDialog("Qual é seu String nome = JOptionPane.showInputDialog("Qual é seu
nome?" ); nome?" ); // cria a mensagem // cria a mensagem
String mensagem = String.format("Bem vindo, %s, a String mensagem = String.format("Bem vindo, %s, a Desenvolvimento Desenvolvimento
orientado a objetos!", nome ); orientado a objetos!", nome ); // Apresenta a mensagem de boas vindas // Apresenta a mensagem de boas vindas JOptionPane.showMessageDialog( null, mensagem ); JOptionPane.showMessageDialog( null, mensagem );
}}}}
19
Caixa de Dialogo: Digitando textoCaixa de Dialogo: Digitando texto• Método showInputDialog()Método showInputDialog()
– Variáveis informadas aos programas Java são sempre Strings que devem ser convertidas.
– Erros de entradas inesperadas (tipos incompatíveis com as conversões) devem ser tratados pelo usuário (veremos como em tratamento de exceções).
import javax.swing.JOptionPane; import javax.swing.JOptionPane; public class EntradaInteiro {public class EntradaInteiro {
public static void main( String args[] ) { public static void main( String args[] ) { // solicita a digitação de um inteiro// solicita a digitação de um inteiroString sInt = JOptionPane.showInputDialog("Digite String sInt = JOptionPane.showInputDialog("Digite
Inteiro?" ); Inteiro?" ); // recupera a informação como um numero inteiro// recupera a informação como um numero inteiro
int numero = int numero = Integer.parseInt( sInt);Integer.parseInt( sInt);}}
}}
20
ExercíciosExercícios2.2. Modifique o programa de adição de maneira a utilizar Modifique o programa de adição de maneira a utilizar
entradas baseada em diálogos com JOptionPane ao invés entradas baseada em diálogos com JOptionPane ao invés de usar entrada baseada em consolede usar entrada baseada em console
3.3. Escreva uma instrução (ou comentário) para realizar cada Escreva uma instrução (ou comentário) para realizar cada uma das seguintes tarefas: uma das seguintes tarefas: a) Declarar as variáveis x,y e z e resultado como tipo intb) Declarar as variáveis xVal, yVal e zVal como do tipo String
c) Solicitar ao usuário para inserir o 1o valor, ler o valor e armazenar em xVald) Solicitar ao usuário para inserir o 1o valor, ler o valor e armazenar em yVale) Solicitar ao usuário para inserir o 1o valor, ler o valor e armazenar em zValf) Converter xVal em um int e armazenar o resultado na variável xg) Converter yVal em um int e armazenar o resultado na variável yh) Converter zVal em um int e armazenar o resultado na variável zi) Computar o produto dos três inteiros contidos em x,y e z e atribuir o resultado à variável resultadoj) Exibir um diálogo contendo a mensagem “O Produto é” seguindo do valor da variável resultadok) Retornar um valor a partir do programa para indicar que o mesmo foi finalizado com sucesso.
21
Estrutura de Seleção ifEstrutura de Seleção if• SintaxeSintaxe
if (condição) comando Java; [ou {bloco de comandos Java;}]
• Exemplo: Exemplo: Se a média das notas do aluno for maior ou igual a 6 Imprimir “Aprovado”
if if (media >= 6)(media >= 6) System.out.println(“Aprovado”);System.out.println(“Aprovado”);if if (media >= 6) { (media >= 6) { System.out.print(“O Aluno está”);System.out.print(“O Aluno está”); System.out.println(“Aprovado”);System.out.println(“Aprovado”);}}
Media >=6 Imprimir “Aprovado”
verdadeiro
falso
22
Estrutura de Seleção ifEstrutura de Seleção if
Igualdade ou operador relacional padrão
Igualdade ou operador relacional J ava
Exemplo Significado
Operadores de Igualdade = == x == y x é igual a y ≠ != x != y x não é igual a y Operadores Relacionais > > x > y x é maior que y < < x < y x é menor que y >= x >= y x é maior ou igual a y <= x <= y x é menor ou igual a y
23
Operadores LógicosOperadores Lógicos• Operador Condicional AND (&&)Operador Condicional AND (&&)
– Usado para testar se duas condições são verdadeiras
• Operador Condicional OR (||)Operador Condicional OR (||)– Usado para testar se uma das condições são verdadeiras
• Adotam circuito curto Adotam circuito curto – AND: Verifica segundo operando apenas se o primeiro é
verdadeiro– OR: Verifica segundo operando apenas se o primeiro é
falso
if (sexo == MASC) && (idade >= 65)if (sexo == MASC) && (idade >= 65)++homemIdoso;++homemIdoso;
if (media >= 6) || (recuperacao >= 6)if (media >= 6) || (recuperacao >= 6)++numAprovados;++numAprovados;
24
Operadores BooleanosOperadores Booleanos• AND (&) e OR (|) AND (&) e OR (|)
– Similar aos operadores lógicos, com uma exceção: os operadores lógicos boleanos sempre avaliam os dois operandos
– Útil para evitar efeitos colaterais no circuito curto quando existir modificação de valores de variáveis no segundo operando
• Garante que ++idade >= 60 será avaliado e a idade será incrementada
if (vendido == true) | (++idade >= 60)if (vendido == true) | (++idade >= 60)
25
Estrutura de Seleção if/elseEstrutura de Seleção if/else• SintaxeSintaxe
if (condição)
comando Java;
[ou {bloco de comandos Java;}]
else
comando Java;
[ou {bloco de comandos Java;}]
System.out.print(“O Aluno está”); System.out.print(“O Aluno está”); if (media >= 6){if (media >= 6){
System.out.println(“ System.out.println(“ Aprovado”);Aprovado”);} // fim do bloco if} // fim do bloco ifelse { else {
System.out.println(“ System.out.println(“ Reprovado”);Reprovado”);
} // fim do bloco else} // fim do bloco else
Media >=6 Imprimir “Aprovado”
verdadeiro
falso
Imprimir “Reprovado”
26
Estrutura de Seleção if/elseEstrutura de Seleção if/else
• Estrutura aninhadaEstrutura aninhada
Media >=9 A
verdadeiro
falso
Media >=7 B
verdadeiro
falso
Media >=6 C
verdadeiro
D
falso
if (media >= 9)if (media >= 9) System.out.print(“O Conceito é A”); System.out.print(“O Conceito é A”); else if (media >= 7)else if (media >= 7) System.out.print(“O Conceito é B”); System.out.print(“O Conceito é B”); else if (media >= 6)else if (media >= 6) System.out.print(“O Conceito é C”);System.out.print(“O Conceito é C”);elseelse System.out.print(“O Conceito é D”);System.out.print(“O Conceito é D”);
27
Exemplo: Estrutura if Exemplo: Estrutura if // Compara inteiros usando a estrutura de controle if, operadores relacionais // Compara inteiros usando a estrutura de controle if, operadores relacionais // e operadores de igualdade.// e operadores de igualdade.
import java.util.Scanner; // programa usa a classe Scannerimport java.util.Scanner; // programa usa a classe Scannerpublic class Compara {public class Compara {
// método main inicia a execução do programa Java// método main inicia a execução do programa Javapublic static void main( String args[] ) {public static void main( String args[] ) {// cria objeto Scanner para obter entradas do teclado// cria objeto Scanner para obter entradas do tecladoScanner input = new Scanner( System.in );Scanner input = new Scanner( System.in );int numero1, numero2; // primeiro e segundo numero a compararint numero1, numero2; // primeiro e segundo numero a compararSystem.out.print( "Digite primeiro numero: " ); // promptSystem.out.print( "Digite primeiro numero: " ); // promptnumero1 = input.nextInt(); // lê o primeiro numeronumero1 = input.nextInt(); // lê o primeiro numeroSystem.out.print( "Digite segundo numero: " ); // promptSystem.out.print( "Digite segundo numero: " ); // promptnumero2 = input.nextInt(); // lê o segundo numeronumero2 = input.nextInt(); // lê o segundo numero
28
ExemploExemploif ( numero1 == numero2 ) if ( numero1 == numero2 ) System.out.printf( "%d == %d\n", numero1, numero2 );System.out.printf( "%d == %d\n", numero1, numero2 );if ( numero1 != numero2 ) if ( numero1 != numero2 ) System.out.printf( "%d != %d\n", numero1, numero2 );System.out.printf( "%d != %d\n", numero1, numero2 );if ( numero1 < numero2 ) if ( numero1 < numero2 ) System.out.printf( "%d < %d\n", numero1, numero2 );System.out.printf( "%d < %d\n", numero1, numero2 );if ( numero1 > numero2 ) if ( numero1 > numero2 ) System.out.printf( "%d > %d\n", numero1, numero2 );System.out.printf( "%d > %d\n", numero1, numero2 );if ( numero1 <= numero2 ) if ( numero1 <= numero2 ) System.out.printf( "%d <= %d\n", numero1, numero2 );System.out.printf( "%d <= %d\n", numero1, numero2 );if ( numero1 >= numero2 ) if ( numero1 >= numero2 ) System.out.printf( "%d >= %d\n", numero1, numero2 );System.out.printf( "%d >= %d\n", numero1, numero2 );} // fim do método main} // fim do método main
} // fim da classe Compara} // fim da classe Compara
Recommended