Comprehensive and Detailed Explanation From Exact Extract:
Object-oriented programming (OOP) languages are distinguished by their use of objects, which encapsulate data and behavior, and support features like inheritance, polymorphism, and encapsulation. According to foundational programming principles (e.g., Certiport Scripting and Programming Foundations Study Guide), this object-based approach is unique to OOP and not inherent to procedural or functional paradigms.
Option A: "The language is optimized for recursive programming." This is incorrect. Recursion is a technique supported by many languages across paradigms, including procedural (e.g., C), functional (e.g., Haskell), and object-oriented (e.g., Java). It is not unique to OOP.
Option B: "The language is based on the concept of modular programming and the calling of a subroutine." This is incorrect. Modular programming and subroutines (functions or procedures) are central to procedural languages (e.g., C) and also supported in functional languages. While OOP languages support modularity, this is not their distinguishing feature.
Option C: "The language treats programs as evaluating mathematical functions." This is incorrect. This describes functional programming languages (e.g., Haskell, Lisp), which emphasize immutability and function evaluation, not OOP.
Option D: "The language supports decomposing a program into objects that interact with one another." This is correct. OOP languages (e.g., Java, C++, Python) are characterized by organizing code into objects that encapsulate data and methods, interacting through messages or method calls. This is not a feature of procedural (e.g., C) or functional (e.g., Scheme) languages, which focus on procedures or functions, respectively.
Certiport Scripting and Programming Foundations Study Guide (Section on Programming Paradigms).
Python Documentation: “Classes” (https://docs.python.org/3/tutorial/classes.html).
W3Schools: “Java OOP” (https://www.w3schools.com/java/java_oop.asp).