Big Picture : S60 and Symbian C++ Learning Path
This picture will show you a typical learning path tree (reversed). You could find where to start and what you could make after investigating a technologies branch.
You could also consider NODE A as the start line or the gate to the S60/Symbian C++ world. As long as you had done some C/C++ programmers work earlier, or you are a college(even high school) student who had courses on C/C++ programming language, you are qualified to continue. If unluckily you haven't, I would like to recommend some online resources, course-ware and books worth reading, for very beginner to C/C++ computer programming world. Don't be scared, this isn't that hard, the last "HelloWorld" explanation will certainly ease you.
NODE B has two parts, the left one is more generic and the right one is specific for S60 platform and Symbian OS C++. If you want to learn other platforms such as Apple iPhone or BlackBerry from RIM, there are also generic and specific two steps to follow.
After finish taught yourself these two parts, you should be able to write a "HelloWord" application and test it on your S60 mobile phone.
At NODE B1 you have to fill yourself knowledge about mobile development tools and fundamentals for mobile devices. Even nowadays a smart phone is quite like a desktop or laptop computer, there are still a lot of differences to concern before creating applications. After knowing the differences and mobile-device-only features, you could design and develop high-quality and best suites for phones applications. Remember, BEAR those concepts in mind ALL TIME, this is quite important.
<link to apiref l#AboutSymbianOSLibrary%2efinding How to use Symbian Developer Library>
From here we could explore more about your S60 phone's underneath software, know how a native S60 application works and how it looks like inside. I could tell you that the message application or alarm function you used everyday with your phone is written like the way you learned here. They obey the same the S60/Symbian OS C++ application architecture.
- Important documentations:
<link to apiref Symbian OS C++ Essential Idioms> BIBLE
- Reference you should bookmark (or download then put under pillow):
There are four parts in NODE C, and I want to let you know their placement is meaningful. C4 is the base, most people start from this part first. C2 and C3 are built on C4, they have a brother-like relationship because each of them targeting different application categories, which will be separated in D level nodes. C1 is advanced topics, you could learn this after you practice C2, C3, C4 fluently. However, C1 is also something fundamental and tightly connected with mobile device specific features, because if you don't know these techniques well, you could only develop small scale utility, but not rock-solid application which could stand in market and industry for seasons. You could review the topology of these four sections again, if C1 removed, then the C2 and C3 will be very unstable, even fall. Also if you are at beginner phase, mastering only C4 will be OK to continue, but with no BIG success.
Frankly, I am also a[n old] student on this advanced topics. I would suggest you find more answers from the resources below.
- Fundamentals of Symbian C++/Active Objects
- Fundamentals of Symbian C++/Leaves & The Cleanup Stack
- Active_object | CleanupStack | Thread_vs_Active_Object
- S60 Platform Thread And Active Objects Example
I always give C2 a summary "Standard S60 UI". Nokia puts a lot of money and human man time on research of User Interface (Human-Machine interacting technologies). S60 is proved to be a solid mobile phone UI with quite good usability. If you are not going to develop a FPS 3D game or your customer is a large company who seeks standardization, topics in this part will be enough.
<Link to UI Control Framework>
Enjoy playing games? Want to make something entertaining? Here we go. Besides games theory and physical simulation, you have to know how to put result image onto screen. Cause games screening is a so different programming technology that C3 stands beside C2 as its brother. Here you control the screen like a canvas, your drawing tools and user responses are fully under control of your code. Some good resources are:
C4, the base part really has a broad topics to mention. From string(called Descriptors in Symbian OS C++) to file, from dialog to key press, from messaging to networking, and etc. A good way to mastering all you need is to create an experimental project which implements a small useful function, and during your coding try to learn every related API suite.
<link to apiref E32, User Library> | <link to apiref F32, File Server>
<link to apiref BuffersAndStringsOverview%2etoc Buffers and Strings>
<link to apiref MemoryManagementOverview%2etoc Memory management>
<link to apiref TimersAndTimingServicesOverview%2etoc Timers and timing services>
<link to apiref CommsInfrastructure%2eesock%2etoc Sockets server>
<link to apiref System%20Libraries%2esub%2eguide%2egen%2eindex System libraries>
and a variety of topics...
NODE D has three brothers. They are all grown ups who could represent themselves. The policy of sorting them used in this level is the application category. In market, native S60 applications are usually sorted into these three categories: Enterprise, Multimedia and General. As lines between NODE C and NODE D indicate, Enterprise applications often utilize NODE C2 technologies, while Multimedia applications always use NODE C3 technologies. These relationship is in common sense but not an absolute law. In this level there are also a D?-2 block, this block shows you a featured application in this category. What's more is each featured application I showed here is an open source project, means you could grab its source code and make your investigation, learning from it. Isn't it great? And after finishing this level of learning, I think you could make good native S60 applications.
Applications in Enterprise category require stability, security, usability and less graphics work. To get these result, some topics could give you convenience.
<link to apiref DBMSGuide%2etoc DBMS, Database management system>
If an application belongs to neither Enterprise category nor Multimedia/Games category, then it belongs here. It's a little hard to express some detailed requirements for this category, and I would tell the old story: make an idea of an application best solved a practical problem, and try to implement it with your knowledge, learn topics/API suites during your designing and coding.
Possible useful topics may include:
Games and multimedia player, recorder, manipulators belongs to this category. This is a wonderful and shiny place. Most of API suites from NODE C2 can be used here, and extended technologies could send you to peak.
You could edit this SVG by Ink Scape, an open source and free software running on Windows, Linux and Mac OS X.
The source is here File:BP LP.svg.zip
kcomex 12:35, 16 March 2008 (EET)