Quem sou eu?
DAniel Oliveira Araújo
- Graduando em Tecnologia em Telemática no IFCE
- Tutor a distância do Projeto E-Tec pelo IFCE
- Tutor do E-jovem

Daniel Oliveira Araújo
- Sou ciclista urbano
- Troquei o conforto do ônibus pela prazer da bicicleta

Aula 01
O que é uma linguagem java?
O que é java?
- Java é uma linguagem de programação desenvolvida pela SUN (Hoje pertencente a Oracle) com o objetivo de manter o poder
computacional de C++, agregando características de segurança, robusteza e portabilidade. - A linguagem é orientada a
objetos, fortemente tipada, independente de arquitetura, robusta, segura, portável, bem
estruturada, suporta programação distribuída, multithreaded e conta com garbage collection.

Um pouco de história
- O Java foi desenvolvido por James Gosling lider do projeto Green Team da Sun Microsystems , projeto este responsável pelas inovações tecnológicas da empresa.
- O time teve a ideia de criar um interpretador para pequenos dispositivos, facilitando a reescrita de software para aparelhos eletrônicos, como vídeo cassete, televisão e aparelhos de TV a cabo.

Linguagem OAK
- Antes de ser chamada de Java, a linguagem possuia outro nome, se chamava Oak (Carvalho) referente há um jarro da planta que James Gosling posuia em sua janela no escritório.
- Mas já existia uma linguagem com esse nome e depois mudaram o nome para Java em referência a ilha de Java na Polinésia Francesa.

Desenvolvimento da linguagem
- Desenvolver software para aparelhos eletrônicos não deu muito certo.
- Tentaram fechar diversos contratos com grandes fabricantes de eletrônicos, como Panasonic, mas não houve êxito devido ao conflito de interesses e custos.
- Com o advento da web, a Sun percebeu que poderia utilizar a ideia para rodar pequenas aplicações dentro do browser. A semelhança era que na internet havia uma grande quantidade de sistemas operacionais e browsers, e com isso seria grande vantagem poder programar numa única linguagem, independente da plataforma.
Applet Java
- Applet: é um pequeno software que executa uma atividade específica, dentro de outro programa, geralmente como um Plugin. Geralmente têm algum tipo de interface de usuário ou fazem parte de uma destas dentro de uma página web.
- Os Applets Java podem rodar em um web browser usando uma JVM (Java Virtual Machine).
- Applets em Java podem adicionar recursos que não são possíveis em HTML.
- Comparando com o Javascript, as appçets Java possuem a vantagem de serem independentes do Sistema Operacional, Por outro lado são processados mais lentamente.
Novos Rumos
- Em 2009 a Oracle comprou a Sun Microsystems fortalecando a marca. O desenvolvimento de appplets foi deixado de lado e o foco maior ficou no desenvovimento de aplicações no lado do servidor.


Máquina Virtual
- Veja a seguinte observação:
Código binário para windows
Código binário para linux
Sistema Operacional Windows
Sistema Operacional Linux
Temos um código executável para cada sistema operacional. É necessário compilar uma vez para Windows, outra para o Linux, e assim por diante, caso a gente queira que esse nosso software possa ser utilizado em várias plataformas.
Máquina Virtual
- As aplicações se utilizam das bibliotecas do sistema operacional, como, por exemplo, a de interface gráfica para desenhar as “telas”. A biblioteca de interface gráfica do Windows é bem diferente das do Linux: como criar então uma aplicação que rode de forma parecida nos dois sistemas operacionais?
- O Java utiliza do conceito de máquina virtual, onde existe, entre o sistema operacional e a aplicação, uma camada extra responsável por “traduzir” o que sua aplicação deseja fazer para as respectivas chamadas do sistema operacional onde ela está rodando no momento
Máquina Virtual
Código binário para Windows
Código binário para linux
Máquina Virtual Java para Windows
Máquina Virtual Java para Linux
Sistema Operacional Windows
Sistema Operacional Linux
Máquina Virtual
- Dessa forma, a maneira com a qual você abre uma janela no Linux ou no Windows é a mesma: você ganha independência de sistema operacional. Ou, melhor ainda, independência de plataforma em geral: não é preciso se preocupar em qual sistema operacional sua aplicação está rodando, nem em que tipo de máquina, configurações, etc.
- Sua aplicação roda sem nenhum envolvimento como sistema operacional! Sempre conversando apenas com a Java Virtual Machine (JVM).
- A JVM, ela pode decidir onde é melhor alocar a memória, entre outros. Uma JVM isola totalmente a aplicação do sistema operacional. Se uma JVM termina abruptamente, só as aplicações que estavam rodando nela irão terminar: isso não afetará outras JVMs que estejam rodando no mesmo computador, nem afetará o sistema operacional.
Write once, run anywhere
Escreva uma vez, execute em qualquer lugar
Ambientes e ferramentas de Desenvolvimento Java
- A tecnologia java fornece como ambiente de desenvolvimento um grande conjunto de ferramentas que engloba: um compilador, um interpretador, um gerador de documentação, ferramenta de empacotamento de classes de arquivos e outros
Java Runtime Evironment (JRE)
- Ambiente de execução Java, formado pela JVM e bibliotecas, tudo que você precisa para executar uma aplicação Java
Java Virtual Machine (Jvm)
- É a máquina virtual Java, ela é instalada junto com a JRE
Java Development Kit (JDK)
- É um pacote para desenvolvedores programarem suas aplicações em Java, possuindo vários utilitários, inclusive compilador e bibliotecas.
Meu Primeiro Programa Java
- Para compilar e executar um programa Java, devemos construir um arquivo com o código fonte que deve ter uma extensão .java. Em seguida um arquivo .class é gerado. Este arquivo é um bytecode no qual será lido e executado pela máquina virtual (JVM).
Meu Primeiro Programa Java
public class Hello World {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}- Salve o arquivo como HelloWorld.java
- Abra o terminal e execute o seguinte comando javac HelloWorld.java
- Se não aconteceu nada é porque funcionou não se preocupe
- Em seguida execute o seguinte comando no terminal java HelloWorld
- Observe o Resultado
Integrated Development Environment (IDE)
- É um programa de computador que reune características e ferramentas de apoio ao desenvolvimento de software com objetivo de agilizar este processo.
NetBeans
- É um ambiente de desenvolvimento integrado e está disponível para Windows, Mac e Linux. O projeto NetBeans consiste em um IDE de códigofonte aberto e uma plataforma de aplicações que
permitem que os desenvolvedores criem rapidamente aplicativos web, corporativos, desktop e aplicações móveis utilizando a plataforma Java, bem como JavaFX, PHP, JavaScript e Ajax Ruby e Ruby on Rails , Groovy e Grails, e C / C + +.

