Sobes.tech
Junior

O que é programação orientada a objetos (POO) em Java?

sobes.tech IA

Resposta da IA

A programação orientada a objetos em Java é um paradigma baseado no conceito de "objetos", que contêm dados (propriedades) e métodos (ações).

Princípios básicos da POO em Java:

  1. Encapsulamento: Ocultação de dados e métodos dentro de um objeto, acessíveis apenas através de interfaces específicas. Isso garante a segurança dos dados e a modularidade.
  2. Herança: Permite criar novas classes (subclasses) baseadas em classes existentes (superclasses), herdando suas propriedades e métodos. Isso promove a reutilização do código.
  3. Polimorfismo: Permite usar objetos de diferentes classes através de uma mesma interface. Isso oferece flexibilidade e extensibilidade. Distingue-se o polimorfismo em tempo de compilação (sobrecarga de métodos) e em tempo de execução (sobrescrita de métodos).
  4. Abstração: Destacar as características essenciais de um objeto e ocultar detalhes não essenciais. Isso ajuda a simplificar sistemas complexos.

Exemplo de uma classe em Java:

public class Car {
    private String brand; // Propriedade encapsulada
    private String model;
    private int year;

    public Car(String brand, String model, int year) { // Construtor
        this.brand = brand;
        this.model = model;
        this.year = year;
    }

    public void displayInfo() { // Método
        System.out.println("Marca: " + brand + ", Modelo: " + model + ", Ano: " + year);
    }

    // Getters e setters (para acessar propriedades privadas)
    public String getBrand() {
        return brand;
    }

    public void setBrand(String brand) {
        this.brand = brand;
    }
}

Exemplo de uso dos princípios de POO:

// Herança
public class ElectricCar extends Car {
    private int batteryCapacity;

    public ElectricCar(String brand, String model, int year, int batteryCapacity) {
        super(brand, model, year); // Chamada ao construtor da superclasse
        this.batteryCapacity = batteryCapacity;
    }

    @Override // Polimorfismo (sobrescrita de método)
    public void displayInfo() {
        super.displayInfo(); // Chamada ao método da superclasse
        System.out.println("Capacidade da bateria: " + batteryCapacity + " kWh");
    }
}

// Uso de objetos
public class Main {
    public static void main(String[] args) {
        Car myCar = new Car("Toyota", "Camry", 2020);
        Car myElectricCar = new ElectricCar("Tesla", "Model 3", 2022, 75);

        myCar.displayInfo();
        myElectricCar.displayInfo(); // Polimorfismo em ação
    }
}

Vantagens da POO:

  • Reutilização de código: Através da herança.
  • Facilidade de manutenção: Mudanças afetam apenas objetos ou classes específicos.
  • Flexibilidade e extensibilidade: Graças ao polimorfismo.
  • Melhor organização do código: Divisão do sistema em módulos (objetos).
  • Segurança de dados: Através do encapsulamento.