Java & Orientação a Objetos
Variáveis primitivas 
Declarando uma variável: 
tipoDaVariavel nomeDaVariavel; 
Alguns tipos: 
int – para números inteiros 
double – para numeros inteiros e fracionados 
boolen – armazena um valor verdadeiro ou falso 
char – guarda somente UM caractere 
Exemplo: 
double d3 = 3.14; 
int i = (int) d3 //Exemplo de cast
If e Else 
• Sintaxe: 
if (condicaoBooleana) { 
codigo; 
} 
Exemplo: 
int idade = 15; 
if (idade < 18) { 
System.out.println("Não pode entrar"); 
}else{ 
System.out.println(“Entrada permitida”); 
}
While 
O While é um laço de código, usado para repetir um trecho determinadas 
vezes. Pode ser usado quando não se sabe essa quantidade. 
int idade = 15; 
while (idade < 18) { 
System.out.println(idade); 
idade = idade + 1; 
} 
For 
Semelhante ao While, o For executa um código enquanto uma situação for 
verdadeira, mas além disso também é possível inicializar a variável e o 
modificador. Tornando o código mais legível. 
Exemplo: 
for (int i = 0; i < 10; i ++) { 
System.out.println("olá!"); 
}
Orientação a Objeto 
• Maior reaproveitamento de código 
• Forma mais elegante e profissional de desenvolver o código 
• Facilita a manutenção 
• Facilita na leitura 
• Melhor divisão da estrutura do software 
• Polimorfismo
Arrays 
• Array é um conjunto de posições na memória que podem ser acessadas 
por um índice. 
• Array é util quando precisamos declarar diversas variáveis, e modificar a 
quantidade posteriormente. 
• Exemplo: 
int idade1; 
int idade2; 
int idade3; 
int idade4;
Modificadores de acesso 
• Na Orientação a Objeto é quase que obrigatório proteger os atributos da classe com 
private. 
• As vezes é necessário “esconder” alguns atributos 
• A validação de um atributo deve ser feito pela própria classe, assim facilitando e 
centralizando futuras mudanças no sistema. 
• Alguns métodos podem ser criados para auxiliar somente a sua própria classe, por 
isso não é necessário deixá-lo publico. 
• É uma boa prática de desenvolvimento sempre expor o mínimo de funcionalidades. 
• Exemplos de modificadores de acesso: 
Public – Pode ser usada por qualquer entidade que possa visualizar a classe que ela 
pertença. 
Private – Não podem ser acessados ou usados por nenhuma outra classe. 
Protected – Os métodos e atributos só podem ser acessados por outra classe caso 
esteja no mesmo pacote, usando herança. 
• Padrão(quando não é definido) – Da mesma forma que o modificador Protected. 
• Final – Quando é necessário “fechar” um método ou valor de variável, pra que não 
possa ser alterada. 
• Abstract – Aplicado somente em classes, onde não pode ser instanciada. 
• Static – Para criar uma variável que poderá ser usada por outra classe como uma 
variavel comum, sem ser necessário instanciar um objeto.
Construtores 
• Quando é necessário obrigar uma classe ou classe filha a definir os atributos no momento de 
instanciar, usa-se construtores para definir que atributos serão já inicializados. 
• Exemplo: 
class Conta { 
int numero; 
Cliente titular; 
double saldo; 
double limite; 
Conta (Cliente titular) { 
this.titular = titular; 
} 
Conta (int numero, Cliente titular) { 
this(titular); 
this.numero = numero; 
} 
}
Getters & Setters 
As vezes é necessário acessar um atributo de outra classe que está como Private. Para não “liberar” o 
acesso dentro da classe mãe do atributo, é usado o get ou o set pra uso. 
• 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; } 
}
Herança, reescrita e polimorfismo 
• Herança é uma forma de compartilhar atributos(características) 
semelhantes à outras classes, assim, economizando código. 
• Na herança, como alguns métodos serão herdados e nem sempre terão as 
mesmas propriedades, a reescrita é necessária para diferenciar algumas 
situações ou adicionar algo que o método da classe mãe não inseriu. 
• Polimorfismo é a capacidade de se referenciar a um objeto de várias 
formas. É útil, por exemplo, ao usar um método que seja comum a classe 
mãe e filhas, assim, não sendo necessário reescrevê-lo para cada um.
Classes abstratas 
Quando criamos uma classe mãe de várias outras, muitas vezes, não é 
necessário em nenhum momento instanciá-las, visto que, são muito 
abrangentes, então essas classes são usadas somente como referência. 
Então para que criemos uma classe somente para que seja herdada de 
outras, as definimos como abstratas, sendo assim, criar uma instância dela 
não seria possível.
Interfaces 
Interfaces são como contratos, as classes que as implementam tem a 
obrigação de implementar seus métodos, sendo de responsabilidade da 
classe que a implementa, saber definir o que será feito com o objeto em 
questão. 
Em um sistema orientado a objetos, o que um objeto faz é mais 
importante do que como ele faz. Assim sendo, o uso de interfaces tão 
importante. 
Programar voltado a interfaces e não a herança é amplamente 
aconselhado.
Exceções e controle de erros 
• Exceção 
Uma exceção representa uma situação que normalmente não ocorre e representa 
algo de estranho ou inesperado no sistema. 
• Para tratar uma possível exceção, usamos o Try/Catch. Exemplo: 
int [] array = new int[5] 
try{ 
System.out.println(array[5]); 
}catch(Exception e){ 
System.out.println(“Erro”); 
}finally{ 
System.out.println(“Programa executado”); 
} 
O sistema vai testar o bloco try e caso encontre um problema, vai parar somente 
esse bloco, executar o bloco catch e continuar com a execução do programa. 
O bloco Finally sempre será executado. 
É possível criar as suas próprias classes Exceptions, mas é recomendável sempre 
que possível utilizar as exceções do Java.
Casting 
Gerente g = new Gerente(); 
Funcionario f = g; // não precisa de cast 
Funcionario f = new Gerente(); 
Gerente g = f; // não compila 
Funcionario f = new Gerente(); 
Gerente g = (Gerente)f; // compila
Equals & ToString 
• toString é um método que representa uma classe 
• Exemplo: 
class Conta { 
private double saldo; 
public Conta(double saldo) { 
this.saldo = saldo; 
} 
public String toString() { 
return "Uma conta com valor: " + this.saldo; 
} 
}
Equals 
• Quando queremos comparar 2 objetos, usamos o método equals 
String x = new String("fj11"); 
String y = new String("fj11"); 
if (x.equals(y)) { 
System.out.println("consideramos iguais no critério de igualdade"); 
} else { 
System.out.println("consideramos diferentes no critério de igualdade"); 
}
Collections Framework 
• Arrays, são trabalhosos e difíceis de manipular. A API Collections traz 
várias classes que e estruturas que facilitam o trabalho com conjuntos de 
elementos. 
• Um dos recursos da API Collections são as Lists. A mais usada é a ArrayList 
que trabalha com um array interno, sem aquela preocupação de busca, 
remoção, tamanho, etc que se tem ao usar um array. 
• Principais métodos: 
Outro recurso é a Map, que “indexa” objetos de acordo com determinado 
critério. Muito utilizado para pesquisas.
Collections Framework 
Exemplo de ArrayList 
List <ContaCorrente> contas = new ArrayList<>(); 
contas.add(c1); 
contas.add(c3); 
contas.add(c2); 
Exemplo de Map 
Map <String, ContaCorrente> mapaDeContas = new HashMap<>(); 
mapaDeContas.put("diretor", c1); 
mapaDeContas.put("gerente", c2);
Threads 
• Threads são usados para executar vários processos 
simultaneamente. 
• É necessário assinar as classes que serão usadas através da 
interface Runnable. 
• O escalonador (scheduler), sabendo que as vezes, somente um 
processo pode ser feito de cada vez, faz com que somente um seja 
processado e alterne para outro rapidamente, dando a impressão 
que a execução está sendo simultânea.
Thread – Erro de compilação 
public class MeuPrograma { 
public static void main (String[] args) { 
GeraPDF gerapdf = new GeraPDF(); 
Thread threadDoPdf = new Thread(gerapdf); 
threadDoPdf.start(); 
BarraDeProgresso barraDeProgresso = new BarraDeProgresso(); 
Thread threadDaBarra = new Thread(barraDeProgresso); 
threadDaBarra.start(); 
} 
}
GARBAGE COLLECTOR 
• Coletor de lixo, funciona como um Thread. 
Conta conta1 = new ContaCorrente(); 
Conta conta2 = new ContaCorrente(); 
conta2 = conta1;

