SlideShare uma empresa Scribd logo
1 de 38
Java Certified Associate
                                         Jose Berardo
                             www.especializa.com.br/curso/oca-javaassociate




sábado, 9 de março de 13
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 Java




sábado, 9 de março de 13
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
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 Machine



sábado, 9 de março de 13
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ção




sábado, 9 de março de 13
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 comportamento



sábado, 9 de março de 13
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
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ência




sábado, 9 de março de 13
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 hierarquias




sábado, 9 de março de 13
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 classe




sábado, 9 de março de 13
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
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 abstrata


sábado, 9 de março de 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
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
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
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
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
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
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
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 ôrde




sábado, 9 de março de 13
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 operacional




sábado, 9 de março de 13
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 class



sábado, 9 de março de 13
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 objetos



sábado, 9 de março de 13
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âmetros



sábado, 9 de março de 13
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 parametro2



sábado, 9 de março de 13
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 informar


sábado, 9 de março de 13
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

                      public




sábado, 9 de março de 13
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 /
                      MinhasLibJars




sábado, 9 de março de 13
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_CONSTANTE




sábado, 9 de março de 13
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
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
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
                       corretamente




sábado, 9 de março de 13
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írgulas




sábado, 9 de março de 13
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
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ção




sábado, 9 de março de 13
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 Java




sábado, 9 de março de 13
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áfica




sábado, 9 de março de 13
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 objetivos




sábado, 9 de março de 13

Mais conteúdo relacionado

Mais procurados

Introdução a programação Orientada a Objeto
Introdução a programação Orientada a ObjetoIntrodução a programação Orientada a Objeto
Introdução a programação Orientada a ObjetoMarconi Rodrigues
 
Conceitos Básicos de OO e Java
Conceitos Básicos de OO e JavaConceitos Básicos de OO e Java
Conceitos Básicos de OO e JavaCharles Jungbeck
 
Programação Orientada a Objetos - Uso da O.O. em Java
Programação Orientada a Objetos - Uso da O.O. em JavaProgramação Orientada a Objetos - Uso da O.O. em Java
Programação Orientada a Objetos - Uso da O.O. em JavaCristiano Almeida
 
Programação Orientada A Objectos (Poo)
Programação Orientada A Objectos (Poo)Programação Orientada A Objectos (Poo)
Programação Orientada A Objectos (Poo)guest18b3c00
 
IES GF - Introdução a Linguagem de Programação Orientada a Objetos
IES GF - Introdução a Linguagem de Programação Orientada a ObjetosIES GF - Introdução a Linguagem de Programação Orientada a Objetos
IES GF - Introdução a Linguagem de Programação Orientada a ObjetosRamon Mayor Martins
 
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVA
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVAProgramação Orientada a Objetos - Conceitos básicos da linguagem JAVA
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVACristiano Almeida
 
Introdução à programação por objectos final
Introdução à programação por objectos finalIntrodução à programação por objectos final
Introdução à programação por objectos finalemcp11
 

Mais procurados (20)

Aula orientação a objetos
Aula orientação a objetosAula orientação a objetos
Aula orientação a objetos
 
Introdução a programação Orientada a Objeto
Introdução a programação Orientada a ObjetoIntrodução a programação Orientada a Objeto
Introdução a programação Orientada a Objeto
 
Conceitos Básicos de OO e Java
Conceitos Básicos de OO e JavaConceitos Básicos de OO e Java
Conceitos Básicos de OO e Java
 
Programação Orientada a Objetos - Uso da O.O. em Java
Programação Orientada a Objetos - Uso da O.O. em JavaProgramação Orientada a Objetos - Uso da O.O. em Java
Programação Orientada a Objetos - Uso da O.O. em Java
 
Programação Orientada A Objectos (Poo)
Programação Orientada A Objectos (Poo)Programação Orientada A Objectos (Poo)
Programação Orientada A Objectos (Poo)
 
Python Orientação a Objeto
Python Orientação a ObjetoPython Orientação a Objeto
Python Orientação a Objeto
 
Resumão java
Resumão javaResumão java
Resumão java
 
IES GF - Introdução a Linguagem de Programação Orientada a Objetos
IES GF - Introdução a Linguagem de Programação Orientada a ObjetosIES GF - Introdução a Linguagem de Programação Orientada a Objetos
IES GF - Introdução a Linguagem de Programação Orientada a Objetos
 
