The Paper - Page 4 - Understanding Symbian Series 60
The Workflow of C++ Game-Development on a Series 60 Platform device
Andreas Jakl, Revision 1.0, July 2004
2.4 Understanding Symbian OS and Series 60
In Symbian OS C++ several aspects are handled differently than in standard C++. Classic examples are string handling, memory handling with the unique model of the Cleanup Stack and handling of key press events. To get an overview, the following documents provide a good summary of important aspects:  gives you an introduction about the unique aspects of Symbian OS. It features a good explanation of how memory handling works and why the concepts introduced are important to follow. Finally, if you have experience with developing in C++ for Windows,  explains the differences in Symbian OS.
2.4.1 Application architecture
There are several ways to design an application for the Series 60 Platform [2, 10]. For some applications a dialogue-based approach might be useful; for others, the view-based architecture works best. As this paper focuses on a game, this chapter gives a short overview of the basic application structure for a game.
This class is the entry point for the application and is responsible for creating instances of the other classes. In Series 60, it is derived from CAknApplication.
Stores the state of the application. If the program does not need to have a persistent file, it is only used to launch the AppUi . In Series 60, it is derived from CAknDocument .
Handles application-wide events like menus and is responsible for view switching. Normally it does not have screen presence. In Series 60 it is derived from CAknViewAppUi or CAknAppUi .
Handles drawing to the screen and takes care of user input. It is also possible to pass a command to the AppUi . In Series 60, this is derived from CAknView / CCoeControl .
Of course a game needs more classes, this is covered in chapter 3.2.1.
2.4.2 Server-client concept
For several tasks, applications need to access servers provided by Symbian OS. They are implemented to keep the size of the system small, as common resources can be shared by many clients . The most important example is access to files. All applications define a pointer to an object of the class RFs (which accesses the file server) , then the framework automatically calls Connect() so you can start to use it without creating your own instance of this object. This call is part of the client-side API, which is implemented as a shared library and provides access to the server. Another prominent example is the Telephony server which can be used to do the handling of calls, or, in the case of the game presented in this paper, to get network information.