Johnny Doe wrote:I needed to take a string and parse it (with a fairly simple algorithm) but decided to create a new class that would have the methods needed to do what I needed (check for a special code in the string), the string being used to construct the object.
You've just described one of the oldest things in the book: a parser. This pattern is used in Java and any other language to construct an AST (Abstract Syntax Tree), representing the program, from the input source text characters. Depending on how complex your source language is, this can reasonably consist of an entire package of classes to represent the AST, not to mention the lexical analyzer and parser.
Honestly I would say don't worry about creating new classes or objects as long as things are clear to you conceptually. Java is designed to be efficient to do those things, and unless there is a specific performance problem with allocating too many objects, that can be optimized.
As far as the game stuff, a "Game" class has an important role as a single object responsible for orchestrating the logic of the game itself. This could be implemented either as a set of static methods, or a Singleton object, or just a regular object. There's no one right way to do it.
A typical "Game" class includes a start method, a render method, and an update method.
The render method is responsible for updating the screen, reflecting the current state of the world. This is where you call into your graphics API such as OpenGL or DirectX, whatever.
The update method computes the new state of the world based on the current state, actions, and time. This step includes a lot of things like collision detection, animation, etc.
A "Player" object would be a class with methods to poll the current state of the input device, move the player's avatar, select menus, etc.