Hey that's great that you're interested in doing this, I think this is a great way to contribute and learn ... you've given me some ideas here!
I wouldn't worry so much about knowing how to design and create your own classes ... that's a pretty complex topic of how to properly design a class to allow multiple (ie: a large amount) of contributors to one single project. You also don't need to worry so much about objects as those are used when the program is being used.
Chances are that whatever project that you're joining, they already have the parent classes designed. A core group of managers / programmers will be the only group will full admin access to these core classes. What they'll proabably do is ask their contributors to help by assigning them methods / functions that the core programming team has defined (ie: specified in the parent classes what data the method will receive and what must come back and how / in what format). I'm guessing the core team will then pass along a file ... kind of like an empty frame for you to add your code and send it back to them to include it as a child or extension of the parent class.
I could be totally wrong as I've never contributed in this way before to the open source community, but I have been involved in some other programming teams as a contributor.
Right, here I have a question (obviously =]), and I'm more in need of advice than an answer.
Well, I have decided I want to get into the Open source software that we know and love, but I don't really know how I can get into it, if you know what I mean.
I have a good grasp of C++ and some other languages so I would be able to do basic projects or sections.
Basically, will C++ be useful to me and how can I start developing.
Thanks for any advice you may be able to offer.