Java básico
Java básicoJava básico
Java básico
 
Java 02
Java 02Java 02
Java 02
 
Slide Share s2 Rodd
Slide Share s2 RoddSlide Share s2 Rodd
Slide Share s2 Rodd
 
Slide Semana2 Rodrigo2
Slide Semana2 Rodrigo2Slide Semana2 Rodrigo2
Slide Semana2 Rodrigo2
 
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVA
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVAProgramação Orientada a Objetos - Conceitos básicos da linguagem JAVA
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVA
 
Slide Semana2 Rodrigo
Slide Semana2 RodrigoSlide Semana2 Rodrigo
Slide Semana2 Rodrigo
 
[Choi ooplsa99] resume
[Choi ooplsa99] resume[Choi ooplsa99] resume
[Choi ooplsa99] resume
 
Aula 3 -_fundamentos_sobre_aoo
Aula 3 -_fundamentos_sobre_aooAula 3 -_fundamentos_sobre_aoo
Aula 3 -_fundamentos_sobre_aoo
 
Portifolio
PortifolioPortifolio
Portifolio
 
Aula05
Aula05Aula05
Aula05
 
Introdução à programação por objectos final
Introdução à programação por objectos finalIntrodução à programação por objectos final
Introdução à programação por objectos final
 
Classes e Estrutura de Dados
Classes e Estrutura de DadosClasses e Estrutura de Dados
Classes e Estrutura de Dados
 

Semelhante a Oracle Certified Associate - Java Programmer I - aula 2

Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetosCleyton Ferrari
 
Apresentação curso de Extensão em Java (UERJ-IME) v1
Apresentação curso de Extensão em Java (UERJ-IME) v1Apresentação curso de Extensão em Java (UERJ-IME) v1
Apresentação curso de Extensão em Java (UERJ-IME) v1Marcelo Zeferino
 
Poo slides01
Poo slides01Poo slides01
Poo slides01jmtofoli
 
Orientação a Objetos no Delphi - Por onde começar (I)
Orientação a Objetos no Delphi - Por onde começar (I)Orientação a Objetos no Delphi - Por onde começar (I)
Orientação a Objetos no Delphi - Por onde começar (I)Ryan Padilha
 
Introdução a poo
Introdução a pooIntrodução a poo
Introdução a pooSedu
 
Orientação a Objetos para Desenvolvedores Android
Orientação a Objetos para Desenvolvedores AndroidOrientação a Objetos para Desenvolvedores Android
Orientação a Objetos para Desenvolvedores AndroidIury Teixeira
 
Aula 1 - Linguagem III
Aula 1 - Linguagem IIIAula 1 - Linguagem III
Aula 1 - Linguagem IIIJuliano Weber
 
03 - Orientação a objetos e classes em C# v1.0
03 - Orientação a objetos e classes em C# v1.003 - Orientação a objetos e classes em C# v1.0
03 - Orientação a objetos e classes em C# v1.0César Augusto Pessôa
 
Curso Java Básico - Aula02
Curso Java Básico - Aula02Curso Java Básico - Aula02
Curso Java Básico - Aula02Natanael Fonseca
 
Sintaxe Ling Java Pilares Oo 4
Sintaxe Ling Java Pilares Oo 4Sintaxe Ling Java Pilares Oo 4
Sintaxe Ling Java Pilares Oo 4Felipe Valcanaia
 
Conceitos Básicos de Orientação o Objetos aplicdo ao VBA - Classes em vba
Conceitos Básicos de Orientação o Objetos aplicdo ao VBA - Classes em vbaConceitos Básicos de Orientação o Objetos aplicdo ao VBA - Classes em vba
Conceitos Básicos de Orientação o Objetos aplicdo ao VBA - Classes em vbaWanderlei Silva do Carmo
 

Semelhante a Oracle Certified Associate - Java Programmer I - aula 2 (20)

Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetos
 
Apresentação curso de Extensão em Java (UERJ-IME) v1
Apresentação curso de Extensão em Java (UERJ-IME) v1Apresentação curso de Extensão em Java (UERJ-IME) v1
Apresentação curso de Extensão em Java (UERJ-IME) v1
 
