SlideShare uma empresa Scribd logo
1 de 81
Baixar para ler offline
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.

Mais conteúdo relacionado

Mais procurados

C# 6.0 - Novos Recursos (Agosto/2015)
C# 6.0 - Novos Recursos (Agosto/2015)C# 6.0 - Novos Recursos (Agosto/2015)
C# 6.0 - Novos Recursos (Agosto/2015)Renato Groff
 
Construindo aplicações CLI com Symfony Console
Construindo aplicações CLI com Symfony ConsoleConstruindo aplicações CLI com Symfony Console
Construindo aplicações CLI com Symfony ConsoleBruno Ricardo Siqueira
 
Java orientação a objetos (variaveis de instancia e metodos)
Java   orientação a objetos (variaveis de instancia e metodos)Java   orientação a objetos (variaveis de instancia e metodos)
Java orientação a objetos (variaveis de instancia e metodos)Armando Daniel
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScriptBruno Catão
 
Testes unitários como ferramentas de design de código
Testes unitários como ferramentas de design de códigoTestes unitários como ferramentas de design de código
Testes unitários como ferramentas de design de códigoPaula Grangeiro
 
Desenvolvimento em .Net - Excepções
Desenvolvimento em .Net - ExcepçõesDesenvolvimento em .Net - Excepções
Desenvolvimento em .Net - ExcepçõesVitor Silva
 
Livro Código Limpo: Tratamento de Erros - Cap 7
Livro Código Limpo: Tratamento de Erros - Cap 7Livro Código Limpo: Tratamento de Erros - Cap 7
Livro Código Limpo: Tratamento de Erros - Cap 7Inael Rodrigues
 
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...Rogério Moraes de Carvalho
 
Javascript - boas práticas
Javascript - boas práticasJavascript - boas práticas
Javascript - boas práticasFrancke Peixoto
 
Curso Java #01 - Introdução
Curso Java #01 - IntroduçãoCurso Java #01 - Introdução
Curso Java #01 - IntroduçãoRenato Sousa
 
Programacao orientada-a-objetos-java
Programacao orientada-a-objetos-javaProgramacao orientada-a-objetos-java
Programacao orientada-a-objetos-javaRenato Sousa
 
Testes unitários como ferramentas de design de código
Testes unitários como ferramentas de design de códigoTestes unitários como ferramentas de design de código
Testes unitários como ferramentas de design de códigoPaula Grangeiro
 
IAsyncResult Pattern ou Asynchronous Programming Model (APM)
IAsyncResult Pattern ou Asynchronous Programming Model (APM)IAsyncResult Pattern ou Asynchronous Programming Model (APM)
IAsyncResult Pattern ou Asynchronous Programming Model (APM)Rogério Moraes de Carvalho
 
Flávio Almeida MEAN Stack "to be or not to be mean"
Flávio Almeida MEAN Stack "to be or not to be mean"Flávio Almeida MEAN Stack "to be or not to be mean"
Flávio Almeida MEAN Stack "to be or not to be mean"flaviohalmeida
 
Java básico - Módulo 05 - Estruturas de Repetição
Java  básico - Módulo 05 - Estruturas de RepetiçãoJava  básico - Módulo 05 - Estruturas de Repetição
Java básico - Módulo 05 - Estruturas de RepetiçãoProfessor Samuel Ribeiro
 

Mais procurados (20)

Code Smells
Code SmellsCode Smells
Code Smells
 
C# 6.0 - Novos Recursos (Agosto/2015)
C# 6.0 - Novos Recursos (Agosto/2015)C# 6.0 - Novos Recursos (Agosto/2015)
C# 6.0 - Novos Recursos (Agosto/2015)
 
Construindo aplicações CLI com Symfony Console
Construindo aplicações CLI com Symfony ConsoleConstruindo aplicações CLI com Symfony Console
Construindo aplicações CLI com Symfony Console
 
Switchcase
SwitchcaseSwitchcase
Switchcase
 
Java orientação a objetos (variaveis de instancia e metodos)
Java   orientação a objetos (variaveis de instancia e metodos)Java   orientação a objetos (variaveis de instancia e metodos)
Java orientação a objetos (variaveis de instancia e metodos)
 
Shell script
Shell script Shell script
Shell script
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScript
 
Testes unitários como ferramentas de design de código
Testes unitários como ferramentas de design de códigoTestes unitários como ferramentas de design de código
Testes unitários como ferramentas de design de código
 
