Skip to content

sahastraWin/OOPS-CPP

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🏛️ Mastering Object-Oriented Programming in C++

🚀 Complete C++ OOP Journey

From Fundamentals to Advanced Object-Oriented Design



📖 About This Repository

This repository is a complete roadmap to mastering Object-Oriented Programming in C++.
It contains:

  • 📚 Structured topic-wise learning
  • 🧠 Core OOP principles
  • ⚡ Modern C++ concepts
  • 🛠️ Real implementations
  • 🎓 College practicals & assignments
  • 🔥 Advanced memory management
  • 🚀 Industry-level coding practices

Whether you're:

  • 👨‍🎓 A student preparing for exams
  • 💻 A beginner learning OOP
  • 🧠 A DSA enthusiast
  • 🚀 An aspiring software engineer

This repository is designed to help you build a strong conceptual foundation in C++ and OOP.


🎯 Core Objectives

✅ Understand Object-Oriented Programming deeply
✅ Write clean and reusable code
✅ Learn memory-safe programming
✅ Master inheritance and polymorphism
✅ Understand real-world class design
✅ Explore modern C++ features
✅ Build strong coding logic and implementation skills


🧠 OOP Concepts Covered

Pillar Description
🧩 Abstraction Hiding implementation details and exposing only functionality
🔒 Encapsulation Protecting data using access specifiers
🧬 Inheritance Reusing and extending existing classes
🎭 Polymorphism Same interface with multiple behaviors
🧠 Modularity Dividing code into manageable components
🔁 Dynamic Binding Runtime method resolution using virtual functions
📦 Composition Building complex systems using objects

✨ Repository Architecture

OOPs/
│
├── 📁 College/
│   ├── UNIT-1
│   ├── UNIT-2
│   ├── UNIT-3
│   ├── UNIT-4
│   └── UNIT-5
│
├── 📁 OOPs-Pillars/
│   ├── Abstraction/
│   ├── Encapsulation/
│   ├── Inheritance/
│   ├── Modularity/
│   └── Polymorphism/
│
├── 📁 Personal-Implementations/
│   ├── Constructors
│   ├── Friend Functions
│   ├── Operator Overloading
│   ├── Virtual Functions
│   ├── Static Members
│   ├── Structures & Unions
│   ├── Inheritance Examples
│   └── Custom OOP Logic
│
└── 📁 Topic-Wise-Lessons/
    ├── 01_Introduction
    ├── 02_Classes_and_Objects
    ├── 03_Constructors
    ├── 04_Operator_Overloading
    ├── 05_Inheritance
    ├── 06_Polymorphism
    ├── 07_Friend_Functions_and_Classes
    ├── 08_Static_Members
    ├── 09_Inner_Class
    ├── 10_Exception_Handling
    ├── 11_Templates
    ├── 12_File_Handling
    ├── 13_Destructors
    ├── 14_Smart_Pointers
    ├── 15_Constants_and_Pointers
    ├── 16_Namespaces
    ├── 17_Preprocessor_Directives
    ├── 18_CPP11_Features
    ├── 19_Abstract_Classes
    ├── 20_Virtual_Inheritance
    ├── 21_Rule_of_Three
    ├── 22_Casting_Operators
    └── 23_Composition

🔥 Featured Topics

🏗️ Classes & Objects

class Student {
private:
    string name;
    int rollNo;

public:
    Student(string n, int r) : name(n), rollNo(r) {}

    void display() const {
        cout << "Name: " << name << " | Roll: " << rollNo << endl;
    }
};
✔️ Object Creation ✔️ Access Specifiers ✔️ Member Functions ✔️ Object Lifecycle

⚡ Constructors & Destructors

  Object Created ──▶ Constructor()  ──▶ [Object Lives] ──▶ ~Destructor()
        │                  │                  │                   │
    Allocate           Initialize          In Use             Cleanup &
     Memory             Members          by program            Deallocate
Type Purpose
Default Constructor Zero-arg initialization
Parameterized Constructor Custom initialization
Copy Constructor Clone an existing object
Constructor Overloading Multiple init strategies
Destructor Resource cleanup
Deep vs Shallow Copy Memory-safe duplication

🎭 Polymorphism

class Shape {
public:
    virtual double area() const = 0;   // Pure virtual
    virtual ~Shape() = default;
};

class Circle : public Shape {
    double r;
public:
    Circle(double r) : r(r) {}
    double area() const override { return 3.14159 * r * r; }
};

class Rectangle : public Shape {
    double w, h;
public:
    Rectangle(double w, double h) : w(w), h(h) {}
    double area() const override { return w * h; }
};
          Polymorphism
         /            \
   Compile-time     Runtime
    (Static)        (Dynamic)
        |               |
   Overloading    Virtual Functions
   Op Overload    Pure Virtual / ABC

Includes: Function Overloading · Operator Overloading · Function Overriding · Virtual Functions · Pure Virtual Functions · Runtime Polymorphism


🧬 Inheritance

         ┌──────────┐
         │  Animal  │          ← Base Class
         └────┬─────┘
         ┌────┴─────┐
    ┌────┴──┐   ┌───┴────┐
    │  Dog  │   │  Cat   │    ← Single Inheritance
    └───────┘   └────────┘
         ↓
    ┌──────────────────┐
    │  GuideDog        │      ← Multilevel Inheritance
    └──────────────────┘
Type Description
Single One base → One derived
Multiple Multiple bases → One derived
Multilevel Chain of inheritance
Hierarchical One base → Multiple derived
Hybrid Combination of the above
Virtual Base Class Solves the Diamond Problem

🧠 Smart Pointers & Memory Management

