Estrutura de Controle em JAVA Prof. Hugo Sampaio São Luís, MA.
Transcript of Estrutura de Controle em JAVA Prof. Hugo Sampaio São Luís, MA.
Estrutura de Controle emJAVA
Prof. Hugo SampaioSão Luís, MA
© Prof.Hugo Sampaio - 2
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 - 3
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.
Estrutura de um programa em JAVA
© Prof.Hugo Sampaio - 4
Tipos de Variáveis (primitivos)
Tipo Tamanho Descrição
boolean ------- booleano
char 16 bits 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 - 5
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 - 6
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 - 7
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 - 8
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 - 9
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 - 10
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 - 11
JOptionPane.INFORMATION_MESSAGE JOptionPane.ERROR_MESSAGE
JOptionPane.INCANCEL_OPTION
© Prof.Hugo Sampaio - 12
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 - 13
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 - 14
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 - 15
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 - 16
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 - 17
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 - 18
Operadores
De atribuição : =
De matemáticos : + , - , *, / , % (modulo)
De incremento : ++ , -- , += , -= , /= , *= , %=
Lógicos : && , || , !
Relacionais : > , < , >= , <= , ==
© Prof.Hugo Sampaio - 19
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 - 20
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 - 21
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 - 22
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 - 23
Estrutura de repetição
DO ... WHILE;
do {
System.out.println(“Esta eh a linha” + x); x++; }while(x<=10)
© Prof.Hugo Sampaio - 24
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 - 25
Criando um nova classe
class NomeDaClasse{ int valor=0;
NomeDaClasse(){} // Construtor
void imprimir() { System.out.println(valor); }
void atribuir(int a) { valor=a; }}
MÉTODOS
ATRIBUTO
© Prof.Hugo Sampaio - 26
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 - 27
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 - 28
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 - 29
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 - 30
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 - 31
Herança
Empregado
Nome:ID:Salário:
Motorista
Nome:ID:Salário:Turno
Secretária
Nome:ID:Salário:isMae?
Engenheiro
Nome:ID:Salário:CREA
Características
Herdadas
© Prof.Hugo Sampaio - 32
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 - 33
Herança
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); }}
Observe como “herdar” da classe
CPessoa
© Prof.Hugo Sampaio - 34
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 - 35
Herança
Outro Exemplo :class CData { int campoDia; int campoMes; int 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 - 36
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 - 37
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 - 38
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 - 39
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 - 40
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 - 41
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 - 42
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 - 43
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 - 44
Classes abstrata
Um método também pode ser declarado como “abstract”, neste caso ele deve ser implementado em uma classe herdeira.