If we say the thinking in Procedual programming C++ is to find out what we will do first, we can understand the OOP in this way:
Think about what we will do with in the procedual first. For instance, we want to build up a management program. So the basic element in this software is the employees. Thus we have the first class which focus on the instances, the people. Then let's think the method of the employees. A human should have his/her name. So set a public character string of name. Then, as a employee he/she should have an ID number. So set a integer variable to record ID. And that's it. We can just develop the software at the very begining like this. (JUST THE BACKBONES AT FIRST, it is also an advantage of OOP^^.)
Secondly we gonna build the method. First we have to make sure the validation of the ID number. What if the user input an wrong number or alphabet charactor? In case, we build a function isIDvalid() to solve this problem. We build the function in the class. When user want's to check they just input their information and the method can autometically check the validation.
At last, we set the main method. The main function call the class and its method, then the software runs. And that's it.
By try this we can obtain a conclusion. In object oriented programming, we firstly consider the class and the object, then we build the method later. And if we want to update the algrithm we just write the derived class. The derived class will obtain all the properties and methods within its bases class, and it owns its new methods. Thus we update the software~