Buscar

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

Mais conteúdos dessa disciplina