Someone will probably chime in with Smalltalk and the original intent or something.
But in modern OOP, understanding and simplicity are not what it's all about.
It's all about pushing the complexity into the language runtime stuff where it is no longer your problem.
OOP is popular because we can do stuff like port=DBConnection(); port.connect("foo.baz") and document= port.request("x").
Then, later on, when port and document are inaccessible, garbage collection will get them.
An OOP programmer doesn't think "Oh, the port.connect must make a socket and do a handshake and then..." they just think "It does all the port connect stuff".
As a student when the goal is to understand, OOP makes no sense, because encapsulation literally is all about making it so you don't need to think about things.
It lets you treat objects the same way we treat physical devices. Black boxes someone else built.
There's no beautiful reasoning or amazing objective logic saying OOP is better than I know of, or anything that even makes any sense at all if you think about it.
It just happens to work pretty well when people with a wide range of skill levels do large projects and nobody understands anything beyond their tiny part, and nobody really cares if things are simple under the hood.
If you want beauty and logic, learn a pure functional language or go study math.
And if you want to structure stuff in an modern OOP style, you just stop thinking in terms of simplicity and unified wholes and start thinking in terms of black boxes to be used by people who would be annoyed if they actually had to read the code.
Any entity you would talk about when describing the code is something that could be represented as an object.
Any collection of a variable number of a ton of entities like customers is something you could do as some kind of database connection object.
Any periodic task might be a "Machine" that is a class that manages a thread.
It's(In theory) a 1 to 1 mapping of ideas to classes, although some things just aren't worth a whole inventing object for and should probably be a data dict+procedural.
But, some would say this whole thing is nonsense for idiots who can't think, so maybe if you find yourself actually able to do procedural well you should try something more logical like haskell.