The Loop
Launching the program instantiates the Game class. As of now, the main function makes a single call to the Game constructor.
The game constructor contains the control flow for the game loop, so it's where the Game remains for as long as it's running. The game consists of four major functions: initialize, loadContent, update, and draw.
initialize - Every object that requires initializiation contains an initialize method, which is called by its constructor. Parameters are received in the constructor. In the initialize method, objects are instantiated, variables are set, and loadContent is called.
loadContent - Similar to initialize in that it's a one-time setup function, but loadContent deals exclusively with loading external data - textures, sounds, levels, etc. loadContent is called in initialize before any other objects which require this data to already be loaded.
update - Called every frame. Includes the handling of input, all game logic, as well as update calls to member objects and manager functions.
draw - Called every frame, after all update calls have been made. Handles drawing of graphics to the screen, as well as regulating framerate.
These four functions are the backbone of the game loop. Any class that updates has an update method, and every class that draws has a draw method. When tasks are relegated to manager classes, they can be hooked into the game loop simply by making the appropriate calls in these methods. For example, the following diagram shows the cascade of update and draw calls that draws a sprite to the screen.