Java Certified Associate                                         Jose Berardo                             www.especializa.c...
Agenda                           Macrotemas do curso:         1.     Introdução às certificações Java         2.     Inicia...
Agenda         2. Iniciando com Java         2.1.    Tecnologia Java         2.2.    Orientação a objetos         2.3.    ...
Em meados dos anos 90, Patrick Naughton, Mike Sheridan e James Gosling             criaram a linguagem Java com foco na en...
Orientação a objetos             OOA - Object Oriented Analysis               Determina a funcionalidade do sistema. O que...
Modelagem de classes               Diagrama UML mais adotado na               prática               Caixas separadas em tr...
Modelagem de classes               Terminologia:                    -: Membros privados                    +: Membros públ...
Princípios OO               Objects:                    Estrutura de dados                    Pré-moldada em uma classe   ...
Princípios OO               Classes:                    Artefato que descreve as características de seus objetos          ...
Princípios OO               Data encapsulation (encapsulamento):                    Consiste em esconder dos usuários da c...
Princípios OO               Inheritance (herança):                    Técnica que permite derivação em classes filhas. Esta...
Princípios OO               Polymorphism (polimorfismo):                    Técnica que permite receber mais de um tipo de ...
Tipos de aplicações Java               Aplicações básicas para o console               package cap1;               public ...
Tipos de aplicações Java               Aplicações de janelas (GUI)               package cap1;               import javax....
Tipos de aplicações Java               Aplicações servidoras na Web (Servlets)               package cap1;               p...
Tipos de aplicações Java              Templates Web (JSP)                   <html>                   <head>               ...
Tipos de aplicações Java               Java Beans (POJOs - Plain Old Java Objects)               package cap1;            ...
Tipos de aplicações Java               EJBs 3.1 (não caem na prova)               package cap1;               @javax.ejb.S...
Tipos de aplicações Java               CDI Beans (também não caem em prova)               package cap1;               @jav...
Java no console          public class RelouOOrde {          	   public static void main(String[] args) {          	   	   ...
Java no console               Aplicativos Java podem se valer de uma série de variáveis de ambiente:                    No...
Estrutura de um .java               class                    Declaração que origina o arquivo .class. Seu nome será necess...
Estrutura de um .java               Variáveis de instância                    Atributos de objeto - alocação dinâmica de m...
Estrutura de um .java               Mais sobre Métodos                    modificadores retorno nome (Tipo1 var1, Tipo2 var...
Estrutura de um .java               O método main                    Método principal da aplicação como um todo           ...
Estrutura de um .java               Retornando o resultado da aplicação como um todo                    O main é void, ou ...
Estrutura de um .java               Modificadores de visibilidade de membros de classes                    Escopo        Pa...
Estrutura de um .java               Comentários e documentação                  Comentário podem vir:                  // ...
Estrutura de um .java               Convenções de nomenclatura:                 Parte-se do princípio de que tudo é minúsc...
Estrutura de um .java               Annotations                   Meta-informações sobre o programa                   Não ...
Estrutura de um .java               Como criar uma Annotation               package cap1;               import      java.l...
Estrutura de um .java               RetentionPolicy                    RUNTIME - A annotation será compilada junto com a c...
Estrutura de um .java               Target                    Restringe os locais onde poderemos utilizar a annotation cri...
Estrutura de um .java               Annotation Attributes                   Annotations podem ou não declarar atributos   ...
Estrutura de um .java               Annotations em classes                      @Override               	       @CodigoBeb...
Estrutura do SDK               Diretórios do Java SE SDK - Standard Development Kit:                 bin: Diretório que tr...
Estrutura do SDK               Pacotes básicos da API:                 java.lang: Traz os tipos mais elementares da lingua...
Objetivos cobertos               Define the structure of a Java class (in the Exploring the structure of a class           ...
Upcoming SlideShare
Loading in...5
×

Oracle Certified Associate - Java Programmer I - aula 2

1,240

Published on

Primeiros slides de conteúdo de fato do curso Java Certified Associate da Especializa.
http://www.especializa.com.br/curso/oca-javaassociate

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,240
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
0
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Transcript of "Oracle Certified Associate - Java Programmer I - aula 2"

  1. 1. Java Certified Associate Jose Berardo www.especializa.com.br/curso/oca-javaassociatesábado, 9 de março de 13
  2. 2. Agenda Macrotemas do curso: 1. Introdução às certificações Java 2. Iniciando com Java 3. Tipos de dados e seus detalhes 4. Expressões e construções 5. Usando arrays e coleções 6. Construções de laço 7. Classes, construtores e métodos 8. Herança e polimorfirsmo 9. Manipulação de exceções 10. Aplicações Javasábado, 9 de março de 13
  3. 3. Agenda 2. Iniciando com Java 2.1. Tecnologia Java 2.2. Orientação a objetos 2.3. Tipos de aplicações Java 2.4. Programando em Java no console 2.5. Estrutura de um .java 2.6. Estrutura do SDK “O basicão do basicão...”sábado, 9 de março de 13
  4. 4. Em meados dos anos 90, Patrick Naughton, Mike Sheridan e James Gosling criaram a linguagem Java com foco na então pouco difundida orientação a objetos “Java is a full-fledged object-oriented programming language” Baseada em C/C++, Java trazia muitas novidades para as linguagens da época: threading, rede, segurança, GUI, gestão automática de memória (ponteiros) Desenhada para ser multiplataforma, interpretada pela Java Virtual Machinesábado, 9 de março de 13
  5. 5. Orientação a objetos OOA - Object Oriented Analysis Determina a funcionalidade do sistema. O que ele será capaz de fazer OOD - Object Oriented Design Modelagem que determina como a arquitetura suporta a funcionalidade da aplicação OOP - Object Oriented Programming Abrange a implementação da aplicação UML - Unified Modeling Language Técnica de representação gráfica para design e documentaçãosábado, 9 de março de 13
  6. 6. Modelagem de classes Diagrama UML mais adotado na prática Caixas separadas em três seções: A primeira reserva o nome da classe A segunda lista as variáveis que serão atributos de seus objetos. Determina o estado (state) dos objetos. A terceira declara os métodos Determina o comportamentosábado, 9 de março de 13
  7. 7. Modelagem de classes Terminologia: -: Membros privados +: Membros públicos #: Membros protected (público entre classes de uma hierarquia)sábado, 9 de março de 13
  8. 8. Princípios OO Objects: Estrutura de dados Pré-moldada em uma classe Coleciona atributos, que determinam seu estado Carregam comportamento declarado através de métodos Possuem referência Ponteiro interno que resolve o endereçamento físico do objeto em memória Variáveis nunca recebem o binário do objeto, mas o inteiro desta referênciasábado, 9 de março de 13
  9. 9. Princípios OO Classes: Artefato que descreve as características de seus objetos Abstrações do estado e das funcionalidades dos objetos Podem possuir estado static variables - alocação estática Cada classe está totalmente escrita em um único e distinto arquivo Relações entre classes são refletidas em seus objetos: dependências, associações ou hierarquiassábado, 9 de março de 13
  10. 10. Princípios OO Data encapsulation (encapsulamento): Consiste em esconder dos usuários da classe, informações irrelevantes e expor as informações relevantes. A premissa básica é diminuir o nível de complexidade aparente da classe É conseguido através dos modificadores de visibilidade É usado também para proteger o estado interno dos objetos A técnica é esconder a variável que representa o estado e liberar métodos de acesso para leitura e escrita quando necessário e impondo as regras definidas na própria classesábado, 9 de março de 13
  11. 11. Princípios OO Inheritance (herança): Técnica que permite derivação em classes filhas. Estas vão herdar o que for definido em suas classes mães Utilizada para promover reuso de código É importante ter cuidado com o alto acoplamento gerado entre essas classes Certos casos devem ser implementados via composições Ex.: public class Pessoa { ... } public class PessoaFisica extends Pessoa { ... } public class PessoaJuridica extends Pessoa { ... }sábado, 9 de março de 13
  12. 12. Princípios OO Polymorphism (polimorfismo): Técnica que permite receber mais de um tipo de objeto a partir de relações hierárquicas esperadas Ex.: Pessoa p1 = new PessoaFisica(); Pessoa p2 = new PessoaJuridica(); Subclasses podem sobrescrever comportamentos de classes mães de forma transparente p1.validarAtributos(); p2.validarAtributos(); É necessário ter cuidado em manter a relação é-um Se um método de subclasse “nega” o comportamento da mãe, esta deveria ser abstratasábado, 9 de março de 13
  13. 13. Tipos de aplicações Java Aplicações básicas para o console package cap1; public class RelouOOrde { /** * @param args */ public static void main(String[] args) { System.out.println("Ela caiu e relou o ôrde!"); } }sábado, 9 de março de 13
  14. 14. Tipos de aplicações Java Aplicações de janelas (GUI) package cap1; import javax.swing.JFrame; public class MinhaJanela extends JFrame { private static final long serialVersionUID = 1L; public MinhaJanela() { this.setSize(500, 500); this.setTitle("Essa é a minha Janela"); this.setDefaultCloseOperation(EXIT_ON_CLOSE); } public static void main(String[] args) { MinhaJanela mj = new MinhaJanela(); mj.setVisible(true); } }sábado, 9 de março de 13
  15. 15. Tipos de aplicações Java Aplicações servidoras na Web (Servlets) package cap1; public class MinhaServlet extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/html"); // then get the writer and write the response data PrintWriter out = res.getWriter(); out.println("<HEAD><TITLE>Minha Servlet</TITLE></HEAD><BODY>"); out.println("<h1> Vooti! </h1>"); out.println("<P>É o que, hein?"); out.println("</BODY>"); out.close(); } }sábado, 9 de março de 13
  16. 16. Tipos de aplicações Java Templates Web (JSP) <html> <head> <title>Minha pagininha marromenos</title> </head> <body> <% Date hoje = new Date(); out.println(hoje); %> <hr> <jsp:useBean id="namebean" class="packt.NameBean" scope="session" > <jsp:setProperty name="namebean" property="name" value=" Hello world"" /> </jsp:useBean> <h1> <jsp:getProperty name="namebean" property="name" /></h1> </body> </html>sábado, 9 de março de 13
  17. 17. Tipos de aplicações Java Java Beans (POJOs - Plain Old Java Objects) package cap1; public class Pessoa { private String nome; private String email; public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } }sábado, 9 de março de 13
  18. 18. Tipos de aplicações Java EJBs 3.1 (não caem na prova) package cap1; @javax.ejb.Stateless public class Pessoa { private String nome; private String email; public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } }sábado, 9 de março de 13
  19. 19. Tipos de aplicações Java CDI Beans (também não caem em prova) package cap1; @javax.inject.Named @javax.enterprise.context.SessionScoped public class PessoasBean { private Pessoa pessoaAtual; private java.util.List<Pessoa> listaPessoas; public PessoasBean() { this.listaPessoas = new ArrayList<Pessoa>(); } }sábado, 9 de março de 13
  20. 20. Java no console public class RelouOOrde { public static void main(String[] args) { System.out.println("Ela caiu e relou o ôrde!"); } } Compilação: javac RelouOOrde.java RelouOOrde.class - bytecode ela caiu e relou o ôrde Interpretação: java RelouOOrde Ela caiu e relou o ôrdesábado, 9 de março de 13
  21. 21. Java no console Aplicativos Java podem se valer de uma série de variáveis de ambiente: Nome Propósito Exemplo CLASSPATH Caminhos onde encontrar classes .:/novo/caminho PATH Caminhos onde encontrar comandos do sistema JAVA_VERSION Versão do Java a ser utilizada 1.7.0_17 JAVA_HOME Caminho para o diretório onde o Java foi instalado /usr/jdk/ OS_NAME Nome do sistema operacional OS_VERSION Versão do sistema operacional OS_ARCH Arquitetura do sistema operacionalsábado, 9 de março de 13
  22. 22. Estrutura de um .java class Declaração que origina o arquivo .class. Seu nome será necessariamente o nome do arquivo package Determinação do diretório físico onde deverá ser salvo o arquivo Promove a organização de código import Resolução de nomes de classes (de outros pacotes) import não é include Não há conceito de subpacote Ordem das declarações: package import classsábado, 9 de março de 13
  23. 23. Estrutura de um .java Variáveis de instância Atributos de objeto - alocação dinâmica de memória Variáveis de classe Atributos com declaração static - alocação estática de memória Métodos Rotinas reutilizáveis que determinam o comportamento de um objeto Promovem encapsulamento e reuso de código Construtores Métodos chamados no ato do new Devem possuir o mesmo nome da classe, sem declarar tipo de retorno Úteis para inicializar os objetossábado, 9 de março de 13
  24. 24. Estrutura de um .java Mais sobre Métodos modificadores retorno nome (Tipo1 var1, Tipo2 var2, ...) throws PossivelException { Corpo do método Possíveis variáveis automáticas } c() Estruturas que determinam a pilha de chamadas b() a() A ordem dos modificadores não interfere main() O tipo de retorno deve ser compatível com a cláusula return interior ao método A assinatura de um método é diferenciada por: Seu nome, seu número, tipos e ordem de parâmetrossábado, 9 de março de 13
  25. 25. Estrutura de um .java O método main Método principal da aplicação como um todo Representa toda a execução do “processo” principal do aplicativo Java Início da pilha de chamadas public static void main (String elefantes[]) Público Método de classe Não retorna nada Declara que recebe um array de String passado em tempo de chamada java PrimeiraClasse parametro1 parametro2sábado, 9 de março de 13
  26. 26. Estrutura de um .java Retornando o resultado da aplicação como um todo O main é void, ou seja, não retorna nada ao sistema que o chamou Em certos tipos de sistema, pode ser interessante informar um código indicando se o programa encerrou de modo normal ou não Útil em chamadas no console ou operações em lote, com chamadas a vários outros programas de uma vez só System.exit(0); Encerra todas as operações (threads) do programa É uma medida extrema que deve ser evitada Interrompe o programa abruptamente, sem dar chance de realizar operações de encerramento O zero é justamente o código de retorno que você pode informarsábado, 9 de março de 13
  27. 27. Estrutura de um .java Modificadores de visibilidade de membros de classes Escopo Palavra chave Descrição Privado private Visível apenas no interior da própria classe que o definiu Visível ao pacote Visível a todas as classes pertencentes ao mesmo pacote Hieráquico protected Herdado pelas subclasses mesmo estando em outro pacote Público public Visível a toda e qualquer classe do sistema Classe Pacote Subclasses Outras private “default” protected publicsábado, 9 de março de 13
  28. 28. Estrutura de um .java Comentários e documentação Comentário podem vir: // - Em uma única linha /* Agrupando mais de uma linha de código */ Comentários sobre declarações de classes, atributos e métodos podem ser interpretados pelo executável javadoc Docblocks (blocos javadoc) devem iniciar com /** e ter um * por linha Podem possuir tags (iniciadas por @): @author, @version, @param, @see, @return, @throws ou @exception Como criar javadocs: Javadoc -d /meus_docs -sourcepath /MeusFontesJava -classpath / MinhasLibJarssábado, 9 de março de 13
  29. 29. Estrutura de um .java Convenções de nomenclatura: Parte-se do princípio de que tudo é minúsculo. Elemento Convenção Exemplo Package tudo minúsculo package meu.belopacote; Classe Iniciais maiúsculas por palavra class MinhaClasse Interface Mesma regra das classes interface NegocinhoCoisavel Variáveis Iniciais maiúsculas a partir da segunda palavra String meuNome; Atributos Mesma regra das variáveis Métodos Mesma regra das classes public void coisarNegocio() Constantes Todas letras maiúsculas separadas por underscore MINHA_CONSTANTEsábado, 9 de março de 13
  30. 30. Estrutura de um .java Annotations Meta-informações sobre o programa Não são código, uma vez que seguem outra sintaxe e não executam nenhum comando Também não são comentários uma vez que o compilador vai exigir sua escrita correta Sintaxe: @MinhaAnnotation Ex.: @Override public String toString() { return super.toString(); }sábado, 9 de março de 13
  31. 31. Estrutura de um .java Como criar uma Annotation package cap1; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.METHOD,ElementType.FIELD}) public @interface CodigoBebo { boolean bebeuCerveja() default true; boolean bebeuVinho() default true; boolean bebeuVodka() default true; }sábado, 9 de março de 13
  32. 32. Estrutura de um .java RetentionPolicy RUNTIME - A annotation será compilada junto com a classe que a utilizar e será possível usar introspecção (reflection) para descobrirmos seu valor CLASS - A annotation será compilada junto com a classe que a utilizar, mas não será acessível via Reflection API SOURCE - A annotation é ignorada pelo compilador como se fosse um mero comentário Mesmo assim o comportamento dela não é igual ao de um comentário, o compilador sempre exigirá que ela seja escrita corretamentesábado, 9 de março de 13
  33. 33. Estrutura de um .java Target Restringe os locais onde poderemos utilizar a annotation criada: ElementType: TYPE - Sobre outra annotation, classes, enums ou interfaces FIELD - Sobre atributos (de objeto ou de classe) METHOD - Declarações de métodos PARAMETER - Declarações de parâmetros CONSTRUCTOR - Apenas sobre construtores LOCAL_VARIABLES - Sobre variáveis locais a métodos ANNOTATION_TYPE - Apenas sobre declarações de annotations PACKAGE - Sobre pacotes A sintaxe para mais de um valor por annotation é agrupar com chaves e separar por vírgulassábado, 9 de março de 13
  34. 34. Estrutura de um .java Annotation Attributes Annotations podem ou não declarar atributos Estranhamente sua sintaxe parece com a de métodos, uma vez que a declaração da própria annotation se confunde com a de uma interface Podem declarar valores default Comumente, declaram valores de tipos Enum Podem declarar arrays de determinado tipo, mesmo que isso ocorra, tanto o valor default quanto o valor utilizado pela classe não é obrigado a ser um array daquele tipo boolean[] bebeuCerveja() default true; Ou pode: boolean[] bebeuCerveja() default {true, true, false, true};sábado, 9 de março de 13
  35. 35. Estrutura de um .java Annotations em classes @Override @CodigoBebo(bebeuCerveja=true, bebeuVodka=false) public String toString() { return super.toString(); } Annotations são normalmente usadas por uma aplicação de terceiros, no entanto o próprio compilador reconhece algumas: @Deprecated - Informa que o código está depreciado, não deve ser usado @Override - O compilador vai exigir que o método que o declare realmente sobrescreva algum em sua hierarquia @SuppressWarnings - Utilizado para suprimir warnings de compilaçãosábado, 9 de março de 13
  36. 36. Estrutura do SDK Diretórios do Java SE SDK - Standard Development Kit: bin: Diretório que traz as ferramentas que precisamos (javac, javadoc, java, jar ...) db: Diretório utilizado pelo Java DB, banco de dados open source portado pela Sun do projeto Apache Derby demo: Séries de arquivos de demonstração include: Arquivos de cabeçalho úteis em integrações com aplicações C jre: Java Runtime Environment - Ambiente de execução sample: Exemplos de código de várias features do Javasábado, 9 de março de 13
  37. 37. Estrutura do SDK Pacotes básicos da API: java.lang: Traz os tipos mais elementares da linguagem. Único pacote que não requer sua declaração totalmente qualificada (não precisa de import) java.io: Inclui funcionalidades relativas a arquivos e diretórios java.net: Traz recursos de comunicação em rede (Sockets, URLs, etc) java.util: Carrega classes e interfaces utilitárias quase tão presentes quanto as do pacote java.lang. java.awt: Carrega componentes de interface gráficasábado, 9 de março de 13
  38. 38. Objetivos cobertos Define the structure of a Java class (in the Exploring the structure of a class section) Create an executable Java application with a main method (in the Exploring the structure of a Java console program section) Introdução geral a diversos outros objetivossábado, 9 de março de 13

×