UMA INTRODUÇÃO A LÓGICA
DE PROGRAMAÇÃO COM JAVA.
CLÊRTON LEAL
UM POUCO SOBRE MIM.
▸ Desenvolvedor de software com alguns anos de mercado.
▸ Com o tempo acabei me tornando um especialista em
Android.
▸ Sou maluco pro desenvolvimento de software.
▸ E doido por novas linguagens.
▸ Atualmente trabalhando no Instituto atlântico.
VAMOS FALAR
SOBRE O JAVA.
JAVA. UMA LINGUAGEM ANTI ERROS.
‣ TIPAGEM FORTE E ESTATICA.
‣ ORIENTAÇÃO A OBJETOS.
‣ GARBAGE COLLECTOR.
‣ EXCEPTIONS OBRIGATORIAMENTE TRATADAS.
‣ ERROS TRATADOS EM TEMPO DE COMPILAÇÃO.
IDE?
NÃO USE ECLIPSE.
INTELLIJ
INTELLIJ. UMA IDE SIMPLES E COMPLETA PARA PROGRAMAR.
‣ IDE ADOTADA PELO GOOGLE PARA
DESENVOLVIMENTO ANDROID.
‣ SIMPLES DE CONFIGURAR.
‣ GRATIS PARA JAVA E ANDROID.
‣ GRANDES FERRAMENTAS DE AJUDA NA HORA DE
PROGRAMAR.
CLASSE MAIN.
CLASSE MAIN. TUDO TEM UM INÍCIO.
‣ É O PONTO DE ENTRADA PARA QUALQUER
APLICAÇÃO JAVA DESKTOP.
‣

