81
UMA INTRODUÇÃO A LÓGICA DE PROGRAMAÇÃO COM JAVA. CLÊRTON LEAL

Introdução a programação I

Embed Size (px)

Citation preview

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

[email protected]

@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

[email protected]

@CLERTONLEAL

Precisando falar comigo.