Prévia do material em texto
Linguagem de Prog III - Davi Classe · Abstrai um conjunto de objetos/entidades com características e comportamentos similares entre si. · Define (ou descreve) a estrutura e o comportamento que os objetos compartilharão. · Para isso, dispõe de: · Atributos: características ou estados possíveis destes objetos. · Métodos: ações que o objeto pode realizar. Estrutura de uma Classe Atributos: São declarações das classes que representam características de instância que possam assumir estados. Métodos: São declarações das classes que representam ações que a mesma pode executar em função dos valores de seus atributos. Objetos: É uma entidade que pode ser física, conceitual ou de software. Ou seja, uma representação genérica. Instancias: É usada com o sentido de exemplo. É a concretização da classe. Ou seja, são os objetos de fato criados e ocupando espaço na memória. Contrutor: · Método especial. É disparado automaticamente na instanciação da classe. · Utilizamos ele basicamente para inicializar os estados dos atributos. No exemplo a seguir, foram criados dois construtores. Cada um deles é chamado de acordo com a criação da instância, pela lista de argumentos. Desfrutor: · O método Destrutor não pode ser sobrecarregado porque não aceita parâmetros e é executado quando o objeto é excluído. · Não é recomendado para a liberação de recursos, pois o momento em que ele é chamado pelo garbage collector pode ser imprevisível. · Para liberação de recursos, é aconselhável utilizar como “try-finally” ou implementar interfaces como “AutoCloseable”, se necessário. Encapsulamento: Mecanismo que permite separar detalhes de funcionamento – características (atributos) e funções (métodos) – de sua interface Utiliza-se de modificadores de acesso, tais como: 1. Public: Acessível a partir de qualquer outra classe, independente do package. 2. Protected: Acessível a partir de qualquer classe derivada, no mesmo package. 3. Private: Acessível apenas dentro da própria classe. 4. Static: Membro compartilhado com todas as instâncias da classe. 5. Final: Constante da classe. 6. Friendly: Acessível a partir de qualquer outra classe do mesmo package (também chamado de “default” ou “package-private”). Herança: · Conhecida também como Generalização; · Definição de uma classe a partir de outra, herdando os seus membros (não-privados); · A classe herdeira é chamada subclasse; · A classe herdada é chamada superclasse; · Pode ser utilizado em cascata, criando hierarquias com várias gerações de classes; · Permite que as classes compartilhem atributos e métodos baseados em um relacionamento. Subclasse e superclasse: · Superclasse é a classe herdada. Ou seja, a classe Pai; · Subclasse é a classe herdeira. Ou seja, a classe Filha; No exemplo, animal é a superclasse e cachorro e gato são subclasses. Polimorfismo: · Permite que referências de tipos de classes mais abstratas representem o comportamento das classes concretas que referenciam; · Um mesmo método pode apresentar várias formas, de acordo com seu contexto; · Permite que a semântica de uma interface seja efetivamente separada da implementação que a representa; · Basicamente, override e overload; · Benefícios: · Clareza e manutenção do código; · Divisão da complexidade; · Aplicações flexíveis. Sobreposição (Override): · Utilizamos quando queremos reescrever um método na classe Filha que já existe e está implementado na classe Pai; · Podemos chamar o método pai (se for desejado) através da palavra reservada super; · Também chamado de sobrescrita ou polimorfismo vertical. Sobrecarga (Overload): · Quando há 2 ou mais métodos com o mesmo nome, mas com assinatura (e comportamento) diferente, declarados na mesma classe; · Também conhecido como overload ou polimorfismo horizontal. Classes abstratas: · São classes que abstraem um conjunto de características que podem ou não serem implementadas; · Não podem ser instanciadas; · “A implementamos quando sabemos o que fazer mas não como fazer”. Inferface: · Contrato que define métodos (modelando comportamentos) que uma classe deve implementar. · Permite que classes diferentes implementem a mesma interface de maneira específica. · Estabelece ponto de comunicação entre objetos (por exemplo, em pacotes diferentes). · Uma classe pode implementar várias interfaces. Com isso, supre (em partes) a falta de herança múltipla (visto que o Java trabalha apenas com herança única). · Reduz acoplamento, aumenta flexibilidade e promove reutilização de código. · Na prática, uma interface assemelha-se a uma classe abstrata que contém apenas métodos abstratos (e, eventualmente, constantes). Upcasting e Downcasting: · Upcasting é quando transformamos (através de uma atribuição) um tipo de baixo para cima, na hierarquia; · Downcasting é quando transformamos (também através de uma atribuição) um tipo de cima para baixo na hierarquia. · Partindo das classes abaixo como exemplo... Exemplo de Upcasting Exemplo de Downcasting Associação: · Vínculo que permite que objetos de uma ou mais classes se relacionem; · É possível que um objeto convoque comportamentos e estados de outros objetos; · As associações podem ser: · Unárias: Entre objetos de uma mesma classe; · Múltiplas: Entre mais de dois objetos. · Cada associação possui características de: · Cardinalidade ou multiplicidade - determina quantos objetos no sistema são possíveis em cada vértice da associação; · Navegação - se é possível para cada objeto acessar outro objeto da mesma associação. Exemplos de associação Basicamente podemos ter: · Agregação: quando duas ou mais classes formam outra classe. Neste caso, a ausência de uma delas não compromete a existência da classe resultante da associação. package RegraNegocio; public class Aula { private Aluno _aluno; private Materia _materia; } · Composição: também ocorre quando duas ou mais classes compõem outra classe. Neste caso, porém, a ausência de uma das classes formadoras compromete a existência da classe resultante da associação, impedindo sua utilização. package RegraNegocio; public class Carro { private Chassi _chassi; private Motor _motor; } GUI (Graphical User Interface) · A interface gráfica com o usuário (GUI - Graphical User Interface) possibilita, de forma intuitiva, que o usuário tenha um nível básico de familiaridade com um programa, sem que jamais o tenha utilizado. Dessa forma, é reduzido o tempo de aprendizado do programa pelo usuário. · As GUIs são construídas a partir de componentes GUI. O componente GUI é um objeto com o qual o usuário interage através de interfaces (mouse, teclado, monitor etc). Bibliotecas: AWT x Swing · Os componentes AWT (Abstract Windowing Toolkit, do pacote java.awt) foram a primeira versão de componentes GUI em Java e estão diretamente associados com os recursos gráficos da plataforma local. Assim, os componentes são exibidos com uma aparência diferente em cada plataforma (Windows, Apple, Solaris, etc); · A versão 1.2 da linguagem Java (Java 2) trouxe os componentes Swing (pacote javax.swing), desenvolvidos totalmente em Java, que possibilitam a especificação de uma aparência uniforme independentemente da plataforma; · Alguns componentes Swing utilizam o pacote AWT como superclasses de suas classes. Hierarquia comum entre AWT e Swing Classes do pacote javax.swing A classe JComponent · A classe JComponent é a superclasse de todos os componentes Swing; · Os objetos JButton, JCheckbox, e JTextField são todos exemplos de objetos das subclasses de JComponent; · A classe JComponent é uma subclasse direta da classe java.awt.Container que, por sua vez, é uma subclasse direta de java.awt.Component. Alguns Componentes GUI Básicos 1. JFrame: é um conteiner (formulário) para outros componentes; 2. JLabel: elemento para exibição de texto não-editável ou imagens; 3. JTextField: elemento para receber dados do usuário via teclado; 4. JButton: componente que aciona um evento ao clique do usuário; 5. JComboBox: lista de itens com valores pré-definidos para seleção; 6.JCheckBox: possui dois estados: selecionado ou não selecionado; 7. JRadioButton: botão de escolha que pode ser agrupado com outros, permitindo que apenas um elemento seja escolhido; 8. JList: área em que uma lista é exibida, possibilitando a seleção; 9. JPanel: Contêiner em que os componentes podem ser colocados. Tratamento de Eventos · As GUIs são baseadas em eventos gerados pela interação do usuário. Por exemplo, mover o mouse, clicar no mouse, digitar um campo de texto, fechar uma janela etc; · Tanto os componentes AWT como os componentes Swing utilizam os tipos de eventos do pacote java.awt.event (embora o Swing também tenha seus próprios eventos no pacote javax.swing.event). · O mecanismo de tratamento de eventos possui três partes: a origem do evento, o objeto evento e o “ouvinte” (listener) do evento; · O programador precisa: · Registrar um ouvinte de evento no componente; · implementar um método de tratamento do evento. · Algumas interfaces mais utilizadas são: · ActionListener; · KeyListener; · MouseListener; · FocusListener; · WindowListener. · Cada interface listener de eventos especifica um ou mais métodos de tratamento de evento, que devem ser definidos na classe que implementa a interface relacionada. Manipulando eventos – exemplo Para o ActionEvent (evento de num botão), deve-se: · criar um objeto que implementa a interface ActionListener; · registrar esse objeto como um “ouvinte” (listener) desse botão usando o método addActionListener; · quando o botão for pressionado, ele dispara um evento, o que resulta na execução do método actionPerformed do objeto ouvinte; · o argumento desse método é um objeto ActionEvent, que informa acerca do evento e de sua fonte. De uma forma geral: · uma classe X que estiver interessada em processar eventos de ação deve implementar a interface ActionListener; · um objeto de X é registrado com um listener, usando o método addActionListener desse componente; · quando a ação ocorre, o método actionPerformed é executado. Exemplo de código-fonte: button.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { numeroDeCliques++; label.setText(numeroDeCliques); } }); JavaEE (Java Enterprise Edition) Conhecido no passado como J2EE Especificação para construção de servidores WEB de aplicações Java API: Servlets, são utilizados para o desenvolvimento de aplicações Web com conteúdo dinâmico. Contém uma API que abstrai e disponibiliza os recursos do servidor Web de maneira simplificada para o programador; Classe Java que responde solicitações HTTP e que aceita codificação HTML em seu conteúdo. JSP (Java Server Pages), uma especialização do servlet que permite que conteúdo dinâmico seja facilmente desenvolvido. Basicamente é uma página HTML onde podem ser inseridos códigos JAVA. EJBs (Enterprise Java Beans), utilizados no desenvolvimento de componentes de software. Permitem que o programador se concentre nas necessidades do negócio do cliente, enquanto questões de infra-estrutura, segurança, disponibilidade e escalabilidade são responsabilidade do servidor de aplicações. Servidores JavaEE No mercado, existem diversos servidores Java, muitos gratuitos e “open source”. Os mais conhecidos são: · Tomcat, container Java do Apache · GlassFish, da Sun · WebSphere, da IBM · WebLogic, da Oracle · Jetty, da Eclipse · JBoss · WildFly, da RedHat · ...entre outros Servlet – Definição É uma classe JAVA Serve para estender a capacidade de um servidor de aplicações a uma classe comum Oferece mecanismos para tratamento de requisição e resposta Comumente utilizada para programar uma resposta a uma requisição HTTP Ciclo de Requisição Funcionamento padrão Numa arquitetura MVC, por exemplo, Servlets geralmente se encaixam como controllers (em aplicações Java web) Nessa linha, os Servlets: · são frequentemente usados como controllers (na camada de controle) do MVC. · recebem solicitações HTTP dos clientes, atuando como ponto de entrada para a lógica de controle da aplicação. · processam solicitações, interagem com a camada Model para obter ou atualizar dados e decidem qual View deve ser apresentada. · após o processamento, os Servlets frequentemente encaminham a solicitação para algum elemento/tecnologia da camada de apresentação (View) para gerar a resposta final. Exemplos de uso Os Servlets são muito versáteis em Java, podendo ser empregados para: · Model-View-Controller (MVC): como Controller, pode atuar entre a Model e a View, recebendo solicitações do cliente, executando a lógica de controle e atualizando a Model e/ou a View. · API RESTful: pode ser usados na criação de serviços web RESTful (popular abordagem para construção de APIs em arquiteturas web), podendo processar solicitações HTTP (GET, POST, PUT, DELETE, etc.) e fornecer respostas em formatos como JSON ou XML. · Integração com frameworks MVC: como ocorre no próprio Spring MVC, pode receber requisições e delegar o processamento adicional a componentes específicos do framework. · Segurança de aplicações: Servlets são parte integrante de mecanismos de segurança em Java EE, podendo ser configurados para autenticação, autorização e demais práticas de segurança. · Aplicações diversas: processamento de formulários do usuário, controle de sessão do usuário, rastreamento do estado do usuário entre requisições, processamento de arquivos etc. Redirecionando o tratamento de uma requisição Para dar continuidade a uma requisição do cliente, pode ser necessário redirecionar o tratamento para outro recurso ou URL. Isso pode ser feito, basicamente, com o uso de um dos comandos abaixo: request.getRequestDispatcher: usado para obter um objeto RequestDispatcher, que é uma interface para encaminhar a solicitação do cliente para outro recurso no servidor, como um Servlet, JSP, outro recurso Java ou até mesmo um recurso estático. Ex.: RequestDispatcher dispatcher = request.getRequestDispatcher("/OutroServlet"); dispatcher.forward(request, response); response.sendRedirect: usado para redirecionar o navegador do cliente para outra página ou recurso, instruindo o navegador a fazer uma nova solicitação para a URL especificada. Ex.: response.sendRedirect(“https://fatecrl.edu.br"); image4.png image5.png image6.png image7.png image8.png image9.png image10.png image11.png image12.png image13.png image14.png image15.png image16.png image17.png image18.png image19.png image20.png image21.png image1.png image2.png image3.png