Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

Revisão - Programação Orientada a 
Objetos em Java 
1. Classes e Objetos 
Definição 
● Classe: É um modelo ou template que define as características (atributos) e 
comportamentos (métodos) que os objetos criados a partir dela terão. 
● Objeto: É uma instância de uma classe, ou seja, uma representação concreta criada 
a partir do modelo da classe. 
Conceitos Importantes 
● Quando usamos new em Java, criamos um novo objeto com uma nova referência 
na memória 
● Ao comparar objetos com ==, comparamos se as referências apontam para o 
mesmo objeto, não o conteúdo 
● Para comparar conteúdo, devemos usar o método equals() 
Exemplo 
public class Pessoa { 
 private String nome; 
 private int idade; 
 
 // Construtor, getters, setters... 
} 
 
// Criando objetos 
Pessoa p1 = new Pessoa(); // Nova instância 
Pessoa p2 = new Pessoa(); // Outra instância diferente 
 
2. Métodos Construtores 
Características 
● Método especial usado para inicializar objetos no momento da criação 
● Tem o mesmo nome da classe 
● Não possui tipo de retorno 
● É chamado automaticamente quando usamos new 
Construtor Padrão 
● Se você não declarar nenhum construtor, o compilador Java cria 
automaticamente um construtor padrão sem parâmetros 
● Se você criar qualquer construtor personalizado, o construtor padrão não é mais 
gerado automaticamente 
Exemplo 
public class Produto { 
 private String nome; 
 private double preco; 
 
 // Construtor padrão 
 public Produto() {} 
 
 // Construtor com parâmetros 
 public Produto(String nome, double preco) { 
 this.nome = nome; 
 this.preco = preco; 
 } 
} 
 
3. Sobrecarga de Métodos (Overloading) 
Definição 
Permite criar múltiplos métodos com o mesmo nome, mas com tipos ou número de 
parâmetros diferentes. 
Regras 
● Métodos sobrecarregados devem ter tipos ou número de parâmetros diferentes 
● Podem ter modificadores de acesso diferentes 
● O tipo de retorno pode ser diferente (mas não é suficiente por si só) 
Exemplo 
public class Calculadora { 
 public int somar(int a, int b) { 
 return a + b; 
 } 
 
 public double somar(double a, double b) { 
 return a + b; 
 } 
 
 public int somar(int a, int b, int c) { 
 return a + b + c; 
 } 
} 
 
4. Sobrescrita de Métodos (Override) 
Definição 
Permite que uma subclasse substitua o comportamento de um método herdado da 
superclasse. 
Regras 
● O método deve ter a mesma assinatura (nome, parâmetros, tipo de retorno) 
● Não é possível sobrescrever métodos final 
● Use a anotação @Override para verificação em tempo de compilação 
Diferença entre Sobrescrita e Sobrecarga 
● Sobrescrita: Muda a lógica do método herdado (mesma assinatura) 
● Sobrecarga: Usa diferentes parâmetros (mesmo nome, parâmetros diferentes) 
5. Encapsulamento 
Definição 
Princípio que consiste em esconder os detalhes internos de uma classe e expor apenas 
o necessário por meio de métodos públicos. 
Como Implementar 
1. Tornar atributos privados (private) 
2. Criar métodos públicos de acesso (getters e setters) 
3. Controlar o acesso aos dados através destes métodos 
Importância 
● Segurança: Protege os dados de acesso inadequado 
● Flexibilidade: Permite mudanças internas sem afetar código externo 
● Validação: Possibilita validar dados antes de alterá-los 
● Manutenibilidade: Facilita manutenção e evolução do código 
Exemplo 
public class ContaBancaria { 
 private double saldo; // Atributo privado 
 
 // Getter 
 public double getSaldo() { 
 return saldo; 
 } 
 
 // Setter com validação 
 public void setSaldo(double saldo) { 
 if (saldo >= 0) { 
 this.saldo = saldo; 
 } 
 } 
 
 // Método para depositar 
 public void depositar(double valor) { 
 if (valor > 0) { 
 this.saldo += valor; 
 } 
 } 
} 
 
