I know that the answer is pretty clear because you get better on everything with time and experience. But I'll tell you where I'm coming from:A couple of months ago I decided to learn iOS development, so I studied C (read the C primer plus book, pretty good book). Recently I finished Programming in Objective C and lately I started following the Stanford course for Winter 2013 (I'm really enjoying it. I'm only at the beginning of the course, on lecture #3, and had to do only 2 homeworks).I understand all the syntax and concepts so far, and I think Objective C is an amazing language. But something has been bothering me, I thought it might be because I'm new to OOP. For example when the instructor defines models (matching cards game for instance), I definitely understand the syntax and logic, but sometimes I'm trying to think if it as taking a task (card game for instance) and breaking it into the right logic. Is this something I will get used to with time? Because at this stage when I try to predict things I'm supposed to do, pretty often I go and see some of his logic and go back to code. Actually we haven't had to go from zero, he always tells us to follow the presentation with the code in this stage, but I really want to improve at taking a task and knowing how to break it into the right models, controllers, etc.
Is object-oriented conceptual thinking something you build with experience?
object oriented;object oriented design;objective c
In my opinion, object composition comes with time and experience.When you are creating and designing an object, remember that you are modelling, whether you are basing it on a real world object or a specific domain concern.From what you write I think you understand how to read the object, it's just the process of designing the object you are having problems with.I suggest what you try and do is think abstract and where you have a problem work out what fields of information you need to represent your data structure.Remember that in object orientation, subclassing, interfaces and abstract classes are your friends. They allow you do design your solutions elegantly and reuse code where appropriate.Hope this helps.