RESUMO DOS TÓPICOS + IMPORTANTES De instância (non-static) - estão no contexto da classe sem o modificador static De Classe (static) - estão no contexto da classe com o modificador static Local – estão no contexto do corpo de métodos Parâmetro – estão no contexto da definição do método byte, short, int, long, float, double, boolean, char byte 0, short 0, int 0, long 0L, float 0.0f, double 0.0d, char '\u0000', boolean false, String (ou qualquer objeto) null Um array é um objeto capaz de armazenar um número fixo de valores de um tipo único. int i[ ] = { 1, 2, 3}; int[ ] i = new int[3]; String[ ] str = {“um”, “dois”, “três”} atribuição aritméticos unários igualdade relacionais condicionais orientados a bit e deslocamento (operações de baixo nível) tomada de decisão (if, else, else if, switch (byte, short, char, int)) repetição (for, while, do-while) desvio (break, continue, return) Declarando Classes class MinhaClasse { //atributos, construtores, declaração de métodos } Herança class Filha extends MinhaClasse { //herdará todos os atributos, construtores e métodos públicos ou protegidos de MinhaClasse } Sobrescrita ou sobreposição (override) dos métodos herdados da super classe. Regras: Métodos final e private não podem ser sobrescritos. Métodos protegidos podem sobrescrever métodos sem modificador de acesso (package ou default). Métodos sobrescritos não podem ter um modificador de acesso mais restritivo que o método original. Métodos incluindo o construtor podem ser sobrecarregados, ou seja, isto significa que dois os mais métodos podem ter o mesmo nome, mas assinaturas diferentes na mesma classe. public void meuMetodo(int i) {...} // ex: 1 - primeiro método com este nome na classe protected void meuMetodo(int b) {...} // ex: 2 - inválido - pois foi alterado o nome do parâmetro e não o tipo private void meuMetodo(int i, int j) {...} // ex: 3 - válido - quantidade de parâmetros diferentes do ex.1 private void meuMetodo(int j, int i) {...} // ex: 4 - inválido - invertida a ordem, mas a quantidade de parâmetros e os tipos (int) são iguais ao ex.3 Possuem o mesmo nome da classe sem tipo de retorno, podem ser sobrecarregados. class MinhaClasse { public MinhaClasse() { } public MinhaClasse(int i) { } } Os parâmetros de métodos são recebidos apenas por valor, ou seja, ocorre uma cópia do tipo de dado recebido. Para os tipos primitivos não existe o alteração na variável fora do escopo do método. Já com os tipos referência, haverá apenas a cópia do endereço para o objeto. E como duas referências podem apontar para o mesmo objeto, logo existirá alteração no objeto referenciado. this - utilizada pela própria classe quando faz referência a sua instância corrente. super - utilizada pela própria classe quando faz referência a sua super classe. Classe Internas (Inner Class) Membros – estão no contexto da classe Locais (podem ser anônimas ou não) – estão no contexto de métodos (corpo ou parâmetro) Enum Tipo de classe que armazena uma seqüência de constantes públicas. São estereótipos de classes, ou seja, o mesmo que classes totalmente abstratas. São por default totalmente públicas. Seus métodos não possuem implementação, apenas a definição. Pode conter atributos como constantes estáticas. Uma classe que utiliza uma interface deve implementar todos os seus métodos, ou torná-los abstratos, sendo assim a classe também deve ser abstrata. Não podem ser instanciadas diretamente. É geralmente uma representação genérica para tipos específicos Podem conter atributos, construtores e métodos (abstratos ou concretos). Não podem ser instanciadas diretamente. String - São imutáveis Métodos relevantes desta classe: equals, substring, indexOf, lastIndexOf, replace, toLowerCase, toUpperCase, split, getChars, toCharArray, concat, intern, length StringBuffer - Classe especializada na manipulação de strings Métodos relevantes desta classe: append, delete, insert, reverse Math Métodos relevantes desta classe: abs, ceil, floor, pow, sqrt Um pacote é uma agrupamento de tipos relacionados (classes, interfaces, enums) que provê uma proteção de acesso e um gerenciamento do espaço de nomes. São constituídos de um ou mais diretórios aninhados. Ex: A pasta "br" contém a pasta "com" que contém a pasta "eugenio" Na sintaxe java: // informa que esta classe faz parte deste pacote package br.com.eugenio; //Observação: uma classe não precisa importar o seu próprio pacote. // informa ao compilador que todas as classes ou interfaces deste pacote podem ser utilizadas. import br.com.eugenio.*; // Com utilização do import MinhaClasse mc = new MinhaClasse(); // Sem utilização do import br.com.eugenio.MinhaClasse mc = new br.com.eugenio.MinhaClasse(); private - restrito a própria classe protected - restrito a própria classe e suas derivadas ou descendentes public - irrestrito, ou seja, visivél por todos default, package-private ou sem modificador - o método ou atributo que não possuir um dos três modificadores anteriores (private, protected ou public), terá o seguinte comportamento: público - para todas classes ou interfaces do seu pacote; e privado - para todas as classes que não fizerem parte do seu pacote, por isso package-private (privativo do pacote). Pacotes utilizados java.awt - componentes GUI primários que utilizam recurso nativos do sistema operacional java.awt.event - utilizado na manipulação de eventos javax.swing - componentes GUI mais atuais, contudo vários herdam diretamente ou indiretamente dos componentes AWT. Classe e interfaces relevantes: Janelas e Painéis - JFrame, JDialog, JOptionPane e JPanel Componentes - JTextField, JLabel e Jbutton Gerenciadores de Layout - FlowLayout, GridLayout, BorderLayout Eventos Interface - ActionListener, MouseListener e KeyListener Classe Adaptadoras - MouseAdapter, KeyAdapter Threads também conhecidos como Processos Leves ou Linhas de execução. Um processo pode conter uma ou mais threads. Estratégias de implementação extends Thread implements Runnable Nas duas estratégias o método run() deve ser implementado, ele é o corpo da thread. O método start() de uma thread a coloca no estado "novo" ou "pronta para executar", mas somente o scheduler (agendador ou escalonador da JVM) determinará sua execução. Ciclo de Vida novo - inicio do ciclo executável - executando sua tarefa terminado - fim do ciclo Prioridades de threads (espera) - wait()- aguarda notificação de outra thread para continuar - notify() (espera cronometrada) - sleep(tempo) MAX_PRIORITY – 10 NORM_PRIORITY – 5 MIN_PRIORITY – 1 Obs: Apesar da prioridade o agendamento preemptivo não é garantido em todos os sistemas operacionais. Métodos ou blocos sincronizados modificador synchronized - Utilizado quando threads precisam compartilhar o mesmo objeto sem conflito. Os métodos wait(), notify(), notifyAll() oriundos da classe Object auxiliam na sincronização. Obs: A partir da versão 5 do Java foi incluída a API de concorrência de alto nível cujo o pacote é "java.util.concurrent" API - que provê uma interface para que fabricantes de SGBD (Sistema Gerenciador de Banco de Dados) implementem controladores (drivers) para acesso a banco de dados. pacote java.sql Class.forName() - Método estático da classe java.lang.Class utilizado para carregar uma instância do controlador (driver) do fabricante DriverManager - Classe gerenciadora de drivers que possui o método getConnection() Statement - Interface que provê a execução de consultas e procedimentos através das sintaxe SQL SubInterfaces - CallableStatement, PreparedStatement Métodos: execute - retorna um booleano (true se resulta num conjunto de resultados e false se for uma contagem atualizada ou não houver resultados) executeQuery - retorna um ResultSet (conjunto de resultados) executeUpdate - retorna um inteiro (representa total de registros afetados) ResultSet - Interface que provê a obtenção de um conjunto de resultados obtidos através das Statement SubInterfaces - CachedRowSet, JdbcRowSet, JoinRowSet, RowSet Programas Java que podem ser incorporados a um documento HTML. O navegador que executa o applet é conhecido como contêiner applets Ciclo de Vida init, start, paint, stop, destroy Tag applet <applet> </applet> Parâmetros <applet> <param name=“nome” value=“valor”/> </applet> Programas Java que executam em um servidor WEB (contêiner WEB). pacotes javax.servlet, javax.servlet.http Ciclo de Vida init, service, destroy O método service recebe respectivamente dois objetos: ServletRequest e ServletResponse Interface Servlet Classes abstratas GenericServlet HttpServlet Utilizada para implementações com outros protocolos métodos: doGet - utilizada para tratar requesições GET doPost - utilizada para tratar requesições POST Produz saídas html através do uso de objetos PrintWriter Ex: out.println("<title>TITULO</title>"); Utilizado para a produção de páginas dinâmicas Tal como os Servlets, são programas Java que executam em um servidor WEB (contêiner WEB). São interpretados na primeira requisição e geram um Servlet que responde as próximas requisições. pacote javax.servlet.jsp Objetos implícitos Escopo Application Escopo Page Escopo Request Escopo Session Escopo Application application - Um objeto javax.servlet.ServletContext que representa o contêiner em que o JSP executa. Escopo Page config - Um objeto javax.servlet.ServletConfig que representa as opções de configuração do JSP. Como com os servlets, as opções de configuração podem ser especificadas em um descritor de aplicativo Web. exception - Um objeto java.lang.Throwable que representa uma exceção passada para uma página de erro JSP. Esse objeto está disponível somente em uma pagina de erro JSP. out - Um objeto javax.serlvet.JspWriter que escreve texto como parte da resposta para uma solicitação. Esse objeto é utilizado implicitamente com as expressões e ações JSP que inserem conteúdo de string em uma resposta. page - Um Object que representa a referência this para a instância JSP atual. pageContext - Um objeto javax. servlet.jsp.PageContext que fornece programadores em JSP com acesso aos objetos implícitos discutidos nesta tabela. response - Um objeto que representa a resposta ao cliente e, normalmente, é uma instância de uma classe que implementa HttpServletResponse (pacote javax.servlet.http). Se um protocolo diferente de HTTP for utilizado, esse objeto será uma instância de uma classe que implementa javax.servlet.ServletResponse. Escopo Request request - Um objeto que representa a solicitação de cliente e, normalmente, é uma instância de uma classe que implementa HttpServletRequest (pacote javax.servlet.http). Se um protocolo diferente de HTTP for utilizado, esse objeto será uma instância de uma sub-classe de javax.servlet.ServletRequest. Escopo Session session - Um objeto javax.servIet.http.HttpSession que representa as informações de sessão de cliente se essa sessão tiver sido criada. Esse objeto está disponível apenas em páginas que participam de uma sessão. FIM