OOP is an abstraction tool. When you have a problem you need to divide it into sub problems and represent each sub problem as an abstraction. The end result is that the collection of abstractions should model the problem domain.