Java & orientação a objetos

  • 1.
  • 2.
    Variáveis primitivas Declarandouma variável: tipoDaVariavel nomeDaVariavel; Alguns tipos: int – para números inteiros double – para numeros inteiros e fracionados boolen – armazena um valor verdadeiro ou falso char – guarda somente UM caractere Exemplo: double d3 = 3.14; int i = (int) d3 //Exemplo de cast
  • 3.
    If e Else • Sintaxe: if (condicaoBooleana) { codigo; } Exemplo: int idade = 15; if (idade < 18) { System.out.println("Não pode entrar"); }else{ System.out.println(“Entrada permitida”); }
  • 4.
    While O Whileé um laço de código, usado para repetir um trecho determinadas vezes. Pode ser usado quando não se sabe essa quantidade. int idade = 15; while (idade < 18) { System.out.println(idade); idade = idade + 1; } For Semelhante ao While, o For executa um código enquanto uma situação for verdadeira, mas além disso também é possível inicializar a variável e o modificador. Tornando o código mais legível. Exemplo: for (int i = 0; i < 10; i ++) { System.out.println("olá!"); }
  • 5.
    Orientação a Objeto • Maior reaproveitamento de código • Forma mais elegante e profissional de desenvolver o código • Facilita a manutenção • Facilita na leitura • Melhor divisão da estrutura do software • Polimorfismo
  • 6.
    Arrays • Arrayé um conjunto de posições na memória que podem ser acessadas por um índice. • Array é util quando precisamos declarar diversas variáveis, e modificar a quantidade posteriormente. • Exemplo: int idade1; int idade2; int idade3; int idade4;
  • 7.
    Modificadores de acesso • Na Orientação a Objeto é quase que obrigatório proteger os atributos da classe com private. • As vezes é necessário “esconder” alguns atributos • A validação de um atributo deve ser feito pela própria classe, assim facilitando e centralizando futuras mudanças no sistema. • Alguns métodos podem ser criados para auxiliar somente a sua própria classe, por isso não é necessário deixá-lo publico. • É uma boa prática de desenvolvimento sempre expor o mínimo de funcionalidades. • Exemplos de modificadores de acesso: Public – Pode ser usada por qualquer entidade que possa visualizar a classe que ela pertença. Private – Não podem ser acessados ou usados por nenhuma outra classe. Protected – Os métodos e atributos só podem ser acessados por outra classe caso esteja no mesmo pacote, usando herança. • Padrão(quando não é definido) – Da mesma forma que o modificador Protected. • Final – Quando é necessário “fechar” um método ou valor de variável, pra que não possa ser alterada. • Abstract – Aplicado somente em classes, onde não pode ser instanciada. • Static – Para criar uma variável que poderá ser usada por outra classe como uma variavel comum, sem ser necessário instanciar um objeto.
  • 8.
    Construtores • Quandoé necessário obrigar uma classe ou classe filha a definir os atributos no momento de instanciar, usa-se construtores para definir que atributos serão já inicializados. • Exemplo: class Conta { int numero; Cliente titular; double saldo; double limite; Conta (Cliente titular) { this.titular = titular; } Conta (int numero, Cliente titular) { this(titular); this.numero = numero; } }
  • 9.
    Getters & Setters As vezes é necessário acessar um atributo de outra classe que está como Private. Para não “liberar” o acesso dentro da classe mãe do atributo, é usado o get ou o set pra uso. • 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; } }
  • 10.
    Herança, reescrita epolimorfismo • Herança é uma forma de compartilhar atributos(características) semelhantes à outras classes, assim, economizando código. • Na herança, como alguns métodos serão herdados e nem sempre terão as mesmas propriedades, a reescrita é necessária para diferenciar algumas situações ou adicionar algo que o método da classe mãe não inseriu. • Polimorfismo é a capacidade de se referenciar a um objeto de várias formas. É útil, por exemplo, ao usar um método que seja comum a classe mãe e filhas, assim, não sendo necessário reescrevê-lo para cada um.
  • 11.
    Classes abstratas Quandocriamos uma classe mãe de várias outras, muitas vezes, não é necessário em nenhum momento instanciá-las, visto que, são muito abrangentes, então essas classes são usadas somente como referência. Então para que criemos uma classe somente para que seja herdada de outras, as definimos como abstratas, sendo assim, criar uma instância dela não seria possível.
  • 12.
    Interfaces Interfaces sãocomo contratos, as classes que as implementam tem a obrigação de implementar seus métodos, sendo de responsabilidade da classe que a implementa, saber definir o que será feito com o objeto em questão. Em um sistema orientado a objetos, o que um objeto faz é mais importante do que como ele faz. Assim sendo, o uso de interfaces tão importante. Programar voltado a interfaces e não a herança é amplamente aconselhado.
  • 13.
    Exceções e controlede erros • Exceção Uma exceção representa uma situação que normalmente não ocorre e representa algo de estranho ou inesperado no sistema. • Para tratar uma possível exceção, usamos o Try/Catch. Exemplo: int [] array = new int[5] try{ System.out.println(array[5]); }catch(Exception e){ System.out.println(“Erro”); }finally{ System.out.println(“Programa executado”); } O sistema vai testar o bloco try e caso encontre um problema, vai parar somente esse bloco, executar o bloco catch e continuar com a execução do programa. O bloco Finally sempre será executado. É possível criar as suas próprias classes Exceptions, mas é recomendável sempre que possível utilizar as exceções do Java.
  • 14.
    Casting Gerente g= new Gerente(); Funcionario f = g; // não precisa de cast Funcionario f = new Gerente(); Gerente g = f; // não compila Funcionario f = new Gerente(); Gerente g = (Gerente)f; // compila
  • 15.
    Equals & ToString • toString é um método que representa uma classe • Exemplo: class Conta { private double saldo; public Conta(double saldo) { this.saldo = saldo; } public String toString() { return "Uma conta com valor: " + this.saldo; } }
  • 16.
    Equals • Quandoqueremos comparar 2 objetos, usamos o método equals String x = new String("fj11"); String y = new String("fj11"); if (x.equals(y)) { System.out.println("consideramos iguais no critério de igualdade"); } else { System.out.println("consideramos diferentes no critério de igualdade"); }
  • 17.
    Collections Framework •Arrays, são trabalhosos e difíceis de manipular. A API Collections traz várias classes que e estruturas que facilitam o trabalho com conjuntos de elementos. • Um dos recursos da API Collections são as Lists. A mais usada é a ArrayList que trabalha com um array interno, sem aquela preocupação de busca, remoção, tamanho, etc que se tem ao usar um array. • Principais métodos: Outro recurso é a Map, que “indexa” objetos de acordo com determinado critério. Muito utilizado para pesquisas.
  • 18.
    Collections Framework Exemplode ArrayList List <ContaCorrente> contas = new ArrayList<>(); contas.add(c1); contas.add(c3); contas.add(c2); Exemplo de Map Map <String, ContaCorrente> mapaDeContas = new HashMap<>(); mapaDeContas.put("diretor", c1); mapaDeContas.put("gerente", c2);
  • 19.
    Threads • Threadssão usados para executar vários processos simultaneamente. • É necessário assinar as classes que serão usadas através da interface Runnable. • O escalonador (scheduler), sabendo que as vezes, somente um processo pode ser feito de cada vez, faz com que somente um seja processado e alterne para outro rapidamente, dando a impressão que a execução está sendo simultânea.
  • 20.
    Thread – Errode compilação public class MeuPrograma { public static void main (String[] args) { GeraPDF gerapdf = new GeraPDF(); Thread threadDoPdf = new Thread(gerapdf); threadDoPdf.start(); BarraDeProgresso barraDeProgresso = new BarraDeProgresso(); Thread threadDaBarra = new Thread(barraDeProgresso); threadDaBarra.start(); } }
  • 21.
    GARBAGE COLLECTOR •Coletor de lixo, funciona como um Thread. Conta conta1 = new ContaCorrente(); Conta conta2 = new ContaCorrente(); conta2 = conta1;