Object Oriented Programming Concepts

Compendium of Object Oriented Programming Concepts

  • Definition of Object-Oriented Programming (OOP):

    • It is a model of programming languages based on the creation of partitioned memory areas specifically designed to hold both data and methods.
    • It serves as a modern approach to software development, designed to overcome various shortcomings and limitations associated with earlier procedural programming languages.
  • Detailed Curricular Contents and Page References:

    • Introduction: Initial overview of the paradigm.
    • Object-Oriented Programming (OOP) (Pages 22-36): General concepts and the foundation of the model.
    • Four Main Principles of OOP Programming (Pages 37-49): The core pillars including Abstraction, Encapsulation, Inheritance, and Polymorphism.
    • OOP vs. Procedure Oriented Programming (Pages 50-62): A critical comparison of the two paradigms.
    • Elementary Concept of Objects and Classes (Pages 63-72): Basic definitions and the relationship between the two.
    • Object (Pages 73-82): Deep dive into the entity representing real-world components.
    • Class (Pages 83-122): The blueprint or template for creating objects.
    • Class is an Object Factory (Pages 123-160): The concept of classes producing multiple object instances.
    • Class as a User-Defined Data Type (Pages 161-192): Extending standard data types using complex class structures.
    • Abstraction (Pages 193-207): Focusing on essential features while hiding unnecessary details.
    • Encapsulation (Pages 208-236): The wrapping of data and behavior into a single unit.
    • Object Encapsulates State & Behavior (Pages 237-263): Specific focus on how objects maintain internal state and perform actions.
    • Inheritance (Pages 264-288): Mechanisms for hierarchical classification and code reuse.
    • Polymorphism (Pages 289-295): The ability of different objects to respond to the same message in unique ways.
    • Message Passing: The communication methodology within the OOP paradigm.
    • Development Ecosystem: Information regarding Open Source software, Integrated Development Environments (IDEs), specific versions of Java, and hardware/software requirements.

Procedural vs. Object-Oriented Programming Models

  • Procedural Programming Languages:

    • Foundational Theory: These languages are built around the concept of breaking a program down into a series of discrete functions.
    • Key Element: Functions are considered the primary or key element of this paradigm.
    • Function Association: In these systems, there is an associative function for every specific task the system is required to perform.
    • Communication Style: System communication occurs by passing data directly between these functions.
    • Alternative Nomenclature: Due to its structure, this paradigm is formally known as Functions Oriented Programming languages.
  • Object-Oriented Programming (OOP) Paradigm:

    • Analogy: This model is designed to be analogous to the real world.
    • Composition: An OOP program is composed of entities that represent real-world objects.
    • Key Element: Objects are the primary element in this paradigm.
    • Behavior Definition: The behavior of these real-world entities is specified by defining methods.
    • Communication Style: Just as individuals in the real world communicate by requesting information from one another, objects communicate via methods.

Technical Environment and Tools

  • Software and Development Kits:

    • Java Platform: Requires the use of specific versions of Java.
    • Development Kit: The suggested tool is the OpenJDK (Open Java Development Kit).
    • Nature of Software: Development often utilizes Open Source resources.
  • Integrated Development Environments (IDEs):

    • Various IDEs are recommended for working with Java in the OOP context:
      • DrJava
      • NetBeans
      • MyEclipse
      • BlueJ
  • System Requirements:

    • Successful implementations require adherence to specific hardware and software requirement thresholds as defined by the version of the Java development environment in use.