How would you implement sokoban

I am new to Java game programming. So I started with some simple games such as snake, moon lander, and I am doing sokoban now.

Following the idea of OOP, I created Player.class, Box.class, Grid.class, and some other classes for structure. When it comes to logic, I found that those classes hinder the design.

Then I realizes it would be much easier to implement sokoban just using a 2D int array, in which the integer value presents the player, box and so on.

Perhaps it is because I am a newbie and don’t know how to do things right. But I want to know what is the best way to design.