Sobre POO( Programação Orientada a Objetos).
O que é POO?
POO, ou Programação Orientada a Objetos, é um paradigma de programação que organiza o código em objetos que representam entidades do mundo real ou conceitos da aplicação. É um dos paradigmas mais usados em linguagens como Java, C#, Python, entre outras.
Conceitos Fundamentais da POO:
Classe
- É como um molde ou modelo.
- Define as propriedades (atributos) e comportamentos (métodos) de um objeto.
Exemplo em Java:
public class Carro {
String modelo;
int ano;
void buzinar() {
System.out.println("Biii!");
}
}
Objeto
- É uma instância de uma classe.
- Representa algo concreto criado a partir do molde da classe.
Exemplo:
Carro meuCarro = new Carro();
meuCarro.modelo = "Fusca";
meuCarro.buzinar();
Encapsulamento
- Esconde os detalhes internos do funcionamento de um objeto.
- Utiliza modificadores de acesso (como
private
,public
) e métodosget
eset
. - Ajuda a proteger os dados e manter a integridade.
Herança
- Permite que uma classe herde atributos e métodos de outra classe.
- Evita repetição de código e facilita manutenção.
Exemplo:
public class Animal {
void dormir() {
System.out.println("Dormindo...");
}
}
public class Cachorro extends Animal {
void latir() {
System.out.println("Au Au!");
}
}
Polimorfismo
- Objetos podem se comportar de formas diferentes usando o mesmo nome de método.
- Pode ser sobrecarga de métodos (mesmo nome, diferentes parâmetros) ou sobrescrita (override).
Exemplo:
public class Animal {
void emitirSom() {
System.out.println("Som genérico");
}
}
public class Gato extends Animal {
@Override
void emitirSom() {
System.out.println("Miau");
}
}
Abstração
- Foca no que o objeto faz, não em como ele faz.
- Você usa interfaces ou classes abstratas para definir contratos que outras classes devem seguir.
Exemplo:
public abstract class Forma {
abstract double calcularArea();
}
public class Quadrado extends Forma {
double lado;
Quadrado(double lado) { this.lado = lado; }
@Override
double calcularArea() {
return lado * lado;
}
}
Vantagens da POO:
- Reutilização de código (herança).
- Manutenção facilitada.
- Organização lógica do sistema.
- Maior escalabilidade.
- Melhora o reuso, a legibilidade e a testabilidade do código.