Orientação a Obeto
O conceito de OO é relativamente vantajosa em comparação a estruturada por dois pontos:
O primeiro é que eleva o nível de abstração da codificação. É muito mais simples para um programador que não esteja envolvido entender que aluno.getNome() vai retornar o nome de um aluno do que varrer o código todo até encontrar a variável que está armazenado esse conteúdo;
Facilidade para reutilizar o código, já que ele está dividido em classes POJO e classes estaticas, com métodos específicos.
Uma outra vantagem que eu particularmente vejo é em relação a arquitetura Cliente-Servidor, pois para a transmissão de um objeto "vetorizado" (com JSON, por exemplo) é relativamente mais simples que enviar uma váriavel ou um vetor de variáveis da estruturada.
Na coesão e facilidade de manutenção.
Facilidade de reutilização de código, uma vez que deverá chamar o objeto responsável por executar uma ação.
Embora a programação puramente orientada a objetos seja uma prática rara, sendo comum, por exemplo, a utilização de objetos anêmicos, principalmente em ORM. No exemplo dado, os objetos possuem apenas seus atributos, seus métodos de acesso aos atributos, e os mapeamentos. Costumam ser chamados de DO (Data Object) ou DTO (Data Transfer Object).
A orientação a objetos é um modelo de análise, projeto e programação de sistemas de software baseado na composição e interação entre diversas unidades de software chamadas de objetos.
Em alguns contextos, prefere-se usar modelagem orientada ao objeto, em vez de programação. De fato, o paradigma "orientação a objeto", tem bases conceituais e origem no campo de estudo da cognição, que influenciou a área de inteligência artificial e da linguística, no campo da abstração de conceitos do mundo real. Na qualidade de método de modelagem, é tida como a melhor estratégia para se eliminar o "gap semântico", dificuldade recorrente no processo