Existem duas questões filosóficas:
- Sistemas de Objetos são melhores que sistemas procedurais?
- Vale a pena usar objetos, não é muito complexo?
Vou expôr meu ponto de vista.
- Sistemas de Objetos são melhores que sistemas procedurais?
Depende.
Se você pegar a literatura de Projeto Estruturado vai ver pessoas (que aliás, são as mesmas que hoje falam em Projeto Orientado à Objetos) explicando como modularizar código. Nessa abordagem, modularizar significava criar subrotinas, cosia que foi possível com o avanço das linguagens, compiladores e computadores.
Se você pensar como uma pessoa daquela época, vai perguntar: por que usar essas funções seria melhor do que simplesmente escrever o bendito código? O argumento mais forte é a modularidade que o uso de funções traz, mudando um simples ponto você consegue alterar o comportamento de um sistema inteiro. Reutilizando funções você economiza muito tempo para fazer as coisas.
Alguém aí programa de maneira não-estruturada hoje em dia?
Atrás sempre de modularidade, as estruturas de dados a serem manipuladas foram também encapsuladas junto com as funções que as manipulam.
Imagine um módulo C. Você tem estruturas de dados (structs) e funções. Um .c e um punhado de .h. Agora imagina que você pudesse tratar tudo isso, funções e dados, como uma entidade única. Isso é um objeto.
Ao definir a interface para o objeto, eu posso evitar que meus “clientes” mexam diretamente nos dados, fazendo com que mudar a implementação interna do meu objeto seja extremamente simples. Você já tentou mudar uma struct num grande sistema em produção? Nem que fosse só o tipo de dado? Tente e você vai ver o inferno que é.
Então, com objetos temos modularidade à um nível baixo. Conseguimos uma abstração muito melhor das coisas e podemos deixar que “como implementar isso” seja um detalhe.
- Vale a pena usar objetos, não é muito complexo?
Depende.
Para programas muito simples, objetos são um overhead. Para programas complexos ou para coisas que evoluem, não usar objetos pode ser um problema muito grande no futuro.
A resposta é sempre depende. Depende do que você quer fazer (e nem entrei em méritos gerenciais ou financeiros!).
Enfim, um bom texto sobre o tema: Object Orientation: Making the Transition.