Java & orientação a objetos

268 visualizações

Publicada em

Apresentação básica de estudo - Java & Orientação a Objetos.

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
268
No SlideShare
0
A partir de incorporações
0
Número de incorporações
3
Ações
Compartilhamentos
0
Downloads
3
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Java & orientação a objetos

  1. 1. Java & Orientação a Objetos
  2. 2. 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
  3. 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. 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. 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. 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. 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. 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. 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. 10. 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.
  11. 11. 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.
  12. 12. 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.
  13. 13. 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.
  14. 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. 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. 16. 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"); }
  17. 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. 18. 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);
  19. 19. 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.
  20. 20. 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(); } }
  21. 21. GARBAGE COLLECTOR • Coletor de lixo, funciona como um Thread. Conta conta1 = new ContaCorrente(); Conta conta2 = new ContaCorrente(); conta2 = conta1;

×