Estrutura de Controle em JAVA Prof. Hugo Sampaio São Luís, MA Estrutura de um programa em JAVA Import java.io.*; class MinhaClasse { public static void main (String arg[]) { System.out.println("Ola turma"); } } Onde : import java.io.*; - Inclusão de classes MinhaClasse – Nome da classe System.out - Objeto de saída padrão public static void main (String arg[])– Função main © Prof.Hugo Sampaio - 2 Estrutura de um programa em JAVA Apenas a classe de inicio (start) do programa deve ter função main. Observe que a função main recebe um array do tipo String. Em JAVA temo uma classe que define o tipo String, logo a variável do tipo string é uma instância desta classe. © Prof.Hugo Sampaio - 3 Tipos de Variáveis (primitivos) Tipo Tamanho boolean ------char 16 bits Descrição booleano caracter byte 08 bits byte int 32 bits Inteiro long 64 bits longo float 32 bits float double 64 bits double void ------- void © Prof.Hugo Sampaio - 4 Tipos de Variáveis (primitivos) class MinhaClasse { public static void main (String arg[]) { int i = 5; char c = 'a'; float f = 2; double d = 2.3456; boolean b = false; System.out.println(i); System.out.println(c); System.out.println(f); System.out.println(d); System.out.println(b); } } © Prof.Hugo Sampaio - 5 Tipos de Variáveis (Objetos) Para criar uma variável do tipo String ou Integer devemos criar um objeto. A palavra reservada “new” deve ser utilzada para criar o objeto. Ex. : String nome = new String(); Obs.: regra geral para criação de objetos; © Prof.Hugo Sampaio - 6 Saída de dados Adotaremos como saída padrão dois métodos : Saída na tela do sistema : Objeto : System.out Ex. : Para imprimir uma mensagem ou valor System.out.println(“MSG”); System.out.println(valor); © Prof.Hugo Sampaio - 7 Exemplo de saída import javax.swing.*; class MinhaClasse { public static void main (String arg[]) { String nome = new String(); nome = "Hugo Sampaio"; } System.out.println("Ola!, " + nome); } © Prof.Hugo Sampaio - 8 Saída de dados Saída em uma janela dialogo de mensagem : Objeto : JOptionPane.showMessageDialog() Ex. : Para imprimir uma mensagem ou valor JOptionPane.showMessageDialog( null, “MSG” “TITULO” <ICONE> ); © Prof.Hugo Sampaio - 9 Exemplo de saída import javax.swing.*; class MinhaClasse { public static void main (String arg[]) { String nome = new String(); nome = "Hugo Sampaio"; } } JOptionPane.showMessageDialog( null, "Ola! " + nome, "Minhas mensagens", JOptionPane.INFORMATION_MESSAGE © Prof.Hugo Sampaio - 10 JOptionPane.INFORMATION_MESSAGE JOptionPane.ERROR_MESSAGE JOptionPane.INCANCEL_OPTION © Prof.Hugo Sampaio - 11 Entrada de dados Como entrada padrão temos : Entrada direto na tela do sistema : Objeto : System.in junto com o DataInputStream Ex. : Para ler do teclado um valor DataInputStream str = new DataInputStream(System.in); x = str.readLine(); // sempre uma string © Prof.Hugo Sampaio - 12 Exemplo de entrada import javax.swing.*; import java.io.*; class MinhaClasse { public static void main (String arg[]) { String x = new String(); DataInputStream teclado = new DataInputStream(System.in); try{ x = teclado.readLine(); }catch(Exception ex){} System.out.println(“Palavra : " + x); } } © Prof.Hugo Sampaio - 13 Outro Exemplo de entrada import javax.swing.*; import java.io.*; class MinhaClasse { public static void main (String arg[]) { String x = new String(); String y = new String(); DataInputStream teclado = new DataInputStream(System.in); try{ x = teclado.readLine(); y = teclado.readLine(); }catch(Exception ex){} System.out.println(“Frase : " + x + " " + y); } } © Prof.Hugo Sampaio - 14 Entrada de dados Entrada por uma janela dialogo de mensagem : Objeto : JOptionPane.showInputDialog Ex.: int x; x = JOptionPane.showInputDialog ("Entre com o seu nome :"); © Prof.Hugo Sampaio - 15 Exemplo de entrada import javax.swing.*; class MinhaClasse { public static void main (String arg[]) { String nome = new String(); nome = JOptionPane.showInputDialog ("Entre com o seu nome :"); } } System.out.println("Ola!, " + nome); © Prof.Hugo Sampaio - 16 Exercício 1) Crie um programa em JAVA que imprime na tela do sistema o seu nome. 2) Crie um programa em JAVA que ler dois número do teclado e imprime na tela a soma entre eles. Utilize a tela do sistema para ler os dados e uma tela de dialogo para mostrar o valor. © Prof.Hugo Sampaio - 17 Operadores De atribuição : = De matemáticos : + , - , *, / , % (modulo) De incremento : ++ , -- , += , -= , /= , *= , %= Lógicos : && , || , ! Relacionais : > , < , >= , <= , == © Prof.Hugo Sampaio - 18 Estrutura de seleção IF, (única) if(x>=10) System.out.println(“OK”); IF ... ELSE; (dupla) if(x>=10) System.out.println(“verdade”); else System.out.println(“falso”); © Prof.Hugo Sampaio - 19 Estrutura de seleção IF ... ELSE; (aninhados) int x =-5; if(x>=0) if(x<=10) System.out.println(“Numero entre 0 e 10”); else System.out.println(“Numero fora da faixa”); diferente de : int x = -5; if(x>=0){ if(x<=10) System.out.println(“Numero entre 0 e 10”); }else System.out.println(“Numero fora da faixa”); © Prof.Hugo Sampaio - 20 Estrutura de seleção SWITCH; (múltipla) int op=6; switch(op) { case 1: System.out.println("opcao 1"); break; case 2: System.out.println("opcao 2"); break; case 3: System.out.println("opcao 3"); break; default: System.out.println("opcao default"); break; } (exp ? verdade : falso), operador condicional int x = a>b ? a : b; System.out.println(x) © Prof.Hugo Sampaio - 21 Estrutura de repetição FOR; for(x=0;x<10;x++) System.out.println(“Esta eh a linha” + x); WHILE; while(x<=10) { System.out.println(“Esta eh a linha” + x); x++; } © Prof.Hugo Sampaio - 22 Estrutura de repetição DO ... WHILE; do { System.out.println(“Esta eh a linha” + x); x++; }while(x<=10) © Prof.Hugo Sampaio - 23 Exercícios 1) Faça uma programa que recebe dois números x e y e imprime na tela todos os números primos entre eles. 2) Faça um programa que ler uma palavra e diz se esta palavra é um palíndromo. (Utilize os métodos da classe string). 3) Faça um programa que ler 10 números seguidos e ao final imprima em uma janela de dialogo o maior deles. © Prof.Hugo Sampaio - 24 Criando um nova classe class NomeDaClasse { int valor=0; NomeDaClasse(){} ATRIBUTO // Construtor void imprimir() { System.out.println(valor); } void atribuir(int a) { valor=a; } MÉTODOS } © Prof.Hugo Sampaio - 25 Utilizando a nova classe import NomeDaClasse; public static void main(String arg[]) { NomeDaClasse obj1 = new NomeDaClasse(); NomeDaClasse obj2 = new NomeDaClasse(); int x=10, y=5; obj1.atribuir(x); obj2.atribuir(y); obj1.imprimir(); obj2.imprimir(); } © Prof.Hugo Sampaio - 26 Exemplo Classe Triangulo public class CTriangulo { int lado_A,lado_B,lado_C; void AtibuirLadoA(int valor){lado_A = valor;} void AtibuirLadoB(int valor){lado_B = valor;} void AtibuirLadoC(int valor){lado_C = valor;} void imprimirLadoA() {System.out.println("O Lado A = " + lado_A);} void imprimirLadoB() {System.out.println("O Lado B = " + lado_B);} void imprimirLadoC() {System.out.println("O Lado C = " + lado_C);} ... © Prof.Hugo Sampaio - 27 Exemplo Classe Triangulo (cont.) void imprimirTodosLados() { System.out.println("O Lado A = " + lado_A); System.out.println("O Lado B = " + lado_B); System.out.println("O Lado C = " + lado_C); } void IsEquilatero() { boolean AB,BC; AB = (lado_A == lado_B); BC = (lado_B == lado_C); if(AB==BC) System.out.println(“Eh equilatero"); else System.out.println("NAO eh equilatero"); } } © Prof.Hugo Sampaio - 28 Exercício 1) Utilizando a classe CTriangulo, crie um método que recebe um outro objeto CTriangulo e compara se são iguais. 2) Baseado no exemplo do triangulo, crie uma classe que modela o objeto Quadrado. 3) Crie uma classe para modelar objetos tipo “data”. © Prof.Hugo Sampaio - 29 Exercício 4) Crie uma classe que modela um objeto tipo “mensagem” , este objeto deve conter o método “imprimir” que recebe dois argumentos, sendo : imprimir(String str, int tipo) Onde : str – Mensagem a ser impressa; tipo – tipo de saída : 0 - saída apenas na console; 1 - saída apenas em uma janela de dialogo; (usar JOptionPane) © Prof.Hugo Sampaio - 30 Herança Empregado Características Herdadas Secretária Nome: ID: Salário: isMae? Nome: ID: Salário: Engenheiro Nome: ID: Salário: CREA Motorista Nome: ID: Salário: Turno © Prof.Hugo Sampaio - 31 Herança Exemplo : Class CPessoa { String campoNome; int campoIdentidade; CPessoa(String nome,int ident) { campoNome=nome; campoIdentidade=ident; } } void imprimirNome() { System.out.println(campoNome); } © Prof.Hugo Sampaio - 32 Herança Observe como “herdar” da classe CPessoa Class CFuncionario extends CPessoa { float campoSalario; String campoCargo; CFuncionario(String nome,int ident,int salar) { super(nome,ident); campoSalario = salar; } void imprimirSalario() { System.out.println(campoSalario); } } © Prof.Hugo Sampaio - 33 Herança class MinhaClasse { public static void main (String arg[]) { CFuncionario F; F = new CFuncionario("Hugo",11,100.0); F.imprimirNome(); F.imprimirSalario(); } © Prof.Hugo Sampaio - 34 Herança Outro class { int int int Exemplo : CData campoDia; campoMes; campoAno; CData(int d,int m,int a) { if(isValida(d,m,a)) campoDia=d; campoMes=m; campoAno=a; } boolean isValida(int d,int m,int a) { if((d>=1) && (d<=31) && (m>=1) && (m<=12)) return(true); else return(false); } } © Prof.Hugo Sampaio - 35 Herança class CDataAniversario extends CData { CDataAniversario(int d,int m,int a) { super(d,m,a); } void imprimeAniversario() { System.out.println(campoDia + "/" + campoMes + "/" + campoAno); } } © Prof.Hugo Sampaio - 36 A Palavra chave super Como o construtor da classe não pode ser chamado diretamente, usamos a palavra chave “super” para possibilitar a inicialização dos campos da superclasse. Assim : CDataAniversario(int d,int m,int a) { super(d,m,a); } Repassa dos parametros recebido para a sua classe superior. Obrigatoriamente este comando deve ser usado em um construtor e sempre na primeira linha © Prof.Hugo Sampaio - 37 Exercício 1) Escreva a classe CData que guarda as caracteristicas de uma data. 2) Escreva a classe CDataAniversario que recebe dia.mes e ano como argumentos e herda característica da classe CData. 3) Escreva a classe CConta que representa uma conta bancária. 4) Escreva as classe CContaCorrente, CPoupança que herda as características da classe CConta. © Prof.Hugo Sampaio - 38 Classe usando objetos Uma classe pode ter como campo de dados (atributos) um objeto. Podem também receber como argumento uma instância dela mesmo. Clase CQuadrado.isIgual(CQuadrado m) { if(this.altura == m.altura) && (this.largura == m.largura) { System.out.println(“Eu sou igual ao quadrado m”); } } © Prof.Hugo Sampaio - 39 Exercício 1) Escreva a classe CLivro que guarda as caracteristicas de um livro. 2) Escreva a classe CEstante que armazena livros (utilizar a classe criada no exerc. 1) em posições e prateleiras. 3) Escreva a classe CBiblioteca que utiliza a classe CEstante para armazenar livros 4) Faça um pequena aplicação em JAVA para demonstrar a utilização destas classes. © Prof.Hugo Sampaio - 40 Escopo Quando uma variável ou método é antecedido pela palavra “public”, ela poderá ser acessada de qualquer lugar. Quando uma variável ou método é antecedido pela palavra “private”, ela só poderá ser acessada dentro da classe onde foi declarada. Quando uma variável ou método é antecedido pela palavra “protected”, ela só poderá ser acessada dentro da classe onde foi declarada e também nas classes herdeiras. . © Prof.Hugo Sampaio - 41 Escopo Uma elemento definido como “static” poderá ser chamado pelo nome da classe e não por um objeto desta classe. Ex.: O método : public static final out da classe System. System.out.println(“Ola”); Se uma classe é precedida da palavra “final”, não poderá ter herdeiras. Se isto acontece com métodos, este método não poderá sofrer override (sobrecarga). Uma propriedade final, não pode ter o seu valor alterado. É uma constante. © Prof.Hugo Sampaio - 42 Classes abstrata Uma classe abstrata não pode instanciar (gerar) objetos. Ela apenas permite ser estendida (herdada). Uma classe para ser abstrata seu nome deve ser precedido pela palavra “abstract”. Ex.: public abstract class CAgente extends Thread { ... } © Prof.Hugo Sampaio - 43 Classes abstrata Um método também pode ser declarado como “abstract”, neste caso ele deve ser implementado em uma classe herdeira. © Prof.Hugo Sampaio - 44