Cara, teoricamente com uma OOP você tem uma infinidade de coisas para programar, o que vai fazer diferença entre uma OOP, estruturada ou funcional basicamente é sua experiência com a linguagem e o foco para qual ela foi projetada.
Basicamente uma OOP possui a característica de troca de mensagens, mas elas são mais conhecidas por suas classes. A classe é a abstração de um modelo com suas características e ações (atributos e métodos).
Ex:. Pegando um Gato como modelo, poderíamos dizer que dentre as características do gato temos os pelos, a idade e talvez um nome, e uma das ações dele por exemplo seria miar.
Entendendo como funciona você poderá conseguir abstrair e modelar objetos (coisas) não reais/palpáveis como por exemplo o o ponteiro de um mouse dentro de um jogo. Tudo depende do seu empenho.