Os quatro pilares da Programação Orientada a Objetos (POO)
Os quatro pilares da Programação Orientada a Objetos (POO) são conceitos fundamentais que guiam a forma como o código é organizado e estruturado no paradigma orientado a objetos. São eles: Abstração, Encapsulamento, Herança e Polimorfismo.
1. Abstração:
A abstração é o processo de identificar características essenciais de um objeto do mundo real e representá-lo como uma entidade no código. É o ato de extrair as informações relevantes e ignorar detalhes desnecessários. Na POO, a abstração é implementada por meio de classes, que são modelos que definem as características (atributos) e comportamentos (métodos) do objeto.
Exemplo:
Vamos considerar um sistema de gerenciamento de veículos. Podemos abstrair um “Carro” como uma classe, que terá atributos como modelo, marca, ano de fabricação, e métodos como acelerar, frear, ligar, desligar, etc.
class Carro {
String modelo;
String marca;
int anoFabricacao;
void ligar() {
// Implementação do método para ligar o carro
}
void acelerar() {
// Implementação do método para acelerar o carro
}
void frear() {
// Implementação do método para frear o carro
}
}
2. Encapsulamento:
O encapsulamento é o princípio de ocultar detalhes internos da implementação de uma classe, expondo apenas uma interface pública que define como os objetos dessa classe interagem com o mundo exterior. Isso é feito através do controle de acesso aos atributos e métodos da classe.
Exemplo:
No exemplo do “Carro” acima, podemos encapsular os atributos tornando-os privados e fornecendo métodos públicos para acessá-los e modificá-los de forma controlada.
class Carro {
private String modelo;
private String marca;
private int anoFabricacao;
public void ligar() {
// Implementação do método para ligar o carro
}
public void acelerar() {
// Implementação do método para acelerar o carro
}
public void frear() {
// Implementação do método para frear o carro
}
// Métodos para acessar e modificar os atributos privados (getters e setters)
public String getModelo() {
return modelo;
}
public void setModelo(String modelo) {
this.modelo = modelo;
}
// E assim por diante…
}
3. Herança:
A herança é um mecanismo que permite que uma classe (subclasse) herde características (atributos e métodos) de outra classe (superclasse). Isso permite a reutilização de código e criação de hierarquias de classes.
Exemplo:
Vamos criar uma classe “Moto” que herda da classe “Veiculo”, já criada anteriormente.
```java
class Moto extends Veiculo {
// A classe Moto herda os atributos e métodos da classe Veiculo
// Implementação de métodos específicos da classe Moto, se necessário
}
```
4. Polimorfismo:
Polimorfismo é a capacidade de tratar objetos de classes diferentes de maneira uniforme, desde que esses objetos compartilhem uma mesma interface (métodos com o mesmo nome). Isso permite que um mesmo método seja usado para objetos de diferentes classes.
Exemplo:
Vamos criar um método “andar” que pode ser utilizado tanto por um objeto da classe “Carro” quanto por um objeto da classe “Moto”.
public void andar(Veiculo veiculo) {
veiculo.acelerar();
}
Neste exemplo, o método “andar” recebe um objeto do tipo “Veiculo” como parâmetro. Isso permite que possamos passar tanto um objeto da classe “Carro” quanto um objeto da classe “Moto”, pois ambas herdam da classe “Veiculo” e possuem o método “acelerar”.
Esses quatro pilares são fundamentais para a construção de sistemas orientados a objetos que sejam organizados, flexíveis, reutilizáveis e de fácil manutenção. Eles constituem a base da POO e são amplamente utilizados em diversas linguagens de programação.