// ✅ Modern C++ — No manual memory management
auto ptr  = std::make_unique<int>(42);           // Exclusive ownership
auto sptr = std::make_shared<MyClass>(args...);  // Shared ownership
std::weak_ptr<MyClass> wptr = sptr;              // Non-owning observer

// ❌ Old C++ — Prone to leaks
MyClass* raw = new MyClass();  // Who deletes this?
delete raw;                    // Easy to forget
Concept Description
RAII Resource Acquisition Is Initialization
unique_ptr Single owner, auto-deleted
shared_ptr Ref-counted shared ownership
weak_ptr Break circular references
Memory Leaks Detection and prevention

📚 Detailed Learning Modules

# Module Topics Included
01 📘 Introduction Basics of OOP, Procedural vs OOP paradigm
02 🏗️ Classes & Objects Blueprint creation, member functions, lifecycle
03 ⚙️ Constructors All constructor types, deep/shallow copy
04 🔄 Operator Overloading Custom operators, stream operators
05 🧬 Inheritance All 5 types + virtual base class
06 🎭 Polymorphism Compile-time & runtime polymorphism
07 🤝 Friend Functions Accessing private members externally
08 📦 Static Members Shared class-level data and methods
09 🔲 Inner Class Nested class design patterns
10 ⚠️ Exception Handling try, catch, throw, custom exceptions
11 🧠 Templates Generic programming, function & class templates
12 💾 File Handling Reading & writing files with streams
13 💥 Destructors Object cleanup and RAII
14 🚀 Smart Pointers unique_ptr, shared_ptr, weak_ptr
15 📌 Constants & Pointers const correctness, pointer semantics
16 🏛️ Namespaces Scope resolution and organization
17 ⚙️ Preprocessor Macros, guards, conditional compilation
18 ✨ C++11 Features auto, lambdas, range-for, nullptr, move semantics
19 🧱 Abstract Classes Pure virtual, interfaces, ABCs
20 🔀 Virtual Inheritance Diamond problem, virtual base class
21 📐 Rule of Three Copy constructor, copy assignment, destructor
22 🎯 Casting Operators static_cast, dynamic_cast, reinterpret_cast
23 🧩 Composition HAS-A relationships, object aggregation

🛠️ Technical Stack

Technology Usage
💻 C++11/14/17/20 Core Programming Language
⚙️ GCC / G++ Compilation
🧠 Visual Studio Code Development Environment
🐙 Git & GitHub Version Control
📚 STL Data Structures & Algorithms

🚀 Learning Milestones

  • Mastered Classes & Objects
  • Implemented Constructor Overloading
  • Learned Memory Management
  • Understood Virtual Functions
  • Implemented Operator Overloading
  • Worked with Smart Pointers
  • Explored Rule of Three
  • Learned Templates & Generic Programming
  • Exception Handling
  • File Handling in C++

🎯 Why This Repository Stands Out

Beginner Friendly  |  ✨ Clean Folder Structure  |  ✨ Topic-wise Organization

Real Code Implementations  |  ✨ Modern C++ Concepts  |  ✨ Practical Learning Approach

Interview Preparation Friendly  |  ✨ College + Industry Oriented


🧪 Personal Implementations

This section contains experimental work and deeper exploration:

  • 🔥 Experimental implementations — non-trivial edge cases
  • 🧠 Concept testing — validating mental models with code
  • Edge cases — corner-case analysis
  • 🚀 Advanced logic — complex OOP internals

Examples include:

Copy Constructors · Friend Classes · Virtual Base Classes · Complex Operator Overloading · Typecasting · Union & Structures · Scope Resolution · Static Members


📸 Repository Preview

📂 Structured Learning Architecture


💡 Modern C++ Features Included

// Type inference
auto value = 10;

// Range-based for loop
vector<int> nums = {1, 2, 3, 4};
for (auto x : nums) cout << x << " ";

// Lambda expressions
auto square = [](int x) { return x * x; };

// Smart pointers
auto ptr = make_unique<MyClass>();

// nullptr (not NULL)
int* p = nullptr;
Feature Description
auto Compiler-inferred types
Range-based loops Clean iteration syntax
Smart pointers Safe heap allocation
nullptr Type-safe null pointer
Lambda expressions Inline anonymous functions
Move semantics Efficient resource transfer
Type inference Less boilerplate, same safety

📈 Future Enhancements

  • GUI Projects using C++
  • STL Mastery Section
  • Design Patterns (GoF)
  • Multithreading & Concurrency
  • Competitive Programming Utilities
  • Advanced Memory Optimization
  • Game Development Basics

🤝 Contributions

Contributions are welcome! If you'd like to:

  • Improve code quality
  • Add more examples
  • Optimize implementations
  • Enhance documentation

Feel free to fork the repository and open a pull request.


🌟 Support

If you found this repository helpful:

  • Star the repository
  • 🍴 Fork it and build on top
  • 📢 Share with your peers

👨‍💻 Author

Sahastrajeet Hardaha

🚀 Passionate Developer · DSA Enthusiast · OOP Explorer

author tagline

GitHub


📜 Philosophy

"Programs must be written for people to read, and only incidentally for machines to execute."

Harold Abelson


🏁 Final Note

This repository represents a continuous journey toward mastering:

🧠 Problem Solving 🏗️ Software Design ⚡ Modern C++ 🚀 Scalable Practices

Every file contributes toward building a stronger foundation in software engineering and object-oriented thinking.

footer

About

A comprehensive collection of C++ implementations demonstrating core Object-Oriented Programming (OOP) concepts including Abstraction, Encapsulation, Inheritance, Polymorphism, and Modularity.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages