Procedural programming and Object-oriented programming (OOP) are two paradigms in programming. They are fundamentally different in how they approach problem-solving and organizing programs. Under procedural programming, a program is organized as a step-by-step instruction to solve a problem. The instructions are executed linearly, but they can include elements that control the flow of a program, such as loops or decision trees (Ahmed & Prasad, 2016). These elements make it possible to divide the program into sub-programs, called procedures or functions, and reuse code (Jog, 2017; Rai, 2019). While this makes procedural programming more intuitive and easy to maintain, its applicability to larger projects is limited (Rai, 2019). Nonetheless, procedural programming is often used for scripts that connect various parts of larger programming projects and database programming (Ahmed & Prasad, 2016). Procedural programming is an older paradigm that is relevant for smaller projects, various kinds of scripting.
OOP is a paradigm that expands upon procedural programming; instructions and data are combined into blocks called objects. Objects can exchange data and interact with one another but are generally designed with a distinct purpose (Rai, 2019). Objects are created from a template, called a class, which supports inheritance, meaning that a parent’s properties and behavior can be extended without altering its functionality (Rai, 2019). This improves the reusability of OOP code, thus allowing more complicated programs to be built under OOP. Furthermore, OOP projects are easier to divide into blocks that can be developed by multiple specialists in parallel or modify individual components without affecting others (Rai, 2019). However, this approach requires better planning and coordination between the people working on it (Rai, 2019). Furthermore, since individual components can take more time to develop under OOP, they can be less suitable for smaller-scale projects (Ahmed & Prasad, 2016). Thus, OOP may be necessary for complex projects, especially where multiple components must interact with one another, but retain a degree of independent operability.
References
- Ahmed, A,. & Prasad, B. (2016). Foundations of Software Engineering. Boca Raton, FL: CRC Press.
- Barner, C. (2012). Social media and communication. New York, NY: Sage.
- Jog, T. M. (2017). Reactive Programming with Java 9: Build Asynchronous applications with Rx.Java 2.0, Flow API and Spring WebFlux. Birmingham, UK: Packt Publishing.
- Rai, L. (2019). Programming in C++: Object Oriented Features. Berlin, Germany: Walter de Gruyter GmbH & Co KG.