-
O projeto do NetBeans é apoiado por uma vibrante comunidade de desenvolvedores e oferece uma extensa documentação e
treinamento de recursos, bem como uma diversificada seleção de terceiros plugins .
Eclipse
- É uma IDE para o desenvolvimento aplicações Java, ele também pode ser usado para o desenvolvimento de aplicações utilizando outras linguagens como PHP, C++, etc. O Ambiente de desenvolvimento multilinguagens de programação cujo projeto é patrocinado pela IBM.

Bluej
- BlueJ é um ambiente de desenvolvimento java projetado especificamente para o ensino em um nível introdutório. BlueJ foi projetado e implementado pelas equipes das universidades Monash.
- O BlueJ é um excelente ambiente para o fim a que se destina: a aprendizagem da programação orientada pelos objetos utilizando a linguagem Java.
Aula 02
Variáveis primitivas e controle de fluxo
Declarando e usando variáveis
- Podemos declarar variáveis e usá-las. Em Java, toda variável tem um tipo que não pode ser mudado, uma vez que declarado:
tipoDaVariavel nomeDaVariavel;
int idade;
idade = 15;
System.out.println(idade);Tipos Primitivos
- A linguagem Java utiliza oito tipos primitivos de dados e um tipo especial. Esses tipos primitivos podem ser utilizados para declarar constantes ou variáveis utilizadas em programas Java. Os tipos primitivos estão divididos em quatro categorias:
- Lógicos
- Textuais
- Numéricos inteiros
- Numéricos de ponto flutuante.
Tipos Primitivos

Operadores
Produzem novos valores a partir de um ou mais valores. O resultado da
maioria das operações é um valor boleano ou numérico.


Operadores de comparação
- São utilizados dois operadores de comparação(chamados também de operadores de igualdade ou desigualdade) que compara dois itens semelhantes e retornam um valor booleano que representa o que é verdadeiro sobre os dois itens serem iguais.
int x = 21;
int y = 21;
if(x == y){
System.out.println("O Valor de x é igual ao valor de Y");
}Incremento e decremento
- São os operadores que nos permitem incrementar as variáveis em uma unidade. Podem ser usados diante ou atrás da variável dependendo das necessidades, ou seja, se precisarmos que se incremente ou vice-versa antes de utilizar ou o contrário.
int x = 5;
x++;
System.out.println("Pós incremento");
++x;
System.out.println("Pré incremento");
x--;
System.out.println("Pós decremento");
--x;
System.out.println("Pré decremento");
Casting e promoção
- Alguns valores são incompatíveis se você tentar fazer uma atribuição direta. Enquanto um número real costuma ser representado emuma variável do tipo double, tentar atribuir ele auma variável int não funciona.
Vamos fazer um teste
double d = 3.1415;
int i = d;
//Será que compila??
double d = 5;
int i = d;
// E agora?
int i = 5;
double d2 = i;Title Text
double d3 = 3.14;
int i = (int) d3;
long x = 10000;
int i = (int) x;
- Às vezes, precisamos que um número quebrado seja arredondado e armazenado num número inteiro. Para fazer isso sem que haja o erro de compilação, é preciso ordenar que o número quebrado seja moldado (casted) como um número inteiro. Esse processo recebe o nome de casting.
Casting Possíveis

Controle de fluxo
- As estruturas de controle definem a sequência de execução das instruções. Podem ser divididas em seleção, repetição e sequência.
Comando if
Comando if
if (condicaoBooleana) {
codigo;
}Exemplo
int idade = 15;
if (idade < 18) {
System.out.println("Não pode entrar");
}Comando If-Else
Exemplo
int idade = 15;
if (idade < 18) {
System.out.println("Não pode entrar");
} else {
System.out.println("Pode entrar");
}operadores Lógicos
- Expressões lógicas são aquelas que realizam uma operação lógica (ou, e, não, etc...) e retorna verdadeiro ou falso.

Exemplo
int idade = 15;
boolean amigoDoDono = true;
if (idade < 18 || amigoDoDono == false) {
System.out.println("Não pode entrar");
}
else {
System.out.println("Pode entrar");
}Switch e case

