Article image
Robson Silva
Robson Silva10/09/2023 15:51
Compartilhe

Entenda facilmente Programação Orientada a Objeto (POO)

  • #Java
  • #POO

A forma mais facil de entender Programação Orientada a Objeto (POO)

A Programação Orientada a Objeto (POO) é um conceito fundamental no mundo da programação. Embora possa parecer intimidante para iniciantes, prometo que esta explicação será a mais fácil que você já viu sobre o assunto, especialmente em Java. Vamos descomplicar a POO, usando exemplos do mundo real para ilustrar cada parte dela.

O que é Programação Orientada a Objeto?

Para começar, precisamos entender o que é a POO em Java. É um paradigma de programação que se baseia na ideia de "objetos". Pense em objetos como coisas do mundo real. Cada objeto tem características (atributos) e pode realizar ações (métodos).

Atributos e Métodos: Conceitos Essenciais

Atributos

Imagine um carro. Ele tem atributos como cor, modelo e marca. Em POO em Java, chamamos esses atributos de "variáveis de instância".

Exemplo de Código:

public class Carro {
String cor;
String modelo;
String marca;
}

Métodos

Agora, pense nas ações que um carro pode executar: acelerar, frear e virar. Essas ações correspondem aos "métodos" na POO em Java.

Exemplo de Código:

public class Carro {
String cor;
String modelo;
String marca;

void acelerar() {
  System.out.println("O carro está acelerando.");
}

void frear() {
  System.out.println("O carro está freando.");
}

void virar(String direcao) {
  System.out.println("O carro está virando para " + direcao + ".");
}
}

Classes e Objetos: Os Blocos de Construção

Para tornar isso mais claro, pense em uma "classe" como um modelo para criar objetos. Uma classe pode ser vista como um projeto que descreve como os objetos devem ser construídos.

Exemplo de Código:

public class Carro {
String cor;
String modelo;
String marca;

void acelerar() {
  System.out.println("O carro está acelerando.");
}

void frear() {
  System.out.println("O carro está freando.");
}

void virar(String direcao) {
  System.out.println("O carro está virando para " + direcao + ".");
}
}

Exemplo do Mundo Real: Carro

Vamos usar o exemplo do carro para ilustrar esses conceitos:

- Classe: A classe é como o plano de construção para um carro. Ela define quais atributos (cor, modelo, marca) e métodos (acelerar, frear, virar) um carro terá.

- Objeto: Um objeto é uma instância da classe. Se você tem um carro vermelho da marca "Toyota", você tem um objeto que segue as especificações da classe de carros.

Exemplo de Código:

// Criando um objeto a partir da classe Carro
Carro meuCarro = new Carro();
meuCarro.cor = "Vermelho";
meuCarro.modelo = "Sedan";
meuCarro.marca = "Toyota";

// Usando métodos do objeto
meuCarro.acelerar();
meuCarro.virar("esquerda");

Encapsulamento: Protegendo seus Dados

Encapsulamento é um conceito importante na POO em Java. Ele envolve o agrupamento de dados (atributos) e os métodos que operam esses dados em uma única unidade, uma classe.

Exemplo de Código:

public class Carro {
private String cor;
private String modelo;
private String marca;
private int quilometragem;

public Carro(String cor, String modelo, String marca) {
  this.cor = cor;
  this.modelo = modelo;
  this.marca = marca;
  this.quilometragem = 0;
}

public void acelerar() {
  System.out.println("O carro está acelerando.");
}

public void frear() {
  System.out.println("O carro está freando.");
}

public void virar(String direcao) {
  System.out.println("O carro está virando para " + direcao + ".");
}

public int getQuilometragem() {
  return quilometragem;
}

public void setQuilometragem(int quilometragem) {
  if (quilometragem >= 0) {
    this.quilometragem = quilometragem;
  } else {
    System.out.println("A quilometragem não pode ser negativa.");
  }
}
}

Herança: Compartilhando Comportamento

Herança é como a genética na programação. Você pode criar uma nova classe baseada em uma classe existente, herdando seus atributos e métodos. Isso economiza tempo e promove a reutilização de código.

