Resumo de Programação Orientada a Objetos em Java
1. Classes
Uma classe é um modelo ou molde para criar objetos. Ela define atributos (variáveis) e
comportamentos (métodos) que os objetos dessa classe terão.
Exemplo:
class Carro {
String modelo;
int ano;
void ligar() {
[Link]("O carro está ligado!");
2. Objetos
Objetos são instâncias de classes. Eles têm valores específicos para seus atributos e podem usar
os métodos definidos na classe.
Exemplo:
Carro meuCarro = new Carro();
[Link] = "Fusca";
[Link]();
3. Encapsulamento
Encapsulamento é o conceito de esconder os detalhes internos de uma classe e proteger o acesso
a seus atributos. Isso é feito utilizando modificadores de acesso (private, public, protected) e
métodos getter/setter.
Exemplo:
class Carro {
private String modelo;
public String getModelo() {
return modelo;
public void setModelo(String modelo) {
[Link] = modelo;
4. Herança
Herança permite que uma classe herde atributos e métodos de outra, facilitando a reutilização de
código.
Exemplo:
class Veiculo {
void mover() {
[Link]("Veículo em movimento.");
}
class Carro extends Veiculo {
void ligar() {
[Link]("Carro ligado.");
5. Polimorfismo
Polimorfismo permite que objetos de diferentes classes sejam tratados como objetos da mesma
classe base, mas com comportamentos específicos.
Exemplo:
class Animal {
void som() {
[Link]("Som de animal");
class Cachorro extends Animal {
void som() {
[Link]("Latido");
Animal animal = new Cachorro();
[Link](); // Saída: Latido
6. Abstração
Abstração consiste em esconder detalhes complexos e mostrar apenas a funcionalidade
necessária. Isso pode ser feito por meio de classes abstratas e interfaces.
Exemplo:
abstract class Animal {
abstract void som();
7. Associação
Associação é a relação entre objetos de diferentes classes. Pode ser:
- Associação simples: Um objeto utiliza outro.
- Agregação: Um objeto contém outro, mas sem dependência forte.
- Composição: Um objeto contém outro, e a vida útil dos objetos está ligada.
Exemplo:
class Pessoa {
Endereco endereco; // Associação
8. Classes Abstratas
Uma classe abstrata não pode ser instanciada diretamente e pode ter métodos abstratos (sem
implementação) e métodos concretos (com implementação).
Exemplo:
abstract class Animal {
abstract void som();
void dormir() {
[Link]("Dormindo...");
}
}
9. Métodos Abstratos
Métodos abstratos são declarados em classes abstratas e não possuem implementação, sendo
implementados nas classes filhas.
Exemplo:
abstract class Animal {
abstract void fazerSom();
10. Interfaces
Uma interface define um contrato de métodos, mas sem implementação. Classes podem
implementar múltiplas interfaces.
Exemplo:
interface Veiculo {
void acelerar();
class Carro implements Veiculo {
public void acelerar() {
[Link]("Carro acelerando...");
11. Diferença entre Classes Abstratas e Interfaces
Classes abstratas podem ter métodos com ou sem implementação, e permitem a herança de
implementação. Já as interfaces só podem ter métodos sem implementação (até o Java 8, que
introduziu métodos default) e uma classe pode implementar várias interfaces, mas só pode
estender uma classe.
12. SOLID
SOLID é um conjunto de princípios que visa melhorar a qualidade e manutenção do código:
- S: Single Responsibility Principle
- O: Open/Closed Principle
- L: Liskov Substitution Principle
- I: Interface Segregation Principle
- D: Dependency Inversion Principle
Esses princípios ajudam a criar um código mais flexível, fácil de manter e testar.
13. Design Patterns
Design Patterns são soluções reutilizáveis para problemas comuns de design de software. Eles
podem ser classificados em três tipos:
- Padrões de Criação
- Padrões Estruturais
- Padrões Comportamentais
14. GoF (Gang of Four)
GoF são os autores do livro 'Design Patterns: Elements of Reusable Object-Oriented Software', que
catalogaram 23 padrões de design:
- Padrões Criacionais
- Padrões Estruturais
- Padrões Comportamentais