Poo slides01
Poo slides01Poo slides01
Poo slides01
 
Orientação a Objetos no Delphi - Por onde começar (I)
Orientação a Objetos no Delphi - Por onde começar (I)Orientação a Objetos no Delphi - Por onde começar (I)
Orientação a Objetos no Delphi - Por onde começar (I)
 
Java7
Java7Java7
Java7
 
Introdução a poo
Introdução a pooIntrodução a poo
Introdução a poo
 
Java 00 Poo
Java 00 PooJava 00 Poo
Java 00 Poo
 
Orientação a Objetos para Desenvolvedores Android
Orientação a Objetos para Desenvolvedores AndroidOrientação a Objetos para Desenvolvedores Android
Orientação a Objetos para Desenvolvedores Android
 
Aula 1 - Linguagem III
Aula 1 - Linguagem IIIAula 1 - Linguagem III
Aula 1 - Linguagem III
 
Java oo - aula 01
Java   oo - aula 01Java   oo - aula 01
Java oo - aula 01
 
Classes e Objectos JAVA
Classes e Objectos JAVAClasses e Objectos JAVA
Classes e Objectos JAVA
 
Mini aula-java
Mini aula-javaMini aula-java
Mini aula-java
 
Aula01-IntroducaoOO.pptx
Aula01-IntroducaoOO.pptxAula01-IntroducaoOO.pptx
Aula01-IntroducaoOO.pptx
 
03 - Orientação a objetos e classes em C# v1.0
03 - Orientação a objetos e classes em C# v1.003 - Orientação a objetos e classes em C# v1.0
03 - Orientação a objetos e classes em C# v1.0
 
03 poo
03 poo03 poo
03 poo
 
Curso Java Básico - Aula02
Curso Java Básico - Aula02Curso Java Básico - Aula02
Curso Java Básico - Aula02
 
Orientacao a Objetos
Orientacao a ObjetosOrientacao a Objetos
Orientacao a Objetos
 
JAVA REFLETCION
JAVA REFLETCIONJAVA REFLETCION
JAVA REFLETCION
 
Sintaxe Ling Java Pilares Oo 4
Sintaxe Ling Java Pilares Oo 4Sintaxe Ling Java Pilares Oo 4
Sintaxe Ling Java Pilares Oo 4
 
Conceitos Básicos de Orientação o Objetos aplicdo ao VBA - Classes em vba
Conceitos Básicos de Orientação o Objetos aplicdo ao VBA - Classes em vbaConceitos Básicos de Orientação o Objetos aplicdo ao VBA - Classes em vba
Conceitos Básicos de Orientação o Objetos aplicdo ao VBA - Classes em vba
 

Mais de Jose Berardo

HTML5 Mobile - Aula 3 - Device Orientation
HTML5 Mobile - Aula 3 - Device OrientationHTML5 Mobile - Aula 3 - Device Orientation
HTML5 Mobile - Aula 3 - Device OrientationJose Berardo
 
HTML5 Mobile Aula 1
HTML5 Mobile Aula 1HTML5 Mobile Aula 1
HTML5 Mobile Aula 1Jose Berardo
 
Java Certified Associate Aula 1
Java Certified Associate Aula 1Java Certified Associate Aula 1
Java Certified Associate Aula 1Jose Berardo
 
Curso de Android Aula 4
Curso de Android Aula 4Curso de Android Aula 4
Curso de Android Aula 4Jose Berardo
 
Curso de Android - aula 3
Curso de Android - aula 3Curso de Android - aula 3
Curso de Android - aula 3Jose Berardo
 
Curso de Android - aula 2
Curso de Android - aula 2Curso de Android - aula 2
Curso de Android - aula 2Jose Berardo
 
Curso de Google Android - Aula 1
Curso de Google Android - Aula 1Curso de Google Android - Aula 1
Curso de Google Android - Aula 1Jose Berardo
 
Curso de Java EE 6
Curso de Java EE 6Curso de Java EE 6
Curso de Java EE 6Jose Berardo
 
Html5 - O futuro da Web
Html5 - O futuro da WebHtml5 - O futuro da Web
Html5 - O futuro da WebJose Berardo
 
