Game logic, C++ vs Blueprints

Hello, as a new user of UE4, I am having some issues to understand how things should be done to handle game logic while following the Gameplay Framework rules.
As an example, I’m working on a simple Pong-like game (which I could probably change into a brick breaker game later on), and my issue is with regards to game logic:
At this time, I can handle input for the paddle using a PlayerController and updating the paddle by calling functions in its Tick function. I also update the ball’s velocity in its Tick function.

However, I now want to handle collisions between the ball and the paddles, and this is where I get a bit confused: where should I put the code to handle this?
I believe I can do this in the level Blueprint, but if I want to use C++, should I put the code somewhere specific, or can I create my own logic class to handle things and keep track of actors?
My main concern right now is whether having my own class to handle logic would somehow disturb the ball’s Tick function when I handle collisions; on the other hand, could I simply include my paddle class into the ball class, so that it can get it’s location?
I’ve actually already made this game using the Qt library and a logic class to handle everything that happens to the objects, but I’m not sure this is the way to go in UE4.

Also, I tried using Blueprints by editing the Level Blueprint, which allows me to get references to both the Paddle and the Ball; what would be the equivalent of this in C++, as this seems to be the proper place to handle that?

Any help to shed some light on this would be really appreciated!