Desenvolvimento em .Net - Excepções
Desenvolvimento em .Net - ExcepçõesDesenvolvimento em .Net - Excepções
Desenvolvimento em .Net - Excepções
 
Livro Código Limpo: Tratamento de Erros - Cap 7
Livro Código Limpo: Tratamento de Erros - Cap 7Livro Código Limpo: Tratamento de Erros - Cap 7
Livro Código Limpo: Tratamento de Erros - Cap 7
 
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...
 
Javascript - boas práticas
Javascript - boas práticasJavascript - boas práticas
Javascript - boas práticas
 
Curso Java #01 - Introdução
Curso Java #01 - IntroduçãoCurso Java #01 - Introdução
Curso Java #01 - Introdução
 
Programacao orientada-a-objetos-java
Programacao orientada-a-objetos-javaProgramacao orientada-a-objetos-java
Programacao orientada-a-objetos-java
 
02 controle de fluxo
02   controle de fluxo02   controle de fluxo
02 controle de fluxo
 
Testes unitários como ferramentas de design de código
Testes unitários como ferramentas de design de códigoTestes unitários como ferramentas de design de código
Testes unitários como ferramentas de design de código
 
IAsyncResult Pattern ou Asynchronous Programming Model (APM)
IAsyncResult Pattern ou Asynchronous Programming Model (APM)IAsyncResult Pattern ou Asynchronous Programming Model (APM)
IAsyncResult Pattern ou Asynchronous Programming Model (APM)
 
Flávio Almeida MEAN Stack "to be or not to be mean"
Flávio Almeida MEAN Stack "to be or not to be mean"Flávio Almeida MEAN Stack "to be or not to be mean"
Flávio Almeida MEAN Stack "to be or not to be mean"
 
Java básico - Módulo 05 - Estruturas de Repetição
Java  básico - Módulo 05 - Estruturas de RepetiçãoJava  básico - Módulo 05 - Estruturas de Repetição
Java básico - Módulo 05 - Estruturas de Repetição
 
Curso javascript básico
Curso javascript básicoCurso javascript básico
Curso javascript básico
 

Destaque

M2 k03 eyeos
M2 k03 eyeosM2 k03 eyeos
M2 k03 eyeosm2k03
 
29.08.2015 田舎時間(中山誠基)
29.08.2015 田舎時間(中山誠基)29.08.2015 田舎時間(中山誠基)
29.08.2015 田舎時間(中山誠基)unuiasouik
 
Meet Your Ideal Customer
Meet Your Ideal CustomerMeet Your Ideal Customer
Meet Your Ideal CustomerClaravon Group
 
Automatic Extraction of Science and Medicine from the scholarly literature
Automatic Extraction of Science and Medicine from the scholarly literatureAutomatic Extraction of Science and Medicine from the scholarly literature
Automatic Extraction of Science and Medicine from the scholarly literatureTheContentMine
 
Sociology and development report neo evolutionary
Sociology and development report neo   evolutionarySociology and development report neo   evolutionary
Sociology and development report neo evolutionaryClenette Escoto
 
Débat du 12 janvier 2017_Primaires citoyennes_ELABE_1
Débat du 12 janvier 2017_Primaires citoyennes_ELABE_1Débat du 12 janvier 2017_Primaires citoyennes_ELABE_1
Débat du 12 janvier 2017_Primaires citoyennes_ELABE_1contact Elabe
 
Les français et les primaires citoyennes - vague 2
Les français et les primaires citoyennes - vague 2Les français et les primaires citoyennes - vague 2
Les français et les primaires citoyennes - vague 2contact Elabe
 
RxJava - Programação assíncrona para Android.
RxJava - Programação assíncrona para Android.RxJava - Programação assíncrona para Android.
RxJava - Programação assíncrona para Android.Clerton Leal
 

Destaque (12)

Webcam
WebcamWebcam
Webcam
 
TechAli
TechAliTechAli
TechAli
 
M2 k03 eyeos
M2 k03 eyeosM2 k03 eyeos
M2 k03 eyeos
 
29.08.2015 田舎時間(中山誠基)
29.08.2015 田舎時間(中山誠基)29.08.2015 田舎時間(中山誠基)
29.08.2015 田舎時間(中山誠基)
 
Meet Your Ideal Customer
Meet Your Ideal CustomerMeet Your Ideal Customer
Meet Your Ideal Customer
 
