A Programação Orientada a Objetos (POO) é um paradigma que organiza o desenvolvimento de códigos em torno de "objetos" que possuem atributos (dados) e métodos (ações). Tal abordagem facilita a criação de sistemas complexos, modularizados e mais facilmente reutilizáveis. Quais são as principais características desse paradigma?