Enhance Your Learning with Object Oriented Programming Flash Cards for quick learning
A programming paradigm that organizes data and behavior into reusable structures called objects, which are instances of classes.
A blueprint or template for creating objects, defining their properties (attributes) and behaviors (methods).
An instance of a class, representing a specific entity with its own state and behavior.
A mechanism in which one class inherits the properties and behaviors of another class, allowing for code reuse and creating a hierarchy of classes.
The ability of an object to take on many forms, allowing objects of different classes to be treated as objects of a common superclass.
The bundling of data and methods within a class, hiding the internal details and providing a controlled interface for interacting with the object.
The process of simplifying complex systems by breaking them down into smaller, more manageable parts, focusing on the essential features and hiding unnecessary details.
Guidelines and best practices for designing object-oriented systems, including SOLID principles (Single Responsibility, Open-Closed, Liskov Substitution, Interface Segregation, Dependency Inversion).
Proven solutions to common design problems, providing reusable templates for solving similar problems in different contexts.
The process of handling and responding to exceptional situations or errors that occur during program execution, preventing the program from crashing.
The process of allocating and deallocating memory for objects, ensuring efficient utilization of system resources and preventing memory leaks.
A methodology for analyzing, designing, and modeling systems using object-oriented concepts, focusing on understanding user requirements and translating them into software solutions.
Programming languages that support object-oriented programming, such as Java, C++, Python, and Ruby.
Database management systems that store and retrieve data using object-oriented principles, allowing for complex data modeling and efficient querying.
A testing approach that focuses on testing individual objects and their interactions, ensuring the correctness and reliability of object-oriented systems.
Encapsulation is the bundling of data and methods within a class, while abstraction is the process of simplifying complex systems by focusing on essential features and hiding unnecessary details.
A feature in object-oriented programming that allows multiple methods with the same name but different parameters to be defined in a class.
A feature in object-oriented programming that allows a subclass to provide a different implementation of a method defined in its superclass.
A class that cannot be instantiated and serves as a base for deriving concrete (non-abstract) classes, providing common attributes and behaviors.
A contract specifying a set of methods that a class must implement, allowing for polymorphism and loose coupling between objects.
Static members (variables and methods) belong to the class itself, while instance members belong to individual objects (instances) of the class.
A special method used for initializing objects, typically used to set initial values for object attributes.
A special method used for releasing resources and performing cleanup operations when an object is no longer needed or goes out of scope.
Inheritance is an 'is-a' relationship between classes, while composition is a 'has-a' relationship, where one class contains an instance of another class.
A relationship between two classes, indicating that objects of one class are connected to objects of another class.
A specialized form of association where objects of one class 'own' objects of another class, but the owned objects can exist independently.
A specialized form of aggregation where objects of one class 'own' objects of another class, and the owned objects cannot exist independently.
A relationship between two classes where one class depends on the other class, typically through method parameters or return types.
A design principle stating that a class should have only one reason to change, meaning it should have a single responsibility or purpose.
A design principle stating that software entities (classes, modules, functions) should be open for extension but closed for modification, allowing for easy addition of new functionality without modifying existing code.
A design principle stating that objects of a superclass should be replaceable with objects of its subclasses without affecting the correctness of the program.
A design principle stating that clients should not be forced to depend on interfaces they do not use, promoting the use of smaller, more focused interfaces.
A design principle stating that high-level modules should not depend on low-level modules, but both should depend on abstractions, promoting loose coupling and flexibility.
A creational design pattern that provides an interface for creating objects, but allows subclasses to decide which class to instantiate.
A creational design pattern that ensures a class has only one instance, providing a global point of access to it.
A behavioral design pattern that defines a one-to-many dependency between objects, so that when one object changes state, all its dependents are notified and updated automatically.
A behavioral design pattern that enables selecting an algorithm at runtime, encapsulating each algorithm in a separate class, and making them interchangeable.
A structural design pattern that allows objects with incompatible interfaces to work together, by providing a common interface that both can use.
A structural design pattern that allows adding new behaviors to objects dynamically, by wrapping them in an object of a decorator class.
A structural design pattern that allows treating a group of objects as a single object, by creating a tree-like structure of objects and applying operations recursively.
A behavioral design pattern that defines the skeleton of an algorithm in a base class, allowing subclasses to provide specific implementations of certain steps.
An abnormal condition or error that occurs during program execution, disrupting the normal flow of the program.
A construct in programming that allows catching and handling exceptions, preventing the program from crashing and providing alternative paths of execution.
A situation in which a program fails to release memory that is no longer needed, leading to inefficient memory usage and potential performance issues.
The automatic process of reclaiming memory occupied by objects that are no longer reachable or in use, freeing up system resources.
Unified Modeling Language diagrams used for visualizing, specifying, constructing, and documenting the artifacts of an object-oriented system.
A UML diagram that represents the interactions between actors (users) and a system, showing the different ways the system can be used.
A UML diagram that represents the static structure of a system, showing classes, their attributes, methods, and relationships.
A UML diagram that represents the dynamic behavior of a system, showing the sequence of interactions between objects over time.
A UML diagram that represents the different states of an object and the transitions between those states, showing the behavior of the object in response to events.
A UML diagram that represents the flow of activities or processes in a system, showing the sequence of actions and decisions.
A popular object-oriented programming language known for its platform independence, strong type checking, and extensive libraries.
A general-purpose object-oriented programming language known for its efficiency, performance, and support for low-level programming.
A versatile object-oriented programming language known for its simplicity, readability, and extensive standard library.
A dynamic, reflective object-oriented programming language known for its simplicity, expressiveness, and focus on developer productivity.
A technique that allows mapping objects to relational databases, providing an abstraction layer for database operations and eliminating the need for writing SQL queries.
A software testing method that involves testing individual units or components of a program to ensure their correctness and functionality.
A software testing method that involves testing the interaction between different components or modules of a system to ensure their proper integration and functioning.
A software testing method that involves testing the entire system as a whole, including all components and their interactions, to ensure its compliance with requirements.
A software testing method that involves testing the system against the user's requirements and expectations, ensuring its readiness for deployment and use.