Exemplo de Código:

public class CarroEsportivo extends Carro {
private boolean turbo;

public CarroEsportivo(String cor, String modelo, String marca, boolean turbo) {
  super(cor, modelo, marca);
  this.turbo = turbo;
}

public void ativarTurbo() {
  System.out.println("Turbo ativado!");
}
}

Polimorfismo: Flexibilidade e Reutilização de Código

Polimorfismo permite que você use a mesma interface (método) para representar diferentes tipos de objetos. É como usar a mesma chave para diferentes fechaduras.

Exemplo de Código:

public class Carro {
  public void acelerar() {
      System.out.println("Este carro está acelerando.");
  }
}

public class CarroEsportivo extends Carro {
  @Override
  public void acelerar() {
      System.out.println("Este carro esportivo está acelerando rapidamente!");
  }
}

public class ExemploPolimorfismo {
  public static void main(String[] args) {
      Carro meuCarro = new Carro();
      Carro carroEsportivo = new CarroEsportivo();


      meuCarro.acelerar(); // Isso imprimirá "Este carro está acelerando."
      carroEsportivo.acelerar(); // Isso imprimirá "Este carro esportivo está acelerando rapidamente!"
  }
}

Neste exemplo, meuCarro é uma instância de Carro, e carroEsportivo é uma instância de CarroEsportivo. Ambos têm o método acelerar, mas quando chamamos o método para cada objeto, a implementação apropriada é executada com base no tipo real do objeto.

Isso demonstra o polimorfismo, onde objetos de classes diferentes podem responder de maneira diferente ao mesmo método comum.

Abstração: Simplificando o Complexo

Abstração envolve simplificar sistemas complexos, focando apenas nos detalhes essenciais. Voltando ao nosso exemplo de carro, você não precisa entender a complexidade do motor para dirigir um carro.

Vantagens da POO em Java

Agora que você entende os conceitos básicos da POO em Java, aqui estão algumas vantagens:

1. Reutilização de Código: Você pode usar classes e objetos existentes em novos projetos.

2. Organização: A POO ajuda a manter o código organizado e fácil de manter.

3. Segurança: Encapsulamento protege seus dados.

4. Flexibilidade: Polimorfismo torna seu código mais flexível e adaptável.

Conclusão

A Programação Orientada a Objeto em Java pode parecer desafiadora no início, mas com prática e compreensão dos conceitos básicos, você pode se tornar um desenvolvedor hábil em Java. Aproveite as vantagens da POO em Java para criar código organizado e reutilizável em Java que atenda às demandas dos projetos de desenvolvimento em Java.

Compartilhe
Comentários (4)
Robson Silva
Robson Silva - 12/09/2023 21:21

Obrigado pessoal pelos comentários!

Isso nos motiva a continuar estudando e aprendendo cada dia mais.

Eu também estou nessa batalha junto com vocês.


Gosto de uma frase que diz:

"O conhecimento só tem valor quando é colocado em pratica e compartilhado."


Luciano, eu já ouvi falar nesse livro entre os devs Java, mais nunca tive a oportunidade de ler, mais sei que o Deitel é uma referencia quando se fala em Java.

Douglas Souza
Douglas Souza - 12/09/2023 07:58

Parabéns por detalhar de forma simples e objetiva algo que assusta muita gente no início dos estudos em programação. Continue compartilhando conhecimento 👏🏻

Cleverton Junior
Cleverton Junior - 10/09/2023 22:22

Bem explicado e resumdido !

Luciano Cunha
Luciano Cunha - 10/09/2023 16:46

Olá Amigo,


gosto de dizer que comecei a entender orientação a objetos com o livro do Deitel.

Utilizo a expressão, comecei a entender, pois sinto que continuo aprendendo, sempre.

Uma das formas que utilizo para aprender é procurar pontos de vistas diferentes do meu e do próprio Deitel.

Por isso, gosto muito de ler textos como o seu. Que trazem pontos diferentes do meu e de explicações vistas anteriores, apesar de ser um tema tão falado.

Robson, Parabéns pelo texto e continue compartilhando seus aprendizados.