Quando NÃO criar um setter 
Torne um atributo private sem método set quando você deseja que o atributo nunca 
mude após a criação do objeto (imutabilidade). 
6. Herança 
Definição 
Mecanismo que permite que uma classe (subclasse) herde características e 
comportamentos de outra classe (superclasse). 
Palavra-chave 
● Use extends para criar uma subclasse 
● Use super para acessar métodos e atributos da superclasse 
Herança Múltipla 
Java NÃO suporta herança múltipla de classes. Uma classe só pode estender uma única 
classe por vez. 
Exemplo de Hierarquia 
// Superclasse 
public class Veiculo { 
 protected String marca; 
 protected int ano; 
 
 public void acelerar() { 
 System.out.println("Acelerando..."); 
 } 
} 
 
// Subclasse 
public class Carro extends Veiculo { 
 private int numeroPortas; 
 
 @Override 
 public void acelerar() { 
 System.out.println("Carro acelerando..."); 
 } 
 
 public void abrirPorta() { 
 System.out.println("Abrindo porta do carro"); 
 } 
} 
 
// Subclasse da subclasse 
public class CarroEsportivo extends Carro { 
 private boolean turbo; 
 
 @Override 
 public void acelerar() { 
 super.acelerar(); // Chama método da superclasse 
 System.out.println("Com turbo ativado!"); 
 } 
} 
 
7. Classes Abstratas 
Definição 
Classes que não podem ser instanciadas diretamente e servem como base para outras 
classes. 
Características 
● Podem conter atributos e construtores 
● Podem ter métodos concretos e abstratos 
● Podem estender outras classes abstratas 
● NÃO podem ser instanciadas (erro de compilação) 
Propósito 
Servir como base para outras classes e conter métodos que podem ou não ser 
implementados pelas subclasses. 
Exemplo 
public abstract class Animal { 
 protected String nome; 
 
 public Animal(String nome) { 
 this.nome = nome; 
 } 
 
 // Método concreto 
 public void dormir() { 
 System.out.println(nome + " está dormindo"); 
 } 
 
 // Método abstrato - deve ser implementado pelas subclasses 
 public abstract void emitirSom(); 
} 
 
public class Cachorro extends Animal { 
 public Cachorro(String nome) { 
 super(nome); 
 } 
 
 @Override 
 public void emitirSom() { 
 System.out.println("Au au!"); 
 } 
} 
 
8. Modificadores de Acesso 
Tipos 
● public: Acessível de qualquer lugar 
● protected: Acessível na mesma classe, subclasses e mesmo pacote 
● private: Acessível apenas dentro da mesma classe 
● default (sem modificador): Acessível apenas no mesmo pacote 
Uso Recomendado 
● Atributos: Geralmente private para garantir encapsulamento 
● Métodos públicos: Para interface da classe 
● Métodos auxiliares: private se usados apenas internamente 
9. Modificador Final 
Aplicações 
● Classes final: Não podem ser estendidas (herdadas) 
● Métodos final: Não podem ser sobrescritos 
● Atributos final: Constantes (valor não pode ser alterado após inicialização) 
Consequências 
● Tentar sobrescrever um método final da superclasse gera erro de compilação 
● Classes final impedem herança (exemplo: String) 
Exemplo 
public final class Matematica { 
 public static final double PI = 3.14159; 
 
 public final int somar(int a, int b) { 
 return a + b; 
 } 
} 
 
// Erro! Não pode estender classe final 
// public class MinhaMatematica extends Matematica { } 
 
Resumo dos Conceitos-Chave 
1. Encapsulamento: Atributos privados + métodos públicos de acesso 
2. Herança: Uma classe pode estender apenas uma outra classe (extends) 
3. Polimorfismo: Sobrescrita permite comportamentos diferentes para métodos 
herdados 
4. Abstração: Classes abstratas definem contratos para subclasses 
5. Modificadores: Controlam visibilidade e capacidade de modificação 
6. Construtores: Inicializam objetos, criados automaticamente se não definidos 
7. Sobrecarga vs Sobrescrita: Parâmetros diferentes vs mesmo método herdado 
Dicas Importantes para a Prova 
● Lembre-se das regras de sobrescrita (mesma assinatura) 
● Entenda quando usar cadamodificador de acesso 
● Saiba identificar problemas de compilação relacionados a herança 
● Compreenda a diferença entre comparar objetos com == e equals() 
● Memorize que Java não suporta herança múltipla de classes 
● Entenda o papel do construtor padrão automático