Object Oriented Programming Study Cards

Enhance Your Learning with Object Oriented Programming Flash Cards for quick learning



Object Oriented Programming

A programming paradigm that organizes data and behavior into reusable structures called objects, which are instances of classes.

Class

A blueprint or template for creating objects, defining their properties (attributes) and behaviors (methods).

Object

An instance of a class, representing a specific entity with its own state and behavior.

Inheritance

A mechanism in which one class inherits the properties and behaviors of another class, allowing for code reuse and creating a hierarchy of classes.

Polymorphism

The ability of an object to take on many forms, allowing objects of different classes to be treated as objects of a common superclass.

Encapsulation

The bundling of data and methods within a class, hiding the internal details and providing a controlled interface for interacting with the object.

Abstraction

The process of simplifying complex systems by breaking them down into smaller, more manageable parts, focusing on the essential features and hiding unnecessary details.

Object Oriented Design Principles

Guidelines and best practices for designing object-oriented systems, including SOLID principles (Single Responsibility, Open-Closed, Liskov Substitution, Interface Segregation, Dependency Inversion).

Design Patterns

Proven solutions to common design problems, providing reusable templates for solving similar problems in different contexts.

Exception Handling

The process of handling and responding to exceptional situations or errors that occur during program execution, preventing the program from crashing.

Memory Management

The process of allocating and deallocating memory for objects, ensuring efficient utilization of system resources and preventing memory leaks.

Object Oriented Analysis and Design

A methodology for analyzing, designing, and modeling systems using object-oriented concepts, focusing on understanding user requirements and translating them into software solutions.

Object Oriented Programming Languages

Programming languages that support object-oriented programming, such as Java, C++, Python, and Ruby.

Object Oriented Database Management Systems

Database management systems that store and retrieve data using object-oriented principles, allowing for complex data modeling and efficient querying.

Object Oriented Testing

A testing approach that focuses on testing individual objects and their interactions, ensuring the correctness and reliability of object-oriented systems.

Encapsulation vs Abstraction

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.

Method Overloading

A feature in object-oriented programming that allows multiple methods with the same name but different parameters to be defined in a class.

Method Overriding

A feature in object-oriented programming that allows a subclass to provide a different implementation of a method defined in its superclass.

Abstract Class

A class that cannot be instantiated and serves as a base for deriving concrete (non-abstract) classes, providing common attributes and behaviors.

Interface

A contract specifying a set of methods that a class must implement, allowing for polymorphism and loose coupling between objects.

Static vs Instance

Static members (variables and methods) belong to the class itself, while instance members belong to individual objects (instances) of the class.

Constructor

A special method used for initializing objects, typically used to set initial values for object attributes.

Destructor

A special method used for releasing resources and performing cleanup operations when an object is no longer needed or goes out of scope.

Inheritance vs Composition

Inheritance is an 'is-a' relationship between classes, while composition is a 'has-a' relationship, where one class contains an instance of another class.

Association

A relationship between two classes, indicating that objects of one class are connected to objects of another class.

Aggregation

A specialized form of association where objects of one class 'own' objects of another class, but the owned objects can exist independently.

Composition

A specialized form of aggregation where objects of one class 'own' objects of another class, and the owned objects cannot exist independently.

Dependency

A relationship between two classes where one class depends on the other class, typically through method parameters or return types.

Single Responsibility Principle

A design principle stating that a class should have only one reason to change, meaning it should have a single responsibility or purpose.

Open-Closed Principle

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.

Liskov Substitution Principle

A design principle stating that objects of a superclass should be replaceable with objects of its subclasses without affecting the correctness of the program.

Interface Segregation Principle

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.

Dependency Inversion Principle

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.

Factory Method Pattern

A creational design pattern that provides an interface for creating objects, but allows subclasses to decide which class to instantiate.

Singleton Pattern

A creational design pattern that ensures a class has only one instance, providing a global point of access to it.

Observer Pattern

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.

Strategy Pattern

A behavioral design pattern that enables selecting an algorithm at runtime, encapsulating each algorithm in a separate class, and making them interchangeable.

Adapter Pattern

A structural design pattern that allows objects with incompatible interfaces to work together, by providing a common interface that both can use.

Decorator Pattern

A structural design pattern that allows adding new behaviors to objects dynamically, by wrapping them in an object of a decorator class.

Composite Pattern

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.

Template Method Pattern

A behavioral design pattern that defines the skeleton of an algorithm in a base class, allowing subclasses to provide specific implementations of certain steps.

Exception

An abnormal condition or error that occurs during program execution, disrupting the normal flow of the program.

Try-Catch Block

A construct in programming that allows catching and handling exceptions, preventing the program from crashing and providing alternative paths of execution.

Memory Leak

A situation in which a program fails to release memory that is no longer needed, leading to inefficient memory usage and potential performance issues.

Garbage Collection

The automatic process of reclaiming memory occupied by objects that are no longer reachable or in use, freeing up system resources.

UML Diagrams

Unified Modeling Language diagrams used for visualizing, specifying, constructing, and documenting the artifacts of an object-oriented system.

Use Case Diagram

A UML diagram that represents the interactions between actors (users) and a system, showing the different ways the system can be used.

Class Diagram

A UML diagram that represents the static structure of a system, showing classes, their attributes, methods, and relationships.

Sequence Diagram

A UML diagram that represents the dynamic behavior of a system, showing the sequence of interactions between objects over time.

State Diagram

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.

Activity Diagram

A UML diagram that represents the flow of activities or processes in a system, showing the sequence of actions and decisions.

Java

A popular object-oriented programming language known for its platform independence, strong type checking, and extensive libraries.

C++

A general-purpose object-oriented programming language known for its efficiency, performance, and support for low-level programming.

Python

A versatile object-oriented programming language known for its simplicity, readability, and extensive standard library.

Ruby

A dynamic, reflective object-oriented programming language known for its simplicity, expressiveness, and focus on developer productivity.

Object Relational Mapping (ORM)

A technique that allows mapping objects to relational databases, providing an abstraction layer for database operations and eliminating the need for writing SQL queries.

Unit Testing

A software testing method that involves testing individual units or components of a program to ensure their correctness and functionality.

Integration Testing

A software testing method that involves testing the interaction between different components or modules of a system to ensure their proper integration and functioning.

System Testing

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.

Acceptance Testing

A software testing method that involves testing the system against the user's requirements and expectations, ensuring its readiness for deployment and use.