Automatic Extraction of Science and Medicine from the scholarly literature
Automatic Extraction of Science and Medicine from the scholarly literatureAutomatic Extraction of Science and Medicine from the scholarly literature
Automatic Extraction of Science and Medicine from the scholarly literature
 
Walmart Communication Plan
Walmart Communication PlanWalmart Communication Plan
Walmart Communication Plan
 
Sociology and development report neo evolutionary
Sociology and development report neo   evolutionarySociology and development report neo   evolutionary
Sociology and development report neo evolutionary
 
Débat du 12 janvier 2017_Primaires citoyennes_ELABE_1
Débat du 12 janvier 2017_Primaires citoyennes_ELABE_1Débat du 12 janvier 2017_Primaires citoyennes_ELABE_1
Débat du 12 janvier 2017_Primaires citoyennes_ELABE_1
 
Les français et les primaires citoyennes - vague 2
Les français et les primaires citoyennes - vague 2Les français et les primaires citoyennes - vague 2
Les français et les primaires citoyennes - vague 2
 
Webcam
WebcamWebcam
Webcam
 
RxJava - Programação assíncrona para Android.
RxJava - Programação assíncrona para Android.RxJava - Programação assíncrona para Android.
RxJava - Programação assíncrona para Android.
 

Semelhante a Introdução a programação I

Curso Java #02 - Variáveis, Tipos e Estruturas de Controle
Curso Java #02 - Variáveis, Tipos e Estruturas de ControleCurso Java #02 - Variáveis, Tipos e Estruturas de Controle
Curso Java #02 - Variáveis, Tipos e Estruturas de ControleRenato Sousa
 
Java Craftsmanship: Lessons Learned on How to Produce Truly Beautiful Java Code
Java Craftsmanship: Lessons Learned on How to Produce Truly Beautiful Java CodeJava Craftsmanship: Lessons Learned on How to Produce Truly Beautiful Java Code
Java Craftsmanship: Lessons Learned on How to Produce Truly Beautiful Java CodeEdson Yanaga
 
Refatoração e Boas Práticas no Desenvolvimento de Software com a Linguagem Ja...
Refatoração e Boas Práticas no Desenvolvimento de Software com a Linguagem Ja...Refatoração e Boas Práticas no Desenvolvimento de Software com a Linguagem Ja...
Refatoração e Boas Práticas no Desenvolvimento de Software com a Linguagem Ja...Tchelinux
 
DOJO - TDD com C++
DOJO - TDD com C++DOJO - TDD com C++
DOJO - TDD com C++thiagodp
 
TDD em C++
TDD em C++TDD em C++
TDD em C++thiagodp
 
TDD em django sem desculpas versao fisl
TDD em django sem desculpas versao fislTDD em django sem desculpas versao fisl
TDD em django sem desculpas versao fislAdriano Petrich
 
Test-Driven Development e sua influência no design
Test-Driven Development e sua influência no designTest-Driven Development e sua influência no design
Test-Driven Development e sua influência no designMaurício Aniche
 
Programação Desktop: Revisão Core Java
Programação Desktop: Revisão Core JavaProgramação Desktop: Revisão Core Java
Programação Desktop: Revisão Core JavaElaine Cecília Gatto
 
Java introdução ao java
Java   introdução ao javaJava   introdução ao java
Java introdução ao javaArmando Daniel
 
Código legado - PHP Conference Brasil - 2014
Código legado - PHP Conference Brasil - 2014Código legado - PHP Conference Brasil - 2014
Código legado - PHP Conference Brasil - 2014Michael Castillo Granados
 
Domain Driven Design (DDD) - DevIsland, BH
Domain Driven Design (DDD) - DevIsland, BHDomain Driven Design (DDD) - DevIsland, BH
Domain Driven Design (DDD) - DevIsland, BHGiovanni Bassi
 
Como trabalhar com código legado
Como trabalhar com código legadoComo trabalhar com código legado
Como trabalhar com código legadoSidney Filho
 
Artesanato de software
Artesanato de softwareArtesanato de software
Artesanato de softwareEdson Yanaga
 

Semelhante a Introdução a programação I (20)

Curso Java #02 - Variáveis, Tipos e Estruturas de Controle
Curso Java #02 - Variáveis, Tipos e Estruturas de ControleCurso Java #02 - Variáveis, Tipos e Estruturas de Controle
Curso Java #02 - Variáveis, Tipos e Estruturas de Controle
 
Java Craftsmanship: Lessons Learned on How to Produce Truly Beautiful Java Code
Java Craftsmanship: Lessons Learned on How to Produce Truly Beautiful Java CodeJava Craftsmanship: Lessons Learned on How to Produce Truly Beautiful Java Code
Java Craftsmanship: Lessons Learned on How to Produce Truly Beautiful Java Code
 
Refatoração e Boas Práticas no Desenvolvimento de Software com a Linguagem Ja...
Refatoração e Boas Práticas no Desenvolvimento de Software com a Linguagem Ja...Refatoração e Boas Práticas no Desenvolvimento de Software com a Linguagem Ja...
Refatoração e Boas Práticas no Desenvolvimento de Software com a Linguagem Ja...
 
DOJO - TDD com C++
DOJO - TDD com C++DOJO - TDD com C++
DOJO - TDD com C++
 
TDD em C++
TDD em C++TDD em C++
TDD em C++
 
TDD em django sem desculpas versao fisl
TDD em django sem desculpas versao fislTDD em django sem desculpas versao fisl
TDD em django sem desculpas versao fisl
 
Test-Driven Development e sua influência no design
Test-Driven Development e sua influência no designTest-Driven Development e sua influência no design
Test-Driven Development e sua influência no design
 
Programação Desktop: Revisão Core Java
Programação Desktop: Revisão Core JavaProgramação Desktop: Revisão Core Java
Programação Desktop: Revisão Core Java
 
Java introdução ao java
Java   introdução ao javaJava   introdução ao java
Java introdução ao java
 
Java - Primeiros passos
Java - Primeiros passosJava - Primeiros passos
Java - Primeiros passos
 
Código legado - PHP Conference Brasil - 2014
Código legado - PHP Conference Brasil - 2014Código legado - PHP Conference Brasil - 2014
Código legado - PHP Conference Brasil - 2014
 
Solid
SolidSolid
Solid
 
Aula3
Aula3Aula3
Aula3
 
Ganhando tempo com casos de testes
Ganhando tempo com casos de testesGanhando tempo com casos de testes
Ganhando tempo com casos de testes
 
Aula5
Aula5Aula5
Aula5
 
PowerShell
PowerShellPowerShell
PowerShell
 
Domain Driven Design (DDD) - DevIsland, BH
Domain Driven Design (DDD) - DevIsland, BHDomain Driven Design (DDD) - DevIsland, BH
Domain Driven Design (DDD) - DevIsland, BH
 
Introdução ao Java 5
Introdução ao Java 5Introdução ao Java 5
Introdução ao Java 5
 
Como trabalhar com código legado
Como trabalhar com código legadoComo trabalhar com código legado
Como trabalhar com código legado
 
Artesanato de software
Artesanato de softwareArtesanato de software
Artesanato de software
 

Introdução a programação I

  • 1. UMA INTRODUÇÃO A LÓGICA DE PROGRAMAÇÃO COM JAVA. CLÊRTON LEAL
  • 2. 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.
  • 4. 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.
  • 8. 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.
  • 10. 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
 } ‣
 }
  • 12. 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.
  • 13. 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.
  • 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;
 }
  • 17. 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);
 }
 
 }
  • 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;
 }
 
 }
  • 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.
  • 23.
  • 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;
 }
 }
 
 }
  • 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.
  • 28.
  • 29. 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.
  • 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};
 }
  • 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);
 }
 }
  • 39. UMA INTRODUÇÃO A LÓGICA DE PROGRAMAÇÃO COM JAVA. CLÊRTON LEAL
  • 40. 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.
  • 42. RECAPITULANDO O QUE NÓS VIMOS ATÉ AQUI
  • 43. TIPOS
  • 44.
  • 46. O QUE SIGNIFICA CLASSE ‣ 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.
  • 49. TEXTO
  • 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 NOSSA PROPRIA CLASSE.
  • 53. TEXTO
  • 54. COMPORTAMENTOS DE CLASSE ‣ VARIÁVEIS ‣ MÉTODOS
  • 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Ã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";
 
 }
  • 59.
  • 60. 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.
  • 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());
 }
  • 64. 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.
  • 65. OI?
  • 66. 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");
 }
 }
  • 67. 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.
  • 68. 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.
  • 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
  • 75. 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.
  • 76. É UMA BOA HORA PARA USAR UM FRAMEWORK.
  • 78. 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();
 }
 
 }
  • 79. 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());
 }
 }