public class Main {



public static void main(String[] args) {

// write your code here

}
‣

}
VARIÁVEIS.
DECLARANDO VARIÁVEIS. TUDO VARIA, MENOS O TIPO…
‣ VARIÁVEIS SEMPRE TEM UM TIPO.
‣ O TIPO DE UMA VARIÁVEL NUNCA MUDA.
‣ ESSA É UMA DAS MAIORES ARMAS DO JAVA
CONTRAS OS ERROS DE ESCRITA DE CÓDIGO.
TIPOS PRIMITIVOS E OUTROS TIPOS.
‣ TIPOS PRIMITIVOS SÃO OS ÚNICOS TIPOS NÃO
OBJETOS DO JAVA.
‣ INT, LONG, FLOAT, DOUBLE, BOOLEAN, CHAR,
SHORT E BYTE.
‣ ESSES CARAS EXISTEM APENAS POR LEGADO DE
ANTIGAS VERSÕES.
TIPOS
‣ INTEGER, DOUBLE, LONG, FLOAT, STRING E
BOOLEAN.
public static void main(String[] args) {

int a; Integer a1;

char b; String b1;

double c; Double c1;

long d; Long d1;

float e; Float e1;

boolean f; Boolean f1;

}
CODE IT!!!
MÉTODOS/
FUNÇÕES.
MÉTODOS. A CHAVE DO REUSO DE CÓDIGO.
‣ MÉTODO É UM BLOCO DE CÓDIGO QUE PODE SER
CHAMADO REPETIDAS VEZES.
‣ NORMALMENTE CRIADO PARA REALIZAR UMA
AÇÃO/VERBO.
public class MinhaClasse {



private Integer meuNumero = 5;



public void qualMeuNumero() {

System.out.println("Meu numero é " + meuNumero);

}



}
PARAMETROS DE MÉTODOS
‣ MÉTODOS PODEM REALIZAR AÇÕES DE ACORDO
COM PARÂMETROS PASSADOS NA CAMADA.
‣ CADA CHAMADA AGIRÁ DIFERENTE, DE ACORDO
COM O PARÂMETRO PASSADO.
public class MinhaClasse {



public void qualMeuNumero(Integer meuNumero) {

System.out.println("Meu numero é " + meuNumero);

}



}
RETORNO DE MÉTODO.
‣ MÉTODOS PODEM RETORNAR UM VALOR PARA O
SEU INVOCADOR.
‣ UM MÉTODO PODE CALCULAR UM VALOR DE
ACORDO COM O PARÂMETRO PASSADO E RETORNAR
ESSE VALOR.
public class MinhaClasse {



public Integer meuNumeroAoQuadrado(Integer meuNumero) {

return meuNumero * meuNumero;

}



}
CÓDIGO!!!!!
TAVA NO
FLUXO…
TAVA NO FLUXO
‣ CONTROLE DE FLUXO DE CÓDIGO É O PRINCIPAL
CONCEITO DE QUALQUER LINGUAGEM DE
PROGRAMAÇÃO.
‣ NEM TODAS AS LINHAS DE CÓDIGO DEVEM SER
EXECUTADAS. IF E ELSE RESOLVEM ESSE
PROBLEMA.
‣ IF E ELSE PRECISAM DE UM BOOLEAN PARA
FUNCIONAR.
IF E ELSE. É OU NÃO É.
‣ OS COMPARADORES: >, <, >=, <=, == E !=
GERAL BOOLEANS QUE PODEM SER USADOS EM
IF/ELSE.
public class MinhaClasse {



public boolean numeroENegativo(Integer meuNumero) {

if (meuNumero < 0) {

return true;

} else {

return false;

}

}



}
CÓDIGO!!!!!
REPETIÇÃO!!!
FOR E WHILE. REPETIÇÃO É VIDA.
‣ LAÇOS DE REPETIÇÃO IRÃO EXECUTAR
CONTINUAMENTE ATÉ QUE UMA CONDIÇÃO SEJA
ATENDIDA.
‣ É EXTREMAMENTE USADO PARA ITERAÇÃO COM
LISTAS.
JAVA TEM CENTENAS DE TIPOS DE LISTAS.
‣ ARRAY, ABSTRACTCOLLECTION, ABSTRACTLIST,
ABSTRACTQUEUE, ABSTRACTSEQUENTIALLIST, ABSTRACTSET,
ARRAYBLOCKINGQUEUE, ARRAYDEQUE, ARRAYLIST,
ATTRIBUTELIST, BEANCONTEXTSERVICESSUPPORT,
BEANCONTEXTSUPPORT, CONCURRENTLINKEDDEQUE,
CONCURRENTLINKEDQUEUE, CONCURRENTSKIPLISTSET,
COPYONWRITEARRAYLIST, COPYONWRITEARRAYSET,
DELAYQUEUE, ENUMSET, HASHSET, JOBSTATEREASONS,
LINKEDBLOCKINGDEQUE, LINKEDBLOCKINGQUEUE,
LINKEDHASHSET, LINKEDLIST, LINKEDTRANSFERQUEUE,
PRIORITYBLOCKINGQUEUE, PRIORITYQUEUE, ROLELIST,
ROLEUNRESOLVEDLIST, STACK, SYNCHRONOUSQUEUE,
TREESET, VECTOR.
TIME IS MONEY
‣ COMO TEMOS POUCO TEMPO. VAMOS NOS
CONCENTRAR APENAS NOS ARRAYS.
‣ PODEMOS CRIAR UM ARRAY DE QUALQUER TIPO
COM ESSAS SINTAXES.
public static void main(String[] args) {

Integer[] meusNumeros = new Integer[8];

}
public static void main(String[] args) {

Integer[] meusNumeros = {2, 4, 5, 7, 1, 9};

}
ACESSANDO UM ARRAY
CÓDIGO!!!!!
VOLTANDO AO WHILE
‣ UM LAÇO DE WHILE IRA EXECUTAR ATÉ QUE SUA
CONDIÇÃO SEJA ATENDIDA.
public static void main(String[] args) {

Integer meuNumero = 0;



while(meuNumero < 5) {

System.out.println(meuNumero);

meuNumero = meuNumero + 1;

}

}
VOLTANDO AO FOR
‣ FOR É UMA LAÇO ESPECIALIZADO EM
TRABALHAR COM LISTAS.
public static void main(String[] args) {

Integer[] meusNumeros = {1, 3, 5, 7, 9, 20};



for (int x = 0; x < meusNumeros.length; x++) {

Integer meuNumero = meusNumeros[x];

System.out.println(meuNumero);

}

}
FOREACH
‣ FOREACH É UMA ESPECIALIZAÇÃO DO FOR QUE
DEVE SER USADA SEMPRE QUE FOR PRECISO
ITERAR SOBRE TODA A LISTA.
public static void main(String[] args) {

Integer[] meusNumeros = {1, 3, 5, 7, 9, 20};



for (Integer meuNumero : meusNumeros) {

System.out.println(meuNumero);

}

}
CÓDIGO!!!!!
OBRIGADO
CLERTONLEAL@GMAIL.COM
@CLERTONLEAL
Precisando falar comigo.
UMA INTRODUÇÃO A LÓGICA
DE PROGRAMAÇÃO COM JAVA.
CLÊRTON LEAL
UM POUCO SOBRE MIM.
▸ Desenvolvedor de software com alguns anos de mercado.
▸ Com o tempo acabei me tornando um especialista em
Android.
▸ Sou maluco pro desenvolvimento de software.
▸ E doido por novas linguagens.
▸ Atualmente trabalhando no Instituto atlântico.
VAMOS FALAR SOBRE
ORIENTAÇÃO A OBJETOS.
RECAPITULANDO
O QUE NÓS VIMOS ATÉ AQUI
TIPOS
CLASSES
O QUE SIGNIFICA CLASSE
‣ CATEGORIA
‣ CASTA
‣ CLASSIFICAÇÃO
CLASSE. OU VOCÊ TEM OU VOCÊ NÃO TEM.
‣ CLASSE É A DESCRIÇÃO DE UM TIPO DE UMA
VARIÁVEL.
‣ DESCREVE TODOS OS COMPORTAMENTOS QUE
UM OBJETO TERÁ.
‣ É A BASE PARA A ORIENTAÇÃO A OBJETOS.
CLASSE
TEXTO
OBJETOS
OBJETOS TEM CLASSE
‣ OBJETOS SÃO A INSTANCIA/CONSTRUÇÃO DE
UMA CLASSE.
‣ E TEM TODOS OS COMPORTAMENTOS DESCRITOS
NA MESMA.
public static void main(String[] args) {

MinhaClasse minhaClasse = new MinhaClasse();

}
VAMOS CRIAR NOSSA PROPRIA CLASSE.
TEXTO
COMPORTAMENTOS DE CLASSE
‣ VARIÁVEIS
‣ MÉTODOS
VAMOS ADICIONAR COMPORTAMENTOS. =D
MODIFICADORES
DE ACESSO.
PRIVADO OU PUBLICO. MUDANDO O ACESSO.
‣ VARIÁVEIS E MÉTODOS DE CLASSE PODEM TER
UM MODIFICADOR DE ACESSO.
‣ PUBLIC SIGNIFICA QUE QUALQUER UM PODE
ACESSAR A VARIÁVEL A PARTIR DO OBJETO.
‣ PRIVATE INDICA QUE NINGUÉM ALÉM DO
PRÓPRIO OBJETO PODE TER ACESSO A VARIÁVEL.
SEGUINDO O PADRÃO JAVA. FAZER O QUE…..
‣ O PADRÃO JAVA DEFINE QUE NUNCA DEVEMOS
TER UMA VARIÁVEL PUBLIC EM UMA CLASSE.
‣ TODAS AS VARIÁVEIS DEVEM SER PRIVATE.
public class MinhaClasse {



public String naoPode = "Não faça isso jovem";

private String pode = "Faça isso jovem";



}
public static void main(String[] args) {



MinhaClasse minhaClasse = new MinhaClasse();

System.out.println(minhaClasse.pode);

//Isso não compila pois a variável pode tem o modificador private



}
‣ O PADRÃO JAVA EXIGE QUE AS VARIÁVEIS SEJAM
ACESSADAS POR MÉTODOS DE GET E SET.
‣ O PADRÃO GET E SET ESTÃO PRESENTES EM
TODAS AS APIS JAVA.
GET E SET
‣ ADEQUANDO NOSSO CÓDIGO AO PADRÃO…
public class MinhaClasse {

private String pode = "Faça isso jovem";



public String getPode() {

return pode;

}



public void setPode(String pode) {

this.pode = pode;

}

}
public static void main(String[] args) {

MinhaClasse minhaClasse = new MinhaClasse();

System.out.println(minhaClasse.getPode());

}
CODIGO!!!
TRATAMENTO DE
EXCEÇÕES.
EXCEPTIONS. ERROS SÃO SEMPRE ESPERADOS NO MUNDO JAVA.
‣ DURANTE A EXECUÇÃO DE UM MÉTODO, UM
ERRO PODE ACONTECER.
‣ DEVEMOS SER SEMPRE CAPAZES DE TRATAR
ESSES ERROS.
‣ EM JAVA MÉTODOS PODEM EXPLICITAMENTE
INFORMAR QUE PODEM LANÇAR UMA EXCEÇÃO.
OI?
EXCEPTIONS.
‣ DECLARAR UMA EXCEÇÃO SIGNIFICA INFORMAR
QUE UM MÉTODO PODE CAUSAR UM ERRO E
EXIGIR QUE ESSE ERRO SEJA EXPLICITAMENTE
TRATADO.
public void deuRuim(Integer number) throws Exception {

if (number == 5) {

System.out.println("Sucesso!!!!!");

} else {

throw new Exception("Erro na execução do método");

}

}
EXCEPTIONS.
‣ TODOS QUE EVOCAREM O MÉTODO PRECISAM
TRATAR A EXCEÇÃO.
public static void main(String[] args) {

MinhaClasse minhaClasse = new MinhaClasse();

minhaClasse.deuRuim(4);

}
‣ O CÓDIGO ACIMA NÃO COMPILA. OCORRE UM
ERRO DE COMPILAÇÃO DEVIDO A EXISTÊNCIA DE
UMA EXCEÇÃO NÃO TRATADA.
TRY CATCH. TENTA EXECUTAR PARA MIM.
‣ PARA COMPILAR O CÓDIGO É NECESSÁRIO
TRATAR A EXCEÇÃO.
public static void main(String[] args) {

MinhaClasse minhaClasse = new MinhaClasse();

try {

minhaClasse.deuRuim(4);

} catch (Exception e) {

System.out.println(e.getMessage());

}

}
‣ CASO O MÉTODO JOGUE UMA EXCEÇÃO, O BLOCO
CATCH SERÁ CHAMADO.
CODIGO!!!
BIBLIOTECAS DE
TERCEIROS
BIBLIOTECAS DE TERCEIROS
‣ SÃO CÓDIGOS FEITOS POR OUTRAS PESSOAS E
DISPONIBILIZADOS PARA USO LIVRE OU NÃO.
‣ NORMALMENTE CHAMADOS DE FRAMEWORKS.
‣ TEM O INTUITO DE FACILITAR/POSSIBILITAR A
EXECUÇÃO DE TAREFAS COMPLEXAS.
TEXTO
‣ SELENIUM
‣ JUNIT
‣ JASMINE
‣ ESPRESSO
‣ CALABASH
‣ PROTRACTOR
‣ CUCUMBER
NO FINAL TUDO É CÓDIGO
ADICIONANDO
UMA BIBLIOTECA.
TEXTO
DESAFIO
▸ Quero acessar uma pagina da internet.
▸ Vamos fazer uma requisição HTTP a um site publico.
▸ Vamos exibir o conteúdo textual desse site.
É UMA BOA HORA PARA
USAR UM FRAMEWORK.
OKHTTP
TEXTO
‣ COM A ADIÇÃO DESSA BIBLIOTECA TEMOS ACESSO
A NOVAS CLASSES E MÉTODOS.
‣ E PODEMOS CRIAR UM MÉTODO EM NOSSA CLASSE
QUE FAZ REQUISIÇÕES A INTERNET.
public class MinhaClasse {



public String request(String url) throws IOException {

OkHttpClient okHttpClient = new OkHttpClient();

Request request = new Request.Builder().url(url).build();

Response response = okHttpClient.newCall(request).execute();

return response.body().string();

}



}
TEXTO
E PODEMOS CHAMAR ESSE MÉTODO EM NOSSA CLASSE MAIN.
public static void main(String[] args) {

try {

MinhaClasse minhaClasse = new MinhaClasse();

String resultado = minhaClasse.request("http://square.github.io/okhttp/");

System.out.println(resultado);

} catch (IOException e) {

System.out.println(e.getMessage());

}

}
OBRIGADO
CLERTONLEAL@GMAIL.COM
@CLERTONLEAL
Precisando falar comigo.

