If we look closely then we will find that both in procedural style and in the Object Oriented style we have the same number of methods and methods have almost the same name.

However one major differnce is how we deal with the data. The way we manage data or state in the procedural style is very different from the way we manage data or state in the object oriented style.

In the Object Oriented style the data or state resides in the instance of the class. In the case of procedural style the data or the state is at the global level and that's why we do not need to pass the age to any method.

Having your data or state globally available means that we have less control over how that data is accessed. Any code can change any data because the data is globally available.

That's not the case in the Object Oriented style of programming.

In this case the age of the person is tucked in the class Person. If anyone wants to know the age of the person then that item needs to have access to the instance person and then that item need to ask the person what't the age. If a class does not want to reveal its state then that class and keep its data private also.

This means that in the Object Oriented style classes have a control over what data to reveal to the outside world and what data not to reveal. This is a great thing because it allows a class to reveal only the important thing that external world needs to know and rest of the things can be private to the class.

In the software engineering world methods are also called "behaviors" and data is also called "state". That's why whe you read about Object Oriented then you will hear a lot about "data" and "behavior".

For example take a look at this stackoverflow answer about the difference between procedural style of programming and Object Oriented style of programming. This answer talks about state and behavior.

      to navigateEnterto select Escto close