O que há de novo no PHP 5.3
O que há de novo no PHP 5.3O que há de novo no PHP 5.3
O que há de novo no PHP 5.3Jose Berardo
 
Certificacoes Desenvolvedores
Certificacoes DesenvolvedoresCertificacoes Desenvolvedores
Certificacoes DesenvolvedoresJose Berardo
 

Mais de Jose Berardo (18)

Html5 Aula 6
Html5 Aula 6Html5 Aula 6
Html5 Aula 6
 
Html5 Aula 5
Html5 Aula 5Html5 Aula 5
Html5 Aula 5
 
Html5 Aula 4
Html5 Aula 4Html5 Aula 4
Html5 Aula 4
 
HTML5 Mobile - Aula 3 - Device Orientation
HTML5 Mobile - Aula 3 - Device OrientationHTML5 Mobile - Aula 3 - Device Orientation
HTML5 Mobile - Aula 3 - Device Orientation
 
HTML5 Mobile Aula 1
HTML5 Mobile Aula 1HTML5 Mobile Aula 1
HTML5 Mobile Aula 1
 
Java Certified Associate Aula 1
Java Certified Associate Aula 1Java Certified Associate Aula 1
Java Certified Associate Aula 1
 
Curso de Android Aula 4
Curso de Android Aula 4Curso de Android Aula 4
Curso de Android Aula 4
 
Curso de Android - aula 3
Curso de Android - aula 3Curso de Android - aula 3
Curso de Android - aula 3
 
Curso de Android - aula 2
Curso de Android - aula 2Curso de Android - aula 2
Curso de Android - aula 2
 
Curso de Google Android - Aula 1
Curso de Google Android - Aula 1Curso de Google Android - Aula 1
Curso de Google Android - Aula 1
 
Curso de Java EE 6
Curso de Java EE 6Curso de Java EE 6
Curso de Java EE 6
 
Html5 Aula 3
Html5 Aula 3Html5 Aula 3
Html5 Aula 3
 
Html5 aula 02
Html5 aula 02Html5 aula 02
Html5 aula 02
 
Html5 aula 01
Html5 aula 01Html5 aula 01
Html5 aula 01
 
Html5 - O futuro da Web
Html5 - O futuro da WebHtml5 - O futuro da Web
Html5 - O futuro da Web
 
O que há de novo no PHP 5.3
O que há de novo no PHP 5.3O que há de novo no PHP 5.3
O que há de novo no PHP 5.3
 
Certificacao Php
Certificacao PhpCertificacao Php
Certificacao Php
 
Certificacoes Desenvolvedores
Certificacoes DesenvolvedoresCertificacoes Desenvolvedores
Certificacoes Desenvolvedores
 

Oracle Certified Associate - Java Programmer I - aula 2

  • 1. Java Certified Associate Jose Berardo www.especializa.com.br/curso/oca-javaassociate sábado, 9 de março de 13
  • 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 Java sábado, 9 de março de 13
  • 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. 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 Machine sábado, 9 de março de 13
  • 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ção sábado, 9 de março de 13
  • 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 comportamento sábado, 9 de março de 13
  • 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. 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ência sábado, 9 de março de 13
  • 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 hierarquias sábado, 9 de março de 13
  • 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 classe sábado, 9 de março de 13
  • 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. 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 abstrata sábado, 9 de março de 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. 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. 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. 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. 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. 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. 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. 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 ôrde sábado, 9 de março de 13
  • 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 operacional sábado, 9 de março de 13
  • 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 class sábado, 9 de março de 13
  • 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 objetos sábado, 9 de março de 13
  • 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âmetros sábado, 9 de março de 13
  • 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 parametro2 sábado, 9 de março de 13
  • 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 informar sábado, 9 de março de 13
  • 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 public sábado, 9 de março de 13
  • 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 / MinhasLibJars sábado, 9 de março de 13
  • 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_CONSTANTE sábado, 9 de março de 13
  • 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. 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. 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 corretamente sábado, 9 de março de 13
  • 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írgulas sábado, 9 de março de 13
  • 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. 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ção sábado, 9 de março de 13
  • 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 Java sábado, 9 de março de 13
  • 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áfica sábado, 9 de março de 13
  • 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 objetivos sábado, 9 de março de 13