Exemplo
int menu = 0;
switch(menu){
case 1 : System.out.println("Últimas ligações"); break;
case 2 : System.out.println("Ligações perdidas"); break;
case 3 : System.out.println("Configurações"); break;
case 4 : System.out.println("Vídeos / Imagens"); break;
default : System.out.println("Mensagens"); break;While
- É um comando usado para fazer um laço (loop), isto é, repetir um trecho de código algumas vezes. A ideia é que esse trecho de código seja repetido enquanto uma determinada condição permanecer verdadeira.
int idade = 15;
while (idade < 18) {
System.out.println(idade);
idade = idade + 1;
}dO wHILE
- A declaração dowhile é similar ao while. As instruções dentro do laço dowhile serão executadas pelo menos uma vez. Inicialmente, as instruções dentro do laço dowhile
são executadas. Então, a condição na expressão lógica é avaliada. Se for verdadeira, as instruções dentro do laço dowhile serão executadas novamente.
int x = 0;
do {
System.out.println("Loop do While");
x++;
} while (x < 5);Controle de fluxo
- A ideia é a mesma do while: fazer um trecho de código ser repetido enquanto uma condição continuar verdadeira. Mas além disso, o for isola também um espaço para inicialização de variáveis e o modificador dessas variáveis. Isso faz com que quem mais legíveis, as variáveis que são relacionadas ao loop:
for (int i = 0; i < 10; i = i + 1) {
System.out.println("olá!");
}for (int i = x; i < y; i++) {
if (i % 19 == 0) {
System.out.println("Achei um número divisível por 19 entre x e y");
break;
}
}Exercícios de Revisão
- Imprima todos os números de 150 a 300.
- Imprima a soma de 1 até 100.
- Imprima todos os múltiplos de 3, entre 1 e 100.
- Imprima os primeiros números da série de Fibonacci até passar de 100. A série de Fibonacci é a seguinte: 0, 1, 1, 2, 3, 5, 8, 13, 21, etc... Para calculá-la, o primeiro elemento vale 0, o segundo vale 1, daí por diante, o n-ésimo elemento vale o (n-1)-ésimo elemento somado ao (n-2)-ésimo elemento (ex: 8 = 5 + 3).
Aula 03
Programação Orientada à Objetos
Programação Orientada à objetos
- Orientação a objetos é uma maneira de programar que ajuda na organização na escrita do código.
Criando um objeto
- Para facilitar o nosso entendimento vamos criar um sistema simples de um banco.
- Vamos analisar e verificar o que temos em um banco.
- O mais importante do banco é que todos eles tem conta.
- Analisando a conta de um banco
- Número da conta
- Nome do dono da Conta
- Saldo
- Limite
- O que a conta faz?
- saca uma quantidade x
- deposita uma quantidade x
- imprime o nome do dono da conta
- devolve o saldo atual
- transfere uma quantidade x para uma outra conta y
- devolve o tipo de conta
Criando um objeto

Criando uma classe
public class Conta {
int numero;
String dono;
double saldo;
double limite;
}Criando a classe principal
public class Programa {
public static void main(String[] args) {
Conta minhaConta;
minhaConta = new Conta();
minhaConta.dono = "Duke";
minhaConta.saldo = 1000.0;
System.out.println("Saldo atual: " + minhaConta.saldo);
}
}métodos
- Declararemos o que cada conta faz e como isto é feito - os comportamentos que cada classe tem, isto é, o que ela faz. Por exemplo, de que maneira que uma Conta saca dinheiro? Especicaremos isso dentro da própria classe Conta, e não em um local desatrelado das informações da própria Conta.
Métodos
public class Conta {
int numero;
String dono;
double saldo;
double limite;
void saca(double quantidade) {
double novoSaldo = this.saldo - quantidade;
this.saldo = novoSaldo;
}
}Métodos
public class Conta {
int numero;
String dono;
double saldo;
double limite;
void saca(double quantidade) {
double novoSaldo = this.saldo - quantidade;
this.saldo = novoSaldo;
}
void deposita(double quantidade) {
this.saldo += quantidade;
}
}Testando a Classe principal
public class Programa {
public static void main(String[] args) {
// criando a conta
Conta minhaConta;
minhaConta = new Conta();
// alterando os valores de minhaConta
minhaConta.dono = "Duke";
minhaConta.saldo = 1000;
// saca 200 reais
minhaConta.saca(200);
// deposita 500 reais
minhaConta.deposita(500);
System.out.println(minhaConta.saldo);
}
}métodos com retorno
- Um método sempre tem que denir o que retorna, nem que dena que não há retorno, como nos exemplos anteriores onde estávamos usando o void.
método com retorno
public class Conta {
int numero;
String dono;
double saldo;
double limite;
boolean saca(double valor) {
if (this.saldo < valor) {
return false;
} else {
this.saldo = this.saldo - valor;
return true;
}
}
void deposita(double quantidade) {
this.saldo += quantidade;
}
}Objetos são acessados por referência
- Quando declaramos uma variável para associar a um objeto, na verdade, essa variável não guarda o objeto, e sim uma maneira de acessá-lo, chamada de referência.
public static void main(String args[]) {
Conta c1;
c1 = new Conta();
Conta c2;
c2 = new Conta();
}Objetos são acessados por referência
Qual seria o resultado?
class TestaReferencias {
public static void main(String args[]) {
Conta c1 = new Conta();
c1.deposita(100);
Conta c2 = c1; // linha importante!
c2.deposita(200);
System.out.println(c1.saldo);
System.out.println(c2.saldo);
}
}Conclusão
e agora?
public static void main(String args[]) {
Conta c1 = new Conta();
c1.dono = "Duke";
c1.saldo = 227;
Conta c2 = new Conta();
c2.dono = "Duke";
c2.saldo = 227;
if (c1 == c2) {
System.out.println("Contas iguais");
}
}Atividade
- Desenvolva um métoda transfere no seu sistema do banco.
- Crie um novo projeto Java chamado "Atividade prática"
- Crie uma classe chamado Carro
- Nesta classe coloque os seguintes atributos
- String Cor
- String modelo
- double velocidadeAtual
- double velocidadeMaxima
- Crie um método que indica que o carro está ligado
- Crie um método acelera
- Crie um método pegaMArcha indicando a marcha do carro de acordo com a velocidade
- Crie uma classe chamado Carro
Atividade
- Crie um método pegaMArcha indicando a marcha do carro de acordo com a velocidade.
- Se a velocidade for menor que 0 retorne -1
- Se a velocidade for maior igual 0 e menor que 20 retorne 1
- Se a velocidade for maior igual 20 e menor que 40 retorne 2
- Se a velocidade for maior igual 40 e menor que 60 retorne 3
- Se a velocidade for maior igual 60 e menor que 80 retorne 4
- Se a velocidade for maior igual 80 e menor que 100 retorne 5
Atividade
public class TestaCarro {
public static void main(String[] args){
Carro meuCarro = new Carro();
meuCarro.cor = "Verde";
meuCarro.modelo = "Fusca";
meuCarro.velocidadeAtual = 25;
meuCarro.velocidadeMaxima = 120;
//liga o carro
meuCarro.liga();
//acelera o carro
meuCarro.acelera(35);
System.out.println("O carro está com: " +meuCarro.velocidadeAtual+" km/h");
//Marcha do Carro
meuCarro.pegaMarcha();
}
}- Crie a classe testaCarro e faça de acordo com o código abaixo:
Aula 04
Arrays
Imaginemos um seguinte problema
- Faremos a seguinte declaração de variáveis de idade
int idade1;
int idade2;
int idade3;
int idade4;- Isso pode se tornar um problema quando precisamos mudar a quantidade de variáveis a serem declaradas de acordo com um parâmetro.
Vetor array
- Uma array é sempre um objeto, portanto, a variável idades é uma referência.
int[] idades;- Criando um objeto-array
idades = new int[10];
//acessando a posição do array
idades[5] = 10;Para entender melhor

Erro de exception
- No Java, os índices do array vão de 0 a n-1, onde n é o tamanho
dado no momento em que você criou o array. Se você tentar acessar uma posição fora desse alcance, um erro ocorrerá durante a execução.

Arrays de referência
- Ao criamos um objeto com array as referências do objeto criado fica no array.
Conta[] minhasContas;
minhasContas = new Conta[10];
// também pode ser desse jeito
Conta[] minhasContas = new Conta[10];- Aqui não foi criado nenhuma conta, apenas foram criados 10 espaços para guardar referências de uma conta.
Para entender melhor

Percorrer uma array
public static void main(String args[]) {
int[] idades = new int[10];
for (int i = 0; i < 10; i++) {
idades[i] = i * 10;
}
for (int i = 0; i < 10; i++) {
System.out.println(idades[i]);
}
}enhanced-for
public static void main(String args[]) {
int[] idades = new int[10];
for (int i = 0; i < 10; i++) {
idades[i] = i * 10;
}
// imprimindo toda a array
for (int x : idades) {
System.out.println(x);
}
}Aula 05
Modificadores de acesso e atributos de classe
Controle de acesso
- Os modificadores de acesso em Java, também conhecidos como modificadores de visibilidade, permitem controlar o acesso a classes, atributos, métodos e construtores.
Controle de acesso
- Uma classe é um projeto de um objeto
- Objeto moto pode acessar o método acelera do objeto carro?
- Um atributo sendo acessado ou modificado por qualquer classe, torna-se o seu controle descentralizado. Com isso a manutenção torna-se menos eficiente.
- Usando o controle de acesso, o atributo irá possuir um controle centralizado, tornando-se mais eficiente a sua manutenção.
Modificador de acesso public
- Quando o modificador de acesso public é usado em uma classe, ela fica visível (acessível) para todas as outras classes.
public class Produto {
}
Atributo privado
class Funcionario {
private double salario ;
void aumentaSalario ( double aumento ) {
// lógica para aumentar o salário
}
}atributo privado
- Um atributo privado só pode ser acessado ou alterado por código escrito dentro da classe na qual ele foi definido. Se algum código fora da classe Funcionário tentar acessar ou alterar o valor do atributo privado salario, um erro de compilação será gerado.
Encapsulamento
- Esconder todos os membros de uma classe, além de esconder como funcionam as rotinas do nosso sistema.
- Encapsular é fundamental para que seu sistema seja suscetível a mudanças: não precisaremos mudar uma regra de negócio em vários lugares, mas sim em apenas um único lugar, já que essa regra está encapsulada.
Getters e Setters
- O modificador private faz com que ninguém consiga modificar, nem mesmo ler, o atributo em questão. Com isso, temos um problema: como fazer para mostrar o saldo de uma Conta, já que nem mesmo podemos acessá-lo para leitura?
Getters e setters
class Conta {
private double saldo;
private double limite;
private Cliente titular;
public double getSaldo() {
return this.saldo;
}
public void setSaldo(double saldo) {
this.saldo = saldo;
}
public double getLimite() {
return this.limite;
}
public void setLimite(double limite) {
this.limite = limite;
}
public Cliente getTitular() {
return this.titular;
}
public void setTitular(Cliente titular) {
this.titular = titular;
}
}Construtor
- O construtor da classe é um bloco declarado com o mesmo nome que a classe.
- Quando usamos a palavra chave new, estamos construindo um objeto. Sempre quando o new é chamado, ele executa o construtor da classe.
class Conta {
int numero;
Cliente titular;
double saldo;
double limite;
// construtor
Conta() {
System.out.println("Construindo uma conta.");
}
}Construtor
- Um construtor pode receber um argumento, podendo assim inicializar algum tipo de informação.
class Conta {
int numero;
Cliente titular;
double saldo;
double limite;
// construtor
Conta(Cliente titular) {
this.titular = titular;
}
}Construtor
Cliente carlos = new Cliente();
carlos.nome = "Carlos";
Conta c = new Conta(carlos);
System.out.println(c.titular.nome);Aula 06
Herança e polimorfismo
Herança
- Adiciona a capacidade de uma classe filha estender/herdar atributos e métodos de uma classe mãe.
Classe mãe
Classe filha
classe mãe
class Funcionario {
String nome;
String cpf;
double salario;
}Classe filha
class Gerente extends Funcionario {
int senha;
int numeroDeFuncionariosGerenciados;
public boolean autentica(int senha) {
if (this.senha == senha) {
System.out.println("Acesso Permitido!");
return true;
} else {
System.out.println("Acesso Negado!");
return false;
}
}
}Herança
- Dizemos que a classe Gerente herda todos os atributos e métodos da classe mãe, no nosso caso, a Funcionario. Para ser mais preciso, ela também herda os atributos e métodos privados, porém não consegue acessá-los diretamente.
- Para acessar um membro privado na filha indiretamente, seria necessário que a mãe expusesse um outro método visível que invocasse esse atributo ou método privado.
Atributo protect
- O atributo protect só pode ser acessado (visível) pela própria classe e por suas subclasses.
class Funcionario {
protected String nome;
protected String cpf;
protected double salario;
}
Uma classe pode ter várias filhas, mas pode ter apenas uma mãe, é a chamada herança simples do java.
Reescrevendo o código
- No Java, quando herdamos um método, podemos alterar seu comportamento. Podemos reescrever (reescrever,
sobrescrever, override) este método.
class Gerente extends Funcionario {
int senha;
int numeroDeFuncionariosGerenciados;
public double getBonificacao() {
return this.salario * 0.15;
}
}Polimorfismo
- É a capacidade de um objeto poder ser referenciado de várias formas.
- Na herança, vimos que todo Gerente é um Funcionário, pois é uma extensão deste. Podemos nos referir a um Gerente como sendo um Funcionário. Se alguém precisa falar com um Funcionário do banco, pode falar com um Gerente! Porque? Pois Gerente é um Funcionário. Essa é a semântica da herança.
UML
Linguagem de Modelagem unificada
UML
- Surgiu da fusão de três grandes métodos, do BOOCH, OMT (Rumbaugh) e OOSE (Jacobson). Esta linguagem de modelagem não é proprietária, não é um método de desenvolvimento. Têm como papel auxiliar a visualizar o desenho e a comunicação entre objetos. Ela permite que desenvolvedores visualizem os produtos de seu trabalho em diagramas padronizados, e é muito usada para criar modelos de sistemas de software.
- A Linguagem Unificada de Modelagem possui diagramas (representações gráficas do modelo parcial de um sistema) que são usados em combinação, com a finalidade de obter todas as visões e aspectos do sistema.
Diagramas estruturais
- De Classe: Este diagrama é fundamental e o mais utilizado na UML e serve de apoio aos outros diagramas. O Diagrama de Classe mostra o conjunto de classes com seus atributos e métodos e os relacionamentos entre classes.

Diagramas estruturais
- De Objeto: O diagrama de objeto esta relacionado com o diagrama de classes e, é praticamente um complemento dele. Fornece uma visão dos valores armazenados pelos objetos de um Diagrama de Classe em um determinado momento da execução do processo do software.

Diagramas estruturais
- De Componentes: Está associado à linguagem de programação e tem por finalidade indicar os componentes do software e seus relacionamentos.

Diagramas estruturais
- De implantação: Determina as necessidades de hardware e características físicas do Sistema.
- De Pacotes: Representa os subsistemas englobados de forma a determinar partes que o compõem.
- De Estrutura: Descreve a estrutura interna de um classificador.
Diagrama estrutural de Classe
- Graficamente, as classes são representadas por retângulos incluindo nome, atributos e métodos.
NomeDaClasse
+ Atributo1
- Atributo2
# Atributo3
+ Método1
- Método2
Visibilidade
- + público: visível em qualquer classe de qualquer pacote
- # protegido: visível para classes do mesmo pacote
- - privado: visível somente para classe
Relacionamentos
- Nome: descrição dada ao relacionamento (faz, tem, possui,...)
- Navegabilidade: indicada por uma seta no fim do relacionamento
- Multiplicidade: 0..1, 0..*, 1, 1..*, 2, 3..7
- Tipo: associação (agregação, composição), generalização e dependência
- Papéis: desempenhados por classes em um relacionamento
Realcionamentos
Relacionamento de associação
- Uma associação é um relacionamento estrutural que indica que os objetos de uma classe estão vinculados a objetos de outra classe.
- Uma associação é representada por uma linha sólida conectando duas classes.
Indicadores de Multiplicidade
- 1 Exatamente um
- 1..* Um ou mais
- 0..* Zero ou mais (muitos)
- * Zero ou mais (muitos)
- 0..1 Zero ou um
- m..n Faixa de valores (por exemplo: 4..7)
Exemplo
- Um Estudante pode ser
- um aluno de uma Disciplina
- e um jogador da Equipe de Futebol
- Cada Disciplina deve ser cursada por no mínimo 1 aluno
- Um aluno pode cursar de 0 até 8 disciplinas
RELACIONAMENTO DE Agregação
- É um tipo especial de associação
- Utilizada para indicar “todo-parte”
- Um objeto “parte” pode fazer parte de vários objetos “todo”
Composição
- É uma variante semanticamente mais “forte” da agregação
- Os objetos “parte” só podem pertencer a um único objeto “todo” e têm o seu tempo de vida coincidente com o dele
- Quando o “todo” morre todas as suas “partes” também morrem
Diagramas Comportamentais
- De Caso de Uso (Use Case): Geral e informal para fases de levantamento e análise de Requisitos do Sistema.
- Utilizam como primitivas Atores, Casos de Uso
e Relacionamentos. Como ocorre tambü m com outros diagramas.
Diagramas Caso de Uso
- Atores são representacões de entidades externas mas que interagem com o sistema durante sua execução. Basicamente, a interação de atores com o sistema se da através de comunicações (troca de mensagens). As entidades externas representadas pelos atores podem ser :
- Pessoas: usuário, secretária, aluno, professor, administrador, etc.
- Dispositivos: impressora, máquina ou outro equipamentos externo.
- Hardwares: placa de modem, placa de controle, etc.
- Software: sistema de banco de dados, aplicativos, etc.
Atores
Atores
Relação entre casos de usos e atores
Relação entre casos de usos e atores
Collections framework
simplificando arrays
Como sabemos
- Não podemos redimensionar arrays em java
- É impossível buscar diretamente por um determinado elemento cujo índice não se sabe;
API collections
- É robusta e possui diversas classes que representam estruturas de dados avançadas.
Listas
- É uma coleção que permite elementos duplicados e mantém uma ordenação específica entre os elementos.
- Os elementos serão encontrados em uma ordem pré-determinada, definida na hora da inserção dos mesmos.
- A API de Collections traz a interface java.util.List, que específica o que uma classe deve ser capaz de fazer para ser uma lista.
ArrayList
- trabalha com um array interno para gerar uma lista. Ela é mais rápida na pesquisa do que sua concorrente, a LinkedList, que é mais rápida na inserção e remoção de itens nas pontas.
List lista = new ArrayList();
lista.add("Manoel");
lista.add("Joaquim");
lista.add("Maria");Criando uma lista de objetos
ContaCorrente c1 = new ContaCorrente();
c1.deposita(100);
ContaCorrente c2 = new ContaCorrente();
c2.deposita(200);
ContaCorrente c3 = new ContaCorrente();
c3.deposita(300);
List contas = new ArrayList();
contas.add(c1);
contas.add(c3);
contas.add(c2);
System.out.println(contas.size());
for (int i = 0; i < contas.size(); i++) {
ContaCorrente cc = (ContaCorrente) contas.get(i);
System.out.println(cc.getSaldo());
}Outros métodos
- remove() - que recebe um objeto que se deseja remover da lista
- contains() - que recebe um objeto como argumento e devolve true ou false, indicando se o elemento está ou não na lista
Conjunto Java.util.set
- Funciona de forma análoga aos conjuntos da matemática, ele é uma coleção que não permite elementos duplicados.
- Outra característica fundamental dele é o fato de que a ordem em que os elementos são armazenados pode não ser a ordem na qual eles foram inseridos no conjunto. A interface não dene como deve ser este comportamento.
Tal ordem varia de implementação para implementação.
Hashset
import java.util.HashSet;
import java.util.Set;
public class Cargos {
public static void main(String[] args) {
Set<String> cargos = new HashSet<>();
cargos.add("Gerente");
cargos.add("Diretor");
cargos.add("Presidente");
cargos.add("Secretária");
cargos.add("Funcionário");
cargos.add("Diretor"); // repetido!
// imprime na tela todos os elementos
System.out.println(cargos);
}
}Percorrer uma coleção
- Se for uma lista pode-se usar um laço for invocando um método get para cada elemento.
import java.util.ArrayList;
import java.util.List;
public class Lista {
public static void main(String[] args) {
List lista = new ArrayList();
lista.add("Manoel");
lista.add("Joaquim");
lista.add("Maria");
lista.add("João");
lista.add("Raimundo");
lista.add("José");
lista.add("Francisco");
for (int i = 0; i < lista.size(); i++) {
System.out.println(lista.get(i));
}
}
}Percorrer uma coleção
- Set não possui um método para pegar o primeiro, o segundo ou o quinto elemento do conjunto, já que um conjunto não possui o conceito de “ordem”.
import java.util.HashSet;
import java.util.Set;
public class Linguagem {
public static void main(String[] args) {
Set<String> conjunto = new HashSet<>();
conjunto.add("Java");
conjunto.add("PHP");
conjunto.add("Vraptor");
conjunto.add("Scala");
conjunto.add("Ruby");
conjunto.add("Angular");
for(String palavra : conjunto){
System.out.println(palavra);
}
}
}
Iterator
- Toda coleção fornece acesso a um iterator, um objeto que implementa a interface Iterator, que conhece internamente
a coleção e dá acesso a todos os seus elementos.
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class Lista2 {
public static void main(String[] args) {
Set<String> lista = new HashSet<>();
lista.add("Manoel");
lista.add("Joaquim");
lista.add("Maria");
lista.add("João");
lista.add("Raimundo");
lista.add("José");
lista.add("Francisco");
Iterator<String> i = lista.iterator();
while (i.hasNext()) {
// recebe a palavra
String palavra = i.next();
System.out.println(palavra);
}
}
}Mapas
- Um mapa é composto por um conjunto de associações entre um objeto chave a um objeto valor.

MApa
ContaCorrente c1 = new ContaCorrente();
c1.deposita(10000);
ContaCorrente c2 = new ContaCorrente();
c2.deposita(3000);
// cria o mapa
Map<String, ContaCorrente> mapaDeContas = new HashMap<>();
// adiciona duas chaves e seus respectivos valores
mapaDeContas.put("diretor", c1);
mapaDeContas.put("gerente", c2);
ContaCorrente contaDoDiretor = mapaDeContas.get("diretor");
System.out.println(contaDoDiretor.getSaldo());Properties
- Um mapa importante é a tradicional classe Properties, que mapeia strings e é muito utilizada para a configuração de aplicações.
Properties config = new Properties();
config.setProperty("database.login", "scott");
config.setProperty("database.password", "tiger");
config.setProperty("database.url","jdbc:mysql:/localhost/teste");
String login = config.getProperty("database.login");
String password = config.getProperty("database.password");
String url = config.getProperty("database.url");
DriverManager.getConnection(url, login, password);Pacote java.io
Entrada e saída de dados
API java.io
- Assim como todo o resto das bibliotecas em Java, a parte de controle de entrada e saída de dados (conhecido como io) é orientada a objetos e usa os principais conceitos mostrados até agora: interfaces, classes abstratas e polimorfismo.
- A ideia atrás do polimorfismo no pacote java.io é de utilizar uxos de entrada (InputStream) e de saída (OutputStream) para toda e qualquer operação, seja ela relativa a um arquivo, a um campo blob do banco de dados, a uma conexão remota via sockets, ou até mesmo às entrada e saída padrão de um programa (normalmente o teclado e o console).
Classe inputstream
- A classe InputStream é genérica e modela um fluxo de entrada sem uma fonte específica definida. Diversas classes herdam direta ou indiretamente da classe InputStream para especificar um determinado tipo de fonte de dados.
class TestaEntrada {
public static void main(String[] args) throws IOException {
InputStream is = new FileInputStream("arquivo.txt");
int b = is.read();
}
}Classe Scanner
- Possui métodos mais sofisticados para obter os dados de uma entrada.
- A classe Scanner tem como objetivo separar a entrada dos textos em blocos, gerando os conhecidos tokens, que são sequências de caracteres separados por delimitadores que por padrão correspondem aos espaços em branco, tabulações e mudança de linha.
InputStream entrada = System .in;
Scanner scanner = new Scanner ( entrada );
while ( scanner . hasNextLine ()) {
String linha = scanner . nextLine ();
System . out. println ( linha );
}Exemplo
import java.io.InputStream;
import java.util.Scanner;
public class LeituraDoTeclado {
public static void main(String[] args) {
InputStream teclado = System.in;
Scanner scanner = new Scanner(teclado);
while (scanner.hasNextLine()){
String linha = scanner.nextLine();
System.out.println(linha);
}
scanner.close();
}
}PrintStream
- A classe PrintStream faz parte da biblioteca de entrada e saída de recursos dentro da linguagem Java. A classe PrintStream fornece funcionalidade de saída de dados em conjunto com outros objectos de saída
Scanner s = new Scanner(System.in);
PrintStream ps = new PrintStream("arquivo.txt");
while (s.hasNextLine()) {
ps.println(s.nextLine());
}Sockets
Comunicação em rede
TCP
- Da necessidade de dois computadores se comunicarem, surgiram diversos protocolos que permitissem tal troca de informação: o protocolo mais conhecido e usado é o TCP (Transmission Control Protocol).
Porta
- Diversos computadores podem se conectar a um só, mas, na realidade, é muito comum encontrar máquinas clientes com uma só conexão física. Então, como é possível se conectar a dois pontos? Como é possível ser conectado por diversos pontos?
- Como existe o IP (Protocol Internet) para identicar uma máquina, a porta é a solução para identicar diversas aplicações em uma máquina. Esta porta é identificada por número bytes que varia de 0 a 65535. Se todas as portas de uma máquina estiverem ocupadas, não é possível se conectar a ela enquanto nenhuma for liberada.
sERVIDOR
- Iniciando um modelo de servidor de chat, o serviço do computador que funciona como base deve, primeiro, abrir uma porta e ficar ouvindo até alguém tentar se conectar.
sERVIDOR
import java.net.*;
public class Servidor {
public static void main(String args[]) throws IOException {
ServerSocket servidor = new ServerSocket(12345);
System.out.println("Porta 12345 aberta!");
Socket cliente = servidor.accept();
System.out.println("Nova conexão com o cliente " +
cliente.getInetAddress().getHostAddress());
Scanner s = new Scanner(cliente.getInputStream());
while (s.hasNextLine()) {
System.out.println(s.nextLine());
}
s.close();
servidor.close();
cliente.close();
}
}Cliente
public class Cliente {
public static void main(String[] args)
throws UnknownHostException, IOException {
Socket cliente = new Socket("127.0.0.1", 12345);
System.out.println("O cliente se conectou ao servidor!");
Scanner teclado = new Scanner(System.in);
PrintStream saida = new PrintStream(cliente.getOutputStream());
while (teclado.hasNextLine()) {
saida.println(teclado.nextLine());
}
saida.close();
teclado.close();
cliente.close();
}
}Interface Gráfica com o usuário
- Também conhecido como GUI (Graphical User Interface), em Java, é feita através de bibliotecas de classes, sendo que a primeira a surgir foi a AWT(Abstract Window Toolkit).
- AWT surgiu já na versão 1.0, mas se tornou confiável a partir da versão 1.1.
- A partir da versão 2 do Java, a JFC (Java Foundation Classes) apresentou novos recursos para a construção da GUI das aplicações.
- Swing: biblioteca de classes extensão da AWT, onde são apresentados novos
componentes de interface
- Swing: biblioteca de classes extensão da AWT, onde são apresentados novos
Janela JFrame
import java.awt.Color;
import javax.swing.JFrame;
public class Tela {
public static void main(String[] args) {
JFrame tela = new JFrame("Primeira tela");
tela.setBounds(100, 100, 400, 300);
tela.getContentPane().setBackground(Color.RED);
tela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
tela.setLayout(null);
tela.setVisible(true);
}
}métodos
- SetBounds: trabalha com a localização e tamanho da tela, sendo a seguinte ordem: distância do canto esquerdo da tela, distância do topo da tela, largura e altura.
- getContentPane().setBackground(Color.RED): invoca o método que verifica qual é o campo de Content do JFrame, ou seja, a região onde não está o menu nem as bordas, e muda sua cor a partir do método setBackground.
- setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE): Aqui, determina qual a ação a executar quando este JFrame for fechado. No caso, ele fecha o programa todo, num efeito de BREAK. A instrução DISPOSE_ON_CLOSE apenas levará o JFrame a fechar sem derrubar o programa todo.
métodos
-
setLayout(null): Aqui, escolhe um Layout para o JFrame. No exemplo não é escolhido nenhum layout. Existem Layouts prontos para JFrames, onde os botões ficam dispostos em forma de fileira, ou nos cantos, ou expandidos. Se quisermos desenhar nossa tela com liberdade para fazê-la bonita, temos que escolher o NULL;
tela.setVisible(true): Depois de preparado, o JFrame pode já ficar visível. Este passo vem no final de toda a sua montagem.
Jlabel
- É um pequeno componente com o qual colocamos pedaços de texto sem nenhuma função, a não ser a de indicar para quê servem os campos de uma tela qualquer.
import java.awt.Color;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class MinhaJanela extends JFrame {
private JLabel lblNome;
public MinhaJanela(String titulo){
super(titulo);
this.lblNome = new JLabel("Frase indicativa");
this.lblNome.setBounds(100, 100, 200, 30);
super.getContentPane().add(this.lblNome);
super.setBounds(100, 100, 400, 300);
super.getContentPane().setBackground(Color.GRAY);
super.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
super.setLayout(null);
super.setVisible(true);
}
}
JButton
- O JButton poderá ser instanciado de três formas diferentes:
- JButton( ) – aqui, teremos depois que rodar um método setText(“algum texto”) para dar-lhe um conteúdo(um conteúdo que aparece para o usuário).
- JButton(String) – aqui, escrevemos algum texto para aparecer no botão e o usuário saber do que se trata.
- JButton(icon) – neste caso, adicionamos uma figura ao botão para darlhe uma aparência personalizada.
Jbutton
import java.awt.Color;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class MinhaJanela extends JFrame {
private JLabel lblNome;
private JButton btnOk;
public MinhaJanela(String titulo){
super(titulo);
super.setLayout(null);
this.lblNome = new JLabel("Java Com Banco de Dados");
this.lblNome.setBounds(100, 100, 200, 30);
this.btnOk = new JButton("OK");
//definindo posição do Jbutton instanciado
this.btnOk.setBounds(100, 150, 100, 30);
//Adicionando Jlabel e JButton na Janela
super.getContentPane().add(this.lblNome);
super.getContentPane().add(this.btnOk);
//Definindo janela
super.setBounds(100, 100, 400, 300);
super.getContentPane().setBackground(Color.GRAY);
super.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
super.setVisible(true);
}
}JTextField
- É uma caixa utilizada para que o usuário possa escrever um texto de uma linha só. Tratasse de um componente bastante simples, que tem basicamente as mesmas especificações dos que acabamos de ver: setBounds, setBackground, etc.
JTEXTFIELD
private JTextField caixa;
this.caixa = new JTextField();
//posiciona a caixa dentro da janela
this.caixa.setBounds(100, 50, 100, 30);
//cor de fundo
this.caixa.setBackground(Color.RED);
//cor de Frente
this.caixa.setForeground(Color.WHITE);
super.getContentPane().add(this.caixa);Métodos jtextfield
- O tratamento do texto de um JTextField dar-se-á por meio de dois métodos bastante simples:
- getText() – servirá para capturar o quê o usuário digitou no campo.
- setText() – servirá para determinarmos que texto deve ir no campo. Muito útil quando se abre um registro de um banco de dados e o campo JTextField deve receber um campo de registro para alteração.
Icon
- A classe Icon tem um uso bastante simples, mas muito importante. Com ela, podemos carregar uma imagem (devidamente criada em um arquivo JPG ou PNG), para dentro do programa, utilizando esta imagem como quisermos.
Icon imagem = new ImageIcon(“arquivo.jpg”);
JButton botao = new JButton();
botao.setIcon(imagem);
JLabel rotulo = new JLabel();
rotulo.setIcon(imagem);Editando Fonte
//formatando fonte do texto
this.lblNome.setFont(new Font("Courier",Font.BOLD,18));
//formatando a fonte do botão
this.btnOk.setFont(new Font("Arial",Font.BOLD,30));JMenuBar, JMenu e JMenuItem
- Estas classes são utilizadas sempre em conjunto, para criar um menu na parte superior e deixar seu software com aquela facilidade de uso que os usuários modernos
exigem. - O objeto que serve de base é o JMenuBar, adicionado diretamente ao JFrame, e sobre ele vão todas as coisas. Ele é a barra clara no alto do JFrame, dentro da qual os menus
ficarão.
JMenuBar, JMenu e JMenuItem
import java.awt.Color;
import java.awt.Font;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JTextField;
public class MinhaJanela extends JFrame {
private JLabel lblNome;
private JButton btnOk;
private JTextField caixa;
private JMenuBar menu;
private JMenu menuarquivo;
private JMenu menuhelp;
private JMenu menudentro;
private JMenuItem itemnovo;
private JMenuItem itemsalvar;
private JMenuItem itemajuda;
private JMenuItem itemsobre;
private JMenuItem itempanico;
private JMenuItem itemterror;JMenuBar, JMenu e JMenuItem
public MinhaJanela(String titulo){
super(titulo);
super.setLayout(null);
//Criando a barra de menu
this.menu = new JMenuBar();
//adicionando o menu na janela
setJMenuBar(menu);
//criando menus
this.menuarquivo = new JMenu("Arquivo");
this.menuhelp = new JMenu("Help");
this.menudentro = new JMenu("Mais opções");
//criando itens de menu
this.itemnovo = new JMenuItem("Novo");
this.itemsalvar = new JMenuItem("Salvar");
this.itemajuda = new JMenuItem("Ajuda");
this.itemsobre = new JMenuItem("Sobre");
this.itempanico = new JMenuItem("CTRL+ALT+DEL");
this.itemterror = new JMenuItem("Tela Azul da Morte");
//adicionaros menus a barra de menu
this.menu.add(menuarquivo);
this.menu.add(menuhelp);
JMenuBar, JMenu e JMenuItem
//adicionando item de menu dentro de um menu
this.menuarquivo.add(itemnovo);
this.menuarquivo.add(itemsalvar);
this.menuhelp.add(itemajuda);
this.menuhelp.add(itemsobre);
this.menudentro.add(itempanico);
this.menudentro.add(itemterror);
this.menuarquivo.add(menudentro);JMenuBar, JMenu e JMenuItem
//criando um texto simples com Jlabel
this.lblNome = new JLabel("Java Com Banco de Dados");
//formatando fonte do texto
this.lblNome.setFont(new Font("Courier",Font.BOLD,18));
this.lblNome.setBounds(100, 100, 200, 30);
this.btnOk = new JButton("OK");
//formatando a fonte do botão
this.btnOk.setFont(new Font("Arial",Font.BOLD,30));
//definindo posição do Jbutton instanciado
this.btnOk.setBounds(100, 150, 100, 30);
//Cria um JTxtField
this.caixa = new JTextField();
//posiciona a caixa dentro da janela
this.caixa.setBounds(100, 50, 100, 30);
//cor de fundo
this.caixa.setBackground(Color.RED);
//cor de Frente
JMenuBar, JMenu e JMenuItem
this.caixa.setForeground(Color.WHITE);
//Adicionando Jlabel, JButton, JTextField na Janela
super.getContentPane().add(this.lblNome);
super.getContentPane().add(this.btnOk);
super.getContentPane().add(this.caixa);
//Definindo janela
super.setBounds(100, 100, 400, 300);
super.getContentPane().setBackground(Color.GRAY);
super.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
super.setVisible(true);
}
}Gerenciadores de Layout
- Gerenciamento de layout ( Layout Management ) é o processo de determinar o tamanho e a posição dos componentes na janela gráfica do programa. É ele o responsável por determinar onde o componente ficará, como ficará, qual o comportamento a ser tomado na hora de redimensionar a tela.
Gerenciadores de Layout
- BorderLayout
- BoxLayout
- FlowLayout
- GridBagLayout
- GridLayout
BorderLayout
import javax.swing.*;
import java.awt.*;
public class BorderLayout {
public static void main(String[] args) {
JFrame tela = new JFrame("Combo");
tela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
tela.setVisible(true);
JButton botao1 = new JButton("Botão 01");
JButton botao2 = new JButton("Botão 02");
JButton botao3 = new JButton("Botão 03");
JButton botao4 = new JButton("Botão 04");
JButton botao5 = new JButton("Botão 05");
tela.getContentPane().add(botao1, BorderLayout.NORTH);
tela.getContentPane().add(botao2, BorderLayout.CENTER);
tela.getContentPane().add(botao3, BorderLayout.WEST);
tela.getContentPane().add(botao4, BorderLayout.SOUTH);
tela.getContentPane().add(botao5, BorderLayout.EAST);
tela.pack();
}
}
Eventos
Listeners
ActionListener
- Tratase de uma classe que detecta se houve uma ação no objeto a que ela está associada (um botão, por exemplo), e
que, dependendo da ação executada, rodará uma função qualquer.
ACTIONLISTENER
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
public class Tela2 implements ActionListener {
private JButton botao;
public void janela(){
JFrame frame = new JFrame();
botao = new JButton();
//REGISTRA O EVENTO
botao.addActionListener(this);
frame.getContentPane().add(botao);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300,100);
frame.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent evento) {
botao.setText("Botão foi clicado!");
//ALTERA A FONTE
botao.setFont(new Font("SansSerif", Font.BOLD, 20));
}
public static void main(String[] args) {
Tela2 captura = new Tela2();
captura.janela();
}
}ACTIONLISTENER
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class Tela {
public static void main(String[] args) {
JFrame tela = new JFrame("Primeira tela");
JButton botao = new JButton("Aperte aqui");
tela.setBounds(100, 100, 400, 300);
botao.setBounds(100,100,150,35);
tela.getContentPane().setBackground(Color.RED);
tela.getContentPane().add(botao);
tela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ActionListener ac = new ActionListener() {
public void actionPerformed(ActionEvent e) {
if ("botao".equals(e.getActionCommand())) {
JOptionPane.showMessageDialog(null, "Apertou o botão!", "Olá!",
JOptionPane.INFORMATION_MESSAGE);
}
}
};
botao.setActionCommand("botao");
botao.addActionListener(ac);
tela.setLayout(null);
tela.add(botao);
tela.setVisible(true);
}
}FocusListener
- Se parece com o ActionListener em seu modo de construção, mas serve para detectar quando o foco (ou seja, o cursor, a seleção, não o ponteiro do mouse) está sobre um objeto ou não.
FocusListener
import java.awt.Color;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import javax.swing.JFrame;
import javax.swing.JTextField;
public class ListaFocuo {
public static void main(String[] args) {
final JFrame tela = new JFrame("Teste");
final JTextField tex = new JTextField();
final JTextField tex2 = new JTextField();
tela.setBounds(20, 20, 800, 600);
tex.setBounds(50, 50, 300, 35);
tex2.setBounds(50, 150, 300, 35);
FocusListener foc = new FocusListener(){
public void focusGained (FocusEvent e){
tex.setBackground(Color.RED);
}
public void focusLost (FocusEvent e){
tex.setBackground(Color.BLUE);
}
};
tex.addFocusListener(foc);
tela.setLayout(null);
tela.add(tex);
tela.add(tex2);
tela.setVisible(true);
}
}Java Com Banco de Dados
jdbc
Por que usar Banco de Dados
- Muitos sistemas precisam manter as informações com as quais eles trabalham.
- Para que esses dados sejam mantidos para sempre, esses sistemas geralmente guardam essas informações em um banco de dados.
Banco de Dados Relacionais
- Modela os dados de uma forma que eles sejam percebidos pelo usuário como tabelas, ou mais formalmente relações
Banco de Dados não Relacionais
- Não exigi esquemas de tabela fixa e, geralmente, não suportam instruções e operações de junção SQL
Persistência
- É o processo de armazenamento de dados no banco.
- A biblioteca de persistência em banco de dados relacionais do Java é chamada JDBC, e também existem diversas ferramentas do tipo ORM (Object Relational Mapping) que facilitam bastante o uso do JDBC.
Conexão com Java
- JDBC é um conjunto de classes e interfaces (API) escritas em Java que possibilitam o envio de instruções SQL para qualquer banco de dados relacional.
- http://dev.mysql.com/downloads/connector/j/
Curso Java Com Banco de Dados
By pakato
Curso Java Com Banco de Dados
Curso Java com Banco de Dados realizado na UTD.
- 162