Software Programming is like complex mechanical parts. For example, if you look at cars, you will find it consisting of different parts, each one forms a module. If that parts fails, simply replace it without having to know about it and which is inside. The technician person knowing details about the motor cannot worry how to know the details about other parts such as the sparking parts. In the same fashion, modular programming behaves.
Some people design program parts that they well know about and export this part in a known format (such as DLL format). Other people use this part in their program without having to know about it. This is what forms modular programming. Another name is object oriented programming. Each software part is considered as an object, hence its name.
C#, Java, and C++ supports this type of programming. It is considered as an advanced topic in programming. Old languages don’t support it. Following is some examples to get deeper insight in this concept.
C# Visual Components: In Visual Studio, the appearance is in the form of windows. Each window contains buttons, text boxes, and other components that enable the user to interact with the program. Each of those components is considered as a part or object that is independent of each other. The developer has to place it and use it without worrying about what it contains inside. This is the basis for object oriented programming theory. Of course, advanced people can develop and modify it using programming tools, but in the common sense, it is not required.
As another example, let us say you have to write a program to calculate the incomes for employees in your company based on a set of many factors such as the days of attendance, the behavior of employees, and other. This function itself will be written after that it will behave as a module that other programmers can use in their own programs.
As a good design practice when programming, you must depend on modular concept. The key advantage here is that if you want to modify a specific function in the whole program, there is no need to destroy the entire work and then rebuild it again. All you need is to go to the module concerning the specific part that affects the performance and repair it. The overall function is improved by playing on a specific module that may by a very small software piece compared to the overall program.