Bird
Raised Fist0
C++programming~10 mins

OOP principles overview in C++ - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - OOP principles overview
Start
↓
Encapsulation
↓
Inheritance
↓
Polymorphism
↓
Abstraction
↓
End
This flow shows the four main OOP principles in order: Encapsulation, Inheritance, Polymorphism, and Abstraction.
Execution Sample
C++
#include <iostream>

class Animal {
  public:
    virtual void sound() { }
};

class Dog : public Animal {
  public:
    void sound() override { std::cout << "Woof"; }
};
Defines a base class Animal and a derived class Dog that overrides the sound method.
Execution Table
StepActionEvaluationResult
1Create Animal objectAnimal a;Object a created
2Call a.sound()a.sound();No output (empty method)
3Create Dog objectDog d;Object d created
4Call d.sound()d.sound();Outputs: Woof
5Assign Dog to Animal pointerAnimal* ptr = &d;Pointer ptr points to Dog object
6Call ptr->sound()ptr->sound();Outputs: Woof (polymorphism)
7EndExecution stops
💡 Program ends after demonstrating polymorphism with virtual function call
Variable Tracker
VariableStartAfter Step 1After Step 3After Step 5Final
anoneAnimal objectAnimal objectAnimal objectAnimal object
dnonenoneDog objectDog objectDog object
ptrnonenonenonePoints to Dog objectPoints to Dog object
Key Moments - 3 Insights
Why does calling sound() on Animal pointer to Dog object output 'Woof'?
Because sound() is declared virtual in Animal, the call uses Dog's overridden method (see execution_table step 6). This is polymorphism.
What is encapsulation in this example?
Encapsulation means bundling data and methods inside classes like Animal and Dog, hiding internal details from outside (shown by class definitions).
How does inheritance work here?
Dog inherits from Animal, so Dog has Animal's interface and can override methods like sound() (see class Dog : public Animal).
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what does step 4 output?
ANo output
BWoof
CError
DAnimal sound
💡 Hint
Check the 'Result' column in execution_table row for step 4
At which step does polymorphism happen?
AStep 2
BStep 4
CStep 6
DStep 3
💡 Hint
Look for virtual function call through base class pointer in execution_table
If sound() was not virtual, what would ptr->sound() output at step 6?
ANo output
BWoof
CCompile error
DAnimal sound
💡 Hint
Without virtual, base class method is called regardless of pointer type
Concept Snapshot
OOP Principles Overview in C++:
- Encapsulation: Bundle data and methods in classes
- Inheritance: Derive new classes from existing ones
- Polymorphism: Use virtual functions to override behavior
- Abstraction: Hide complex details behind simple interfaces
Use virtual keyword for polymorphism.
Full Transcript
This visual execution shows the four main OOP principles using C++ code. We start by creating an Animal object with an empty sound method. Then we create a Dog object that inherits Animal and overrides sound to print 'Woof'. Calling sound on Dog outputs 'Woof'. Assigning Dog to an Animal pointer and calling sound demonstrates polymorphism because the Dog's method runs. Encapsulation is shown by bundling data and methods inside classes. Inheritance lets Dog reuse Animal's interface. Polymorphism uses virtual functions to call the right method at runtime. The quiz checks understanding of outputs and polymorphism behavior.

Practice

(1/5)
1. Which of the following is NOT one of the four main principles of Object-Oriented Programming (OOP)?
easy
A. Encapsulation
B. Compilation
C. Polymorphism
D. Inheritance

Solution

  1. Step 1: Recall the four main OOP principles

    The four main principles are encapsulation, inheritance, polymorphism, and abstraction.
  2. Step 2: Identify the option not in the list

    Compilation is a process of converting code, not an OOP principle.
  3. Final Answer:

    Compilation -> Option B
  4. Quick Check:

    OOP principles exclude compilation [OK]
Hint: Remember the four OOP pillars: E, I, P, A [OK]
Common Mistakes:
  • Confusing compilation with abstraction
  • Mixing OOP principles with programming processes
2. Which keyword is used in C++ to create a new class?
easy
A. class
B. struct
C. object
D. define

Solution

  1. Step 1: Identify the C++ keyword for defining a class

    In C++, the keyword to define a class is class.
  2. Step 2: Check other options

    struct defines a structure, object is not a keyword, and define is for macros.
  3. Final Answer:

    class -> Option A
  4. Quick Check:

    Use class to define classes [OK]
Hint: Use 'class' keyword to define classes in C++ [OK]
Common Mistakes:
  • Confusing struct with class
  • Using 'object' as a keyword
  • Mixing macros with class definition
3. What will be the output of the following C++ code?
class Animal {
public:
    void sound() { std::cout << "Animal sound"; }
};

class Dog : public Animal {
public:
    void sound() { std::cout << "Bark"; }
};

int main() {
    Animal* a = new Dog();
    a->sound();
    delete a;
    return 0;
}
medium
A. Runtime error
B. Bark
C. Compilation error
D. Animal sound

Solution

  1. Step 1: Understand method call without virtual keyword

    The sound method is not virtual, so the pointer type Animal* calls Animal's method.
  2. Step 2: Determine output

    Since sound is not virtual, Animal sound is printed.
  3. Final Answer:

    Animal sound -> Option D
  4. Quick Check:

    Non-virtual method calls base class method [OK]
Hint: Without virtual, base class method runs [OK]
Common Mistakes:
  • Assuming polymorphism without virtual
  • Expecting derived class method call
  • Ignoring pointer type effect
4. Identify the error in the following C++ code snippet:
class Vehicle {
private:
    int speed;
public:
    void setSpeed(int s) { speed = s; }
};

int main() {
    Vehicle v;
    v.speed = 100;
    return 0;
}
medium
A. setSpeed method is not defined
B. Missing semicolon after class definition
C. Cannot access private member 'speed' directly
D. Vehicle object not created properly

Solution

  1. Step 1: Check access to private member

    The member speed is private and cannot be accessed directly outside the class.
  2. Step 2: Identify the error in main()

    Trying to assign v.speed = 100; causes an access violation error.
  3. Final Answer:

    Cannot access private member 'speed' directly -> Option C
  4. Quick Check:

    Private members need public methods for access [OK]
Hint: Private members can't be accessed outside class [OK]
Common Mistakes:
  • Trying to access private variables directly
  • Ignoring access specifiers
  • Assuming public by default
5. You want to design a C++ class hierarchy where a base class Shape defines a method area() but each derived class calculates area differently. Which OOP principle does this best demonstrate?
hard
A. Polymorphism
B. Inheritance
C. Encapsulation
D. Abstraction

Solution

  1. Step 1: Understand the scenario of different area calculations

    Each derived class implements area() differently, but shares the same interface.
  2. Step 2: Identify the OOP principle

    This is polymorphism: same method name, different behaviors in subclasses.
  3. Final Answer:

    Polymorphism -> Option A
  4. Quick Check:

    Same method, different behaviors = Polymorphism [OK]
Hint: Different behaviors, same method name = polymorphism [OK]
Common Mistakes:
  • Confusing with inheritance or abstraction
  • Thinking encapsulation means method overriding
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard