Java básico e Orientação a Objetos
ApresentaçãoFrederico Maia ArantesGraduando em Tecnologia de Redes de Computadores2 anos de estágio em desenvolvimento de sistemas IBM, Microsoft .Net e Java.Quase a um ano focado em desenvolvimento JavaAtua como Analista Desenvolvedor Java Pleno Membro do grupo Gojava.
O que é Java?Desenvolvido e mantido pela Sun Oracle.Java é uma linguagem de programação orientada a objetos. Foi criada na década de 90  por uma equipe liderada por James Gosling (Pai do Java).A idéia inicial era criar um interpretador para pequenos dispositivos, facilitando a reescrita de software para aparelhos eletrônicos, como vídeo cassete, televisão e aparelhos de TV a cabo.Era muito cedo pra isso e ninguém acreditou em seu potencial.
Mais sobre o início...Em 1992 com o início da Web, a Sun percebeu um mercado em potencial. Criaram então os applets (pequenos aplicativos que rodam nos browsers não apenas renderizando html) e então lançaram o Java 1.0 !Hoje em dia os applets não são o foco da Sun Oracle e são muito pouco utilizados. 	Temos a promessa do JavaFX, mas esse não é o assunto de hoje.
O que precisamos para usar Java?Para executar aplicações Java, precisamos do JRE (Java Runtime Enviroment).	http://bit.ly/cKoUNVPara desenvolver aplicações, o JDK (Java Development Kit).	 http://bit.ly/a1w7OHEscolher uma IDE para desenvolvimento, sugerimos eclipse ou NetBeans.	http://www.eclipse.org/downloads/ ou http://netbeans.org/downloads/
Clássico Hello WorldUm simples programa que apenas escreve na tela do computador “Hello World”. O método main é onde um programa Java inicia.public class Hello {			public static void main(String args[]){			//comentários			System.out.println(“Hello World”);		}	}
VariáveisUma variável é utilizada para armazenar um valor que depois poderá ser manipulado.Devemos informar o tipo de valor, e o nome da variável, que deve ser único. Pode ser feita em qualquer linha de um bloco.int numero = 10;	String nome = “Frederico”;Alguns tipos: int, double, float, long, boolean, char, String.
Capturando dados do TecladoExemplo de captura de dados do teclado e armazenando em variáveis. 	String nome = “”;	int idade = 0;	Scanner sc = new Scanner(System.in);	System.out.println(“Informe seu nome:”);	nome = sc.nextLine();	System.out.println(“Informe sua idade:”);	idade = sc.nextInt();
Operadores - AritméticosOperadores são usados para manipular os valores das variáveis.Para realizar operações matemáticas podemos aplicar os operadores + (soma), - (subtração),       * (multiplicação), / (divisão) e % (módulo).int num1 = 5 + 3;	int num2 = 4 – 2;	int num3 = 4*5/2;	int num4 = 20%2;
Operadores –Igualdade e RelacionaisOperadores de igualde são usados para verificar se uma variável tem valor igual ou diferente de outra.  Operadores relacionais são usados para comparar valores.Sempre retornam true ou false.Operadores: == (igual), != (diferente),  > (maior),    < (menor), >= (maior ou igual), <= (menor ou igual).boolean teste1 = 5 == 3; // retorna false	boolean teste3 = 5 > 3;  // retorna true
Operadores – LógicosPodem ser usados para combinar comparações.  Retornam true ou false.Operadores: && ( e ), || (ou).int num1 = 10; 	boolean b1 = num1>1 && num1<20; //retorna true	boolean b2 = num1!=0 || num1>10;  // retorna true
If (se) e Else (senão)O comando if permite testar se um valor booleano é verdadeiro ou falso, caso seja verdadeiro, o bloco dentro do if é executado.Se for falso é executado o bloco dentro do else.if(media >= 7){ //se media maior ou igual a 7		System.out.println(“Aprovado!”);	} else{ 		//senão		System.out.println(“Reprovado!”);	}
While (enquanto)Usado quando precisamos repetir o código várias vezes dependendo se uma condição é verdadeira ou falsa, e enquanto  for, executa um laço.Vamos imprimir uma mensagem 10 vezes.int i = 0;	while(i < 10){ //enquanto 1 for menor que 10		System.out.println(i+“ª vez!”);		i++;	//incrementa + 1	}
For (para)Usado nas mesmas condições do while verificando uma condição de verdadeiro ou falso.A diferença é que recebe três argumentos. É um while “melhorado”.	//inicia a variável; verifica condição;incrementafor (int i=0;i<10;i++){ 		System.out.println(i+“ª vez!”);	}
Orientação a ObjetosFoi criada para tentar aproximar o mundo real do mundo virtual. A idéia fundamental é tentar simular o mundo real dentro do computador utilizando Objetos afinal, nosso mundo é composto de objetos.
Pensando em ObjetosPensar em termos de objetos é muito parecido a como faríamos na vida real.Por exemplo, vamos pensar em um carro...
Pensando em um carro...
Pensando em um carro...Quais as características de um carro? 	Quais as funcionalidades?	Em um esquema orientação a Objetos o carro seria o objeto, as propriedades seriam as características e os métodos seriam as funcionalidades, as ações.
Java e Orientação a ObjetosEm Java todos os objetos são manipulados através de uma referência (variável) e têm: estado (seus atributos), comportamento (seus métodos), identidade (a variável que contém sua referência).Valores unidimensionais não são objetos: números, booleanos, caracteres têm apenas identidade (nome da variável) e estado (valor da variável).
ClasseÉ uma abstração de um tipo de objeto, uma representação que definem as ações e características que um objeto pode ter. Onde as ações são os métodos e as características os atributos (variáveis).
Exemplo da classe Carro.HerançaUma classe pode ter todas as características 	de outra e apenas adicionar algumas que são 	específicas dela.Exemplo: Pessoa e Aluno, onde aluno tem 	todas as características e comportamentos de 	uma pessoa mas tem informações específicas 	como matricula, turma, notas, etc.
PolimorfismoSobrescrita	Substituir um método da super­classe.Sobrecarga	Criar uma variação de um método, alterando 	sua assinatura (quantidade, tipo de parâmetros e exceções disparadas)
EncapsulamentoSimplifica o objeto expondo apenas a sua interface essencial. Também para impedir o acesso direto ao atributo de um objeto, disponibilizando externamente apenas os métodos que alteram estes estados. Exemplo: fabricação das portas do carro, funcionamento do motor de um carro.
Encapsulamento	Métodos e atributos que não devem ser usados externamente podem ter seu nível de acesso controlado através de modificadores:private: apenas acesso dentro da classepackage-private (default): acesso dentro do pacoteprotected: acesso em subclassespublic: acesso global
InterfaceÉ um contrato entre a classe e o mundo externo. Quando uma classe implementa uma interface, ela está comprometida a fornecer o comportamento publicado pela interface.
Orientação a ObjetosEm orientação a objetos, implementamos um conjunto de classes que definem os objetos	presentes no software. Cada classe determina o 	comportamento (definido nos métodos) e estados 	possíveis (atributos) de seus objetos, assim como o relacionamento com outros objetos.
Vantagens da POODivisão do código mais lógica e melhor encapsulada do que a empregada nos sistemas não orientados a objetos. Manutenção e extensão do código mais fácil e com menos riscos de inserção de bugs. Também é mais fácil reaproveitar o código. UML, divisão em pacotes, divisão do trabalho.
O que preciso saber para ser um desenvolvedor Júnior?Java Básico e Orientação a ObjetosJava Web (JSP e Servlets)Frameworks (Java Server Faces, Hibernate) Outros frameworks importantes: Spring, (Struts1 + Webwork) Struts 2, EJB, JPA, JasperReport, iReport...
Basicamente é isso...Variáveis; operadores lógicos, aritméticos, relacionais; expresões; controle de fluxo; if; else; elseif; while; for; do while; foreach; identificadores; tratamento de exceção; arrays; collections; generics; enumeradores; classes; herança; polimorfismo, sobrecarga, sobreescrita; interface; encapsulamento; banco de dados; JDBC; SQL; queries; transações; swing; boxing; casting; jsp; servlets; html; css; javascript; servidor de aplicação; tomcat; JVM; servidor web; JSTL; taglibs; page; request; session; application; DAO; MVC; JSF; ORM; Hibernate; Richfaces; JPA; Richfaces; iReport; JasperReport; IDE...
Certificações JavaPrograma de certificações Java. Já mudaram de Sun para Oracle.
SCJA OCJASun Oracle Certified Java Associate Voltada mais para quem atua como "Gerente de Projetos de Software". Este perfil tem um entendimento geral sobre OOP, as plataformas Java, tecnologias Java e UML sem se ater a detalhes de implementação deixado para os especialistas.Valor pequeno para desenvolvedores.Certificação opcional.
SCJP OCJPSun Oracle Certified Java ProgrammerProgramador profissional da linguagem Java.Grande valor de mercado para desenvolvedores.Obrigatória para as outras seguintes.
SCJDP OCJDSun Oracle Certified Java Developer. Especialista em desenvolvimento de aplicativos Java para desktop.Pouco valor de mercado principalmente no Brasil.
SCWCD OCWCDSun Oracle Certified Web ComponentDeveloper.Especialista em desenvolvimento Java de aplicativos e componentes web. (JSP e Servlets)Grande valor de mercado.
SCBCD OCBCDSun Oracle Certified Business ComponentDeveloperEspecialista em desenvolvimento de componentes/camada de aplicação de negócio distribuídos. (EJB)
SCDJWS OCDJWSSun Oracle CertifiedDeveloper For Java Web ServicesEspecialista em desenvolvimento de aplicações utilizando web services (paradigma SOA).
SCMAD OCMADSun Oracle CertifiedMobile Application DeveloperEspecialista em desenvolvimento de aplicativos Java para dispositivos móveis.
SCEA OCEASun Oracle CertifiedMobile Application DeveloperEspecífico para o perfil de "Arquiteto de software". Acredito que seja a prova mais difícil composta não apenas detalhes gerais das plataformas Java, mas também por vários conceitos de engenharia de software.A prova possui 3 etapas.
Dicas de EstudoApostilas da Caelum.Projeto JEDI mantido pela comunidade Java e a Sun Oracle.Fórum GUJ (Grupo de Usuários Java).Use a Cabeça Java – Kathy Sierra.Cursos especializados (diminuem bastante a curva de aprendizado).
Dúvidas?Contato 		fredericomaia10@gmail.com  	http://fredericoarantes.blogspot.com@fredmaia

Java e orientação a objetos

  • 1.
    Java básico eOrientação a Objetos
  • 2.
    ApresentaçãoFrederico Maia ArantesGraduandoem Tecnologia de Redes de Computadores2 anos de estágio em desenvolvimento de sistemas IBM, Microsoft .Net e Java.Quase a um ano focado em desenvolvimento JavaAtua como Analista Desenvolvedor Java Pleno Membro do grupo Gojava.
  • 3.
    O que éJava?Desenvolvido e mantido pela Sun Oracle.Java é uma linguagem de programação orientada a objetos. Foi criada na década de 90 por uma equipe liderada por James Gosling (Pai do Java).A idéia inicial era criar um interpretador para pequenos dispositivos, facilitando a reescrita de software para aparelhos eletrônicos, como vídeo cassete, televisão e aparelhos de TV a cabo.Era muito cedo pra isso e ninguém acreditou em seu potencial.
  • 4.
    Mais sobre oinício...Em 1992 com o início da Web, a Sun percebeu um mercado em potencial. Criaram então os applets (pequenos aplicativos que rodam nos browsers não apenas renderizando html) e então lançaram o Java 1.0 !Hoje em dia os applets não são o foco da Sun Oracle e são muito pouco utilizados. Temos a promessa do JavaFX, mas esse não é o assunto de hoje.
  • 5.
    O que precisamospara usar Java?Para executar aplicações Java, precisamos do JRE (Java Runtime Enviroment). http://bit.ly/cKoUNVPara desenvolver aplicações, o JDK (Java Development Kit). http://bit.ly/a1w7OHEscolher uma IDE para desenvolvimento, sugerimos eclipse ou NetBeans. http://www.eclipse.org/downloads/ ou http://netbeans.org/downloads/
  • 6.
    Clássico Hello WorldUmsimples programa que apenas escreve na tela do computador “Hello World”. O método main é onde um programa Java inicia.public class Hello { public static void main(String args[]){ //comentários System.out.println(“Hello World”); } }
  • 7.
    VariáveisUma variável éutilizada para armazenar um valor que depois poderá ser manipulado.Devemos informar o tipo de valor, e o nome da variável, que deve ser único. Pode ser feita em qualquer linha de um bloco.int numero = 10; String nome = “Frederico”;Alguns tipos: int, double, float, long, boolean, char, String.
  • 8.
    Capturando dados doTecladoExemplo de captura de dados do teclado e armazenando em variáveis. String nome = “”; int idade = 0; Scanner sc = new Scanner(System.in); System.out.println(“Informe seu nome:”); nome = sc.nextLine(); System.out.println(“Informe sua idade:”); idade = sc.nextInt();
  • 9.
    Operadores - AritméticosOperadoressão usados para manipular os valores das variáveis.Para realizar operações matemáticas podemos aplicar os operadores + (soma), - (subtração), * (multiplicação), / (divisão) e % (módulo).int num1 = 5 + 3; int num2 = 4 – 2; int num3 = 4*5/2; int num4 = 20%2;
  • 10.
    Operadores –Igualdade eRelacionaisOperadores de igualde são usados para verificar se uma variável tem valor igual ou diferente de outra. Operadores relacionais são usados para comparar valores.Sempre retornam true ou false.Operadores: == (igual), != (diferente), > (maior), < (menor), >= (maior ou igual), <= (menor ou igual).boolean teste1 = 5 == 3; // retorna false boolean teste3 = 5 > 3; // retorna true
  • 11.
    Operadores – LógicosPodemser usados para combinar comparações. Retornam true ou false.Operadores: && ( e ), || (ou).int num1 = 10; boolean b1 = num1>1 && num1<20; //retorna true boolean b2 = num1!=0 || num1>10; // retorna true
  • 12.
    If (se) eElse (senão)O comando if permite testar se um valor booleano é verdadeiro ou falso, caso seja verdadeiro, o bloco dentro do if é executado.Se for falso é executado o bloco dentro do else.if(media >= 7){ //se media maior ou igual a 7 System.out.println(“Aprovado!”); } else{ //senão System.out.println(“Reprovado!”); }
  • 13.
    While (enquanto)Usado quandoprecisamos repetir o código várias vezes dependendo se uma condição é verdadeira ou falsa, e enquanto for, executa um laço.Vamos imprimir uma mensagem 10 vezes.int i = 0; while(i < 10){ //enquanto 1 for menor que 10 System.out.println(i+“ª vez!”); i++; //incrementa + 1 }
  • 14.
    For (para)Usado nasmesmas condições do while verificando uma condição de verdadeiro ou falso.A diferença é que recebe três argumentos. É um while “melhorado”. //inicia a variável; verifica condição;incrementafor (int i=0;i<10;i++){ System.out.println(i+“ª vez!”); }
  • 15.
    Orientação a ObjetosFoicriada para tentar aproximar o mundo real do mundo virtual. A idéia fundamental é tentar simular o mundo real dentro do computador utilizando Objetos afinal, nosso mundo é composto de objetos.
  • 16.
    Pensando em ObjetosPensarem termos de objetos é muito parecido a como faríamos na vida real.Por exemplo, vamos pensar em um carro...
  • 17.
  • 18.
    Pensando em umcarro...Quais as características de um carro? Quais as funcionalidades? Em um esquema orientação a Objetos o carro seria o objeto, as propriedades seriam as características e os métodos seriam as funcionalidades, as ações.
  • 19.
    Java e Orientaçãoa ObjetosEm Java todos os objetos são manipulados através de uma referência (variável) e têm: estado (seus atributos), comportamento (seus métodos), identidade (a variável que contém sua referência).Valores unidimensionais não são objetos: números, booleanos, caracteres têm apenas identidade (nome da variável) e estado (valor da variável).
  • 20.
    ClasseÉ uma abstraçãode um tipo de objeto, uma representação que definem as ações e características que um objeto pode ter. Onde as ações são os métodos e as características os atributos (variáveis).
  • 21.
    Exemplo da classeCarro.HerançaUma classe pode ter todas as características  de outra e apenas adicionar algumas que são  específicas dela.Exemplo: Pessoa e Aluno, onde aluno tem  todas as características e comportamentos de  uma pessoa mas tem informações específicas  como matricula, turma, notas, etc.
  • 22.
  • 23.
    EncapsulamentoSimplifica o objetoexpondo apenas a sua interface essencial. Também para impedir o acesso direto ao atributo de um objeto, disponibilizando externamente apenas os métodos que alteram estes estados. Exemplo: fabricação das portas do carro, funcionamento do motor de um carro.
  • 24.
    Encapsulamento Métodos e atributosque não devem ser usados externamente podem ter seu nível de acesso controlado através de modificadores:private: apenas acesso dentro da classepackage-private (default): acesso dentro do pacoteprotected: acesso em subclassespublic: acesso global
  • 25.
    InterfaceÉ um contratoentre a classe e o mundo externo. Quando uma classe implementa uma interface, ela está comprometida a fornecer o comportamento publicado pela interface.
  • 26.
    Orientação a ObjetosEmorientação a objetos, implementamos um conjunto de classes que definem os objetos presentes no software. Cada classe determina o  comportamento (definido nos métodos) e estados  possíveis (atributos) de seus objetos, assim como o relacionamento com outros objetos.
  • 27.
    Vantagens da POODivisãodo código mais lógica e melhor encapsulada do que a empregada nos sistemas não orientados a objetos. Manutenção e extensão do código mais fácil e com menos riscos de inserção de bugs. Também é mais fácil reaproveitar o código. UML, divisão em pacotes, divisão do trabalho.
  • 28.
    O que precisosaber para ser um desenvolvedor Júnior?Java Básico e Orientação a ObjetosJava Web (JSP e Servlets)Frameworks (Java Server Faces, Hibernate) Outros frameworks importantes: Spring, (Struts1 + Webwork) Struts 2, EJB, JPA, JasperReport, iReport...
  • 29.
    Basicamente é isso...Variáveis;operadores lógicos, aritméticos, relacionais; expresões; controle de fluxo; if; else; elseif; while; for; do while; foreach; identificadores; tratamento de exceção; arrays; collections; generics; enumeradores; classes; herança; polimorfismo, sobrecarga, sobreescrita; interface; encapsulamento; banco de dados; JDBC; SQL; queries; transações; swing; boxing; casting; jsp; servlets; html; css; javascript; servidor de aplicação; tomcat; JVM; servidor web; JSTL; taglibs; page; request; session; application; DAO; MVC; JSF; ORM; Hibernate; Richfaces; JPA; Richfaces; iReport; JasperReport; IDE...
  • 30.
    Certificações JavaPrograma decertificações Java. Já mudaram de Sun para Oracle.
  • 31.
    SCJA OCJASun OracleCertified Java Associate Voltada mais para quem atua como "Gerente de Projetos de Software". Este perfil tem um entendimento geral sobre OOP, as plataformas Java, tecnologias Java e UML sem se ater a detalhes de implementação deixado para os especialistas.Valor pequeno para desenvolvedores.Certificação opcional.
  • 32.
    SCJP OCJPSun OracleCertified Java ProgrammerProgramador profissional da linguagem Java.Grande valor de mercado para desenvolvedores.Obrigatória para as outras seguintes.
  • 33.
    SCJDP OCJDSun OracleCertified Java Developer. Especialista em desenvolvimento de aplicativos Java para desktop.Pouco valor de mercado principalmente no Brasil.
  • 34.
    SCWCD OCWCDSun OracleCertified Web ComponentDeveloper.Especialista em desenvolvimento Java de aplicativos e componentes web. (JSP e Servlets)Grande valor de mercado.
  • 35.
    SCBCD OCBCDSun OracleCertified Business ComponentDeveloperEspecialista em desenvolvimento de componentes/camada de aplicação de negócio distribuídos. (EJB)
  • 36.
    SCDJWS OCDJWSSun OracleCertifiedDeveloper For Java Web ServicesEspecialista em desenvolvimento de aplicações utilizando web services (paradigma SOA).
  • 37.
    SCMAD OCMADSun OracleCertifiedMobile Application DeveloperEspecialista em desenvolvimento de aplicativos Java para dispositivos móveis.
  • 38.
    SCEA OCEASun OracleCertifiedMobile Application DeveloperEspecífico para o perfil de "Arquiteto de software". Acredito que seja a prova mais difícil composta não apenas detalhes gerais das plataformas Java, mas também por vários conceitos de engenharia de software.A prova possui 3 etapas.
  • 39.
    Dicas de EstudoApostilasda Caelum.Projeto JEDI mantido pela comunidade Java e a Sun Oracle.Fórum GUJ (Grupo de Usuários Java).Use a Cabeça Java – Kathy Sierra.Cursos especializados (diminuem bastante a curva de aprendizado).
  • 40.
    Dúvidas?Contato fredericomaia10@gmail.com http://fredericoarantes.blogspot.com@fredmaia