When given a problem to solve or a project to write, it is a mistake to sit down and try to immediately write it. Unless the program is trivial, you're bound to get stuck doing that. It is necessary to design the program first. Your questions asks what methods should go where and what classes you should have, but you won't know that until you have designed the game.
To start with, what exactly are you trying to make? There are many different kinds of memory games out there. What kind have you been asked to make? Or if you have your choice of games, what kind have you decided on? Will the game have graphics or be text-based? If it has graphics, draw out the board or whatever on paper and have a solid idea about what it should look like. Think also about things like a scoring system (if needed), supporting multiple players (if that is a requirement) and so on. You need to have a clear idea in your head of what the game itself is supposed to be before you even think of writing any code.
After you have a solid design for the game itself, then you can think about the code. If the program is to be graphical--but doesn't require any custom painting--then you might consider creating a subclass of JFrame and having a different class where everything gets tied together. To be clear, I'm talking about if your game will be run by simple GUI controls like buttons and check boxes. If you are taking this approach and don't know much about GUI's, this link will help you get started:
http://docs.oracle.com/javase/tutorial/uiswing/index.html
If your game will be graphical and does need custom painting logic, I recommend creating a custom subclass of JPanel for rendering the game. The following link has some interesting simple game tutorials that might help you think about how to create your game:
http://zetcode.com/tutorials/javagamestutorial/