Introdução a programação I

  • 1.
    UMA INTRODUÇÃO ALÓGICA DE PROGRAMAÇÃO COM JAVA. CLÊRTON LEAL
  • 2.
    UM POUCO SOBREMIM. ▸ Desenvolvedor de software com alguns anos de mercado. ▸ Com o tempo acabei me tornando um especialista em Android. ▸ Sou maluco pro desenvolvimento de software. ▸ E doido por novas linguagens. ▸ Atualmente trabalhando no Instituto atlântico.
  • 3.
  • 4.
    JAVA. UMA LINGUAGEMANTI ERROS. ‣ TIPAGEM FORTE E ESTATICA. ‣ ORIENTAÇÃO A OBJETOS. ‣ GARBAGE COLLECTOR. ‣ EXCEPTIONS OBRIGATORIAMENTE TRATADAS. ‣ ERROS TRATADOS EM TEMPO DE COMPILAÇÃO.
  • 5.
  • 6.
  • 7.
  • 8.
    INTELLIJ. UMA IDESIMPLES E COMPLETA PARA PROGRAMAR. ‣ IDE ADOTADA PELO GOOGLE PARA DESENVOLVIMENTO ANDROID. ‣ SIMPLES DE CONFIGURAR. ‣ GRATIS PARA JAVA E ANDROID. ‣ GRANDES FERRAMENTAS DE AJUDA NA HORA DE PROGRAMAR.
  • 9.
  • 10.
    CLASSE MAIN. TUDOTEM UM INÍCIO. ‣ É O PONTO DE ENTRADA PARA QUALQUER APLICAÇÃO JAVA DESKTOP. ‣
 public class Main {
 
 public static void main(String[] args) {
 // write your code here
 } ‣
 }
  • 11.
  • 12.
    DECLARANDO VARIÁVEIS. TUDOVARIA, MENOS O TIPO… ‣ VARIÁVEIS SEMPRE TEM UM TIPO. ‣ O TIPO DE UMA VARIÁVEL NUNCA MUDA. ‣ ESSA É UMA DAS MAIORES ARMAS DO JAVA CONTRAS OS ERROS DE ESCRITA DE CÓDIGO.
  • 13.
    TIPOS PRIMITIVOS EOUTROS TIPOS. ‣ TIPOS PRIMITIVOS SÃO OS ÚNICOS TIPOS NÃO OBJETOS DO JAVA. ‣ INT, LONG, FLOAT, DOUBLE, BOOLEAN, CHAR, SHORT E BYTE. ‣ ESSES CARAS EXISTEM APENAS POR LEGADO DE ANTIGAS VERSÕES.
  • 14.
    TIPOS ‣ INTEGER, DOUBLE,LONG, FLOAT, STRING E BOOLEAN. public static void main(String[] args) {
 int a; Integer a1;
 char b; String b1;
 double c; Double c1;
 long d; Long d1;
 float e; Float e1;
 boolean f; Boolean f1;
 }
  • 15.
  • 16.
  • 17.
    MÉTODOS. A CHAVEDO REUSO DE CÓDIGO. ‣ MÉTODO É UM BLOCO DE CÓDIGO QUE PODE SER CHAMADO REPETIDAS VEZES. ‣ NORMALMENTE CRIADO PARA REALIZAR UMA AÇÃO/VERBO. public class MinhaClasse {
 
 private Integer meuNumero = 5;
 
 public void qualMeuNumero() {
 System.out.println("Meu numero é " + meuNumero);
 }
 
 }
  • 18.
    PARAMETROS DE MÉTODOS ‣MÉTODOS PODEM REALIZAR AÇÕES DE ACORDO COM PARÂMETROS PASSADOS NA CAMADA. ‣ CADA CHAMADA AGIRÁ DIFERENTE, DE ACORDO COM O PARÂMETRO PASSADO. public class MinhaClasse {
 
 public void qualMeuNumero(Integer meuNumero) {
 System.out.println("Meu numero é " + meuNumero);
 }
 
 }
  • 19.
    RETORNO DE MÉTODO. ‣MÉTODOS PODEM RETORNAR UM VALOR PARA O SEU INVOCADOR. ‣ UM MÉTODO PODE CALCULAR UM VALOR DE ACORDO COM O PARÂMETRO PASSADO E RETORNAR ESSE VALOR. public class MinhaClasse {
 
 public Integer meuNumeroAoQuadrado(Integer meuNumero) {
 return meuNumero * meuNumero;
 }
 
 }
  • 20.
  • 21.
  • 22.
    TAVA NO FLUXO ‣CONTROLE DE FLUXO DE CÓDIGO É O PRINCIPAL CONCEITO DE QUALQUER LINGUAGEM DE PROGRAMAÇÃO. ‣ NEM TODAS AS LINHAS DE CÓDIGO DEVEM SER EXECUTADAS. IF E ELSE RESOLVEM ESSE PROBLEMA. ‣ IF E ELSE PRECISAM DE UM BOOLEAN PARA FUNCIONAR.
  • 24.
    IF E ELSE.É OU NÃO É. ‣ OS COMPARADORES: >, <, >=, <=, == E != GERAL BOOLEANS QUE PODEM SER USADOS EM IF/ELSE. public class MinhaClasse {
 
 public boolean numeroENegativo(Integer meuNumero) {
 if (meuNumero < 0) {
 return true;
 } else {
 return false;
 }
 }
 
 }
  • 25.
  • 26.
  • 27.
    FOR E WHILE.REPETIÇÃO É VIDA. ‣ LAÇOS DE REPETIÇÃO IRÃO EXECUTAR CONTINUAMENTE ATÉ QUE UMA CONDIÇÃO SEJA ATENDIDA. ‣ É EXTREMAMENTE USADO PARA ITERAÇÃO COM LISTAS.
  • 29.
    JAVA TEM CENTENASDE TIPOS DE LISTAS. ‣ ARRAY, ABSTRACTCOLLECTION, ABSTRACTLIST, ABSTRACTQUEUE, ABSTRACTSEQUENTIALLIST, ABSTRACTSET, ARRAYBLOCKINGQUEUE, ARRAYDEQUE, ARRAYLIST, ATTRIBUTELIST, BEANCONTEXTSERVICESSUPPORT, BEANCONTEXTSUPPORT, CONCURRENTLINKEDDEQUE, CONCURRENTLINKEDQUEUE, CONCURRENTSKIPLISTSET, COPYONWRITEARRAYLIST, COPYONWRITEARRAYSET, DELAYQUEUE, ENUMSET, HASHSET, JOBSTATEREASONS, LINKEDBLOCKINGDEQUE, LINKEDBLOCKINGQUEUE, LINKEDHASHSET, LINKEDLIST, LINKEDTRANSFERQUEUE, PRIORITYBLOCKINGQUEUE, PRIORITYQUEUE, ROLELIST, ROLEUNRESOLVEDLIST, STACK, SYNCHRONOUSQUEUE, TREESET, VECTOR.
  • 30.
    TIME IS MONEY ‣COMO TEMOS POUCO TEMPO. VAMOS NOS CONCENTRAR APENAS NOS ARRAYS. ‣ PODEMOS CRIAR UM ARRAY DE QUALQUER TIPO COM ESSAS SINTAXES. public static void main(String[] args) {
 Integer[] meusNumeros = new Integer[8];
 } public static void main(String[] args) {
 Integer[] meusNumeros = {2, 4, 5, 7, 1, 9};
 }
  • 31.
  • 32.
  • 33.
    VOLTANDO AO WHILE ‣UM LAÇO DE WHILE IRA EXECUTAR ATÉ QUE SUA CONDIÇÃO SEJA ATENDIDA. public static void main(String[] args) {
 Integer meuNumero = 0;
 
 while(meuNumero < 5) {
 System.out.println(meuNumero);
 meuNumero = meuNumero + 1;
 }
 }
  • 34.
    VOLTANDO AO FOR ‣FOR É UMA LAÇO ESPECIALIZADO EM TRABALHAR COM LISTAS. public static void main(String[] args) {
 Integer[] meusNumeros = {1, 3, 5, 7, 9, 20};
 
 for (int x = 0; x < meusNumeros.length; x++) {
 Integer meuNumero = meusNumeros[x];
 System.out.println(meuNumero);
 }
 }
  • 35.
    FOREACH ‣ FOREACH ÉUMA ESPECIALIZAÇÃO DO FOR QUE DEVE SER USADA SEMPRE QUE FOR PRECISO ITERAR SOBRE TODA A LISTA. public static void main(String[] args) {
 Integer[] meusNumeros = {1, 3, 5, 7, 9, 20};
 
 for (Integer meuNumero : meusNumeros) {
 System.out.println(meuNumero);
 }
 }
  • 36.
  • 37.
  • 38.
  • 39.
    UMA INTRODUÇÃO ALÓGICA DE PROGRAMAÇÃO COM JAVA. CLÊRTON LEAL
  • 40.
    UM POUCO SOBREMIM. ▸ Desenvolvedor de software com alguns anos de mercado. ▸ Com o tempo acabei me tornando um especialista em Android. ▸ Sou maluco pro desenvolvimento de software. ▸ E doido por novas linguagens. ▸ Atualmente trabalhando no Instituto atlântico.
  • 41.
  • 42.
    RECAPITULANDO O QUE NÓSVIMOS ATÉ AQUI
  • 43.
  • 45.
  • 46.
    O QUE SIGNIFICACLASSE ‣ CATEGORIA ‣ CASTA ‣ CLASSIFICAÇÃO
  • 47.
    CLASSE. OU VOCÊTEM OU VOCÊ NÃO TEM. ‣ CLASSE É A DESCRIÇÃO DE UM TIPO DE UMA VARIÁVEL. ‣ DESCREVE TODOS OS COMPORTAMENTOS QUE UM OBJETO TERÁ. ‣ É A BASE PARA A ORIENTAÇÃO A OBJETOS.
  • 48.
  • 49.
  • 50.
  • 51.
    OBJETOS TEM CLASSE ‣OBJETOS SÃO A INSTANCIA/CONSTRUÇÃO DE UMA CLASSE. ‣ E TEM TODOS OS COMPORTAMENTOS DESCRITOS NA MESMA. public static void main(String[] args) {
 MinhaClasse minhaClasse = new MinhaClasse();
 }
  • 52.
    VAMOS CRIAR NOSSAPROPRIA CLASSE.
  • 53.
  • 54.
    COMPORTAMENTOS DE CLASSE ‣VARIÁVEIS ‣ MÉTODOS
  • 55.
  • 56.
  • 57.
    PRIVADO OU PUBLICO.MUDANDO O ACESSO. ‣ VARIÁVEIS E MÉTODOS DE CLASSE PODEM TER UM MODIFICADOR DE ACESSO. ‣ PUBLIC SIGNIFICA QUE QUALQUER UM PODE ACESSAR A VARIÁVEL A PARTIR DO OBJETO. ‣ PRIVATE INDICA QUE NINGUÉM ALÉM DO PRÓPRIO OBJETO PODE TER ACESSO A VARIÁVEL.
  • 58.
    SEGUINDO O PADRÃOJAVA. FAZER O QUE….. ‣ O PADRÃO JAVA DEFINE QUE NUNCA DEVEMOS TER UMA VARIÁVEL PUBLIC EM UMA CLASSE. ‣ TODAS AS VARIÁVEIS DEVEM SER PRIVATE. public class MinhaClasse {
 
 public String naoPode = "Não faça isso jovem";
 private String pode = "Faça isso jovem";
 
 }
  • 60.
    public static voidmain(String[] args) {
 
 MinhaClasse minhaClasse = new MinhaClasse();
 System.out.println(minhaClasse.pode);
 //Isso não compila pois a variável pode tem o modificador private
 
 } ‣ O PADRÃO JAVA EXIGE QUE AS VARIÁVEIS SEJAM ACESSADAS POR MÉTODOS DE GET E SET. ‣ O PADRÃO GET E SET ESTÃO PRESENTES EM TODAS AS APIS JAVA.
  • 61.
    GET E SET ‣ADEQUANDO NOSSO CÓDIGO AO PADRÃO… public class MinhaClasse {
 private String pode = "Faça isso jovem";
 
 public String getPode() {
 return pode;
 }
 
 public void setPode(String pode) {
 this.pode = pode;
 }
 } public static void main(String[] args) {
 MinhaClasse minhaClasse = new MinhaClasse();
 System.out.println(minhaClasse.getPode());
 }
  • 62.
  • 63.
  • 64.
    EXCEPTIONS. ERROS SÃOSEMPRE ESPERADOS NO MUNDO JAVA. ‣ DURANTE A EXECUÇÃO DE UM MÉTODO, UM ERRO PODE ACONTECER. ‣ DEVEMOS SER SEMPRE CAPAZES DE TRATAR ESSES ERROS. ‣ EM JAVA MÉTODOS PODEM EXPLICITAMENTE INFORMAR QUE PODEM LANÇAR UMA EXCEÇÃO.
  • 65.
  • 66.
    EXCEPTIONS. ‣ DECLARAR UMAEXCEÇÃO SIGNIFICA INFORMAR QUE UM MÉTODO PODE CAUSAR UM ERRO E EXIGIR QUE ESSE ERRO SEJA EXPLICITAMENTE TRATADO. public void deuRuim(Integer number) throws Exception {
 if (number == 5) {
 System.out.println("Sucesso!!!!!");
 } else {
 throw new Exception("Erro na execução do método");
 }
 }
  • 67.
    EXCEPTIONS. ‣ TODOS QUEEVOCAREM O MÉTODO PRECISAM TRATAR A EXCEÇÃO. public static void main(String[] args) {
 MinhaClasse minhaClasse = new MinhaClasse();
 minhaClasse.deuRuim(4);
 } ‣ O CÓDIGO ACIMA NÃO COMPILA. OCORRE UM ERRO DE COMPILAÇÃO DEVIDO A EXISTÊNCIA DE UMA EXCEÇÃO NÃO TRATADA.
  • 68.
    TRY CATCH. TENTAEXECUTAR PARA MIM. ‣ PARA COMPILAR O CÓDIGO É NECESSÁRIO TRATAR A EXCEÇÃO. public static void main(String[] args) {
 MinhaClasse minhaClasse = new MinhaClasse();
 try {
 minhaClasse.deuRuim(4);
 } catch (Exception e) {
 System.out.println(e.getMessage());
 }
 } ‣ CASO O MÉTODO JOGUE UMA EXCEÇÃO, O BLOCO CATCH SERÁ CHAMADO.
  • 69.
  • 70.
  • 71.
    BIBLIOTECAS DE TERCEIROS ‣SÃO CÓDIGOS FEITOS POR OUTRAS PESSOAS E DISPONIBILIZADOS PARA USO LIVRE OU NÃO. ‣ NORMALMENTE CHAMADOS DE FRAMEWORKS. ‣ TEM O INTUITO DE FACILITAR/POSSIBILITAR A EXECUÇÃO DE TAREFAS COMPLEXAS.
  • 72.
    TEXTO ‣ SELENIUM ‣ JUNIT ‣JASMINE ‣ ESPRESSO ‣ CALABASH ‣ PROTRACTOR ‣ CUCUMBER
  • 73.
    NO FINAL TUDOÉ CÓDIGO
  • 74.
  • 75.
    TEXTO DESAFIO ▸ Quero acessaruma pagina da internet. ▸ Vamos fazer uma requisição HTTP a um site publico. ▸ Vamos exibir o conteúdo textual desse site.
  • 76.
    É UMA BOAHORA PARA USAR UM FRAMEWORK.
  • 77.
  • 78.
    TEXTO ‣ COM AADIÇÃO DESSA BIBLIOTECA TEMOS ACESSO A NOVAS CLASSES E MÉTODOS. ‣ E PODEMOS CRIAR UM MÉTODO EM NOSSA CLASSE QUE FAZ REQUISIÇÕES A INTERNET. public class MinhaClasse {
 
 public String request(String url) throws IOException {
 OkHttpClient okHttpClient = new OkHttpClient();
 Request request = new Request.Builder().url(url).build();
 Response response = okHttpClient.newCall(request).execute();
 return response.body().string();
 }
 
 }
  • 79.
    TEXTO E PODEMOS CHAMARESSE MÉTODO EM NOSSA CLASSE MAIN. public static void main(String[] args) {
 try {
 MinhaClasse minhaClasse = new MinhaClasse();
 String resultado = minhaClasse.request("http://square.github.io/okhttp/");
 System.out.println(resultado);
 } catch (IOException e) {
 System.out.println(e.getMessage());
 }
 }
  • 80.
  • 81.