Bird
Raised Fist0
C++programming~30 mins

OOP principles overview in C++ - Mini Project: Build & Apply

Choose your learning style10 modes available
OOP Principles Overview in C++
๐Ÿ“– Scenario: You are creating a simple program to understand the basic principles of Object-Oriented Programming (OOP) in C++. This program will help you see how classes and objects work, and how encapsulation, inheritance, and polymorphism are used in real life.
๐ŸŽฏ Goal: Build a C++ program that demonstrates the four main OOP principles: encapsulation, inheritance, polymorphism, and abstraction using simple classes and methods.
๐Ÿ“‹ What You'll Learn
Create a class with private data members to show encapsulation
Add a public method to access private data
Create a derived class to demonstrate inheritance
Use a virtual function to show polymorphism
Print outputs to show how each principle works
๐Ÿ’ก Why This Matters
๐ŸŒ Real World
OOP is used to model real-world things like animals, vehicles, or users in software, making programs easier to understand and maintain.
๐Ÿ’ผ Career
Understanding OOP is essential for software development jobs, as it is the foundation of many programming languages and frameworks.
Progress0 / 4 steps
1
Create a class with private data members
Create a class called Animal with a private string variable name. Add a public constructor that takes a string parameter to set name. Add a public method getName() that returns the name.
C++
Hint

Remember to keep name private and provide a public constructor and getter method.

2
Add a derived class to demonstrate inheritance
Create a class called Dog that inherits from Animal. Add a public constructor to Dog that takes a string parameter and passes it to the Animal constructor.
C++
Hint

Use class Dog : public Animal and call the base constructor in the initializer list.

3
Add a virtual function to demonstrate polymorphism
In the Animal class, add a public virtual method makeSound() that returns a string "Some sound". Override this method in the Dog class to return "Bark".
C++
Hint

Use virtual keyword in base class and override in derived class.

4
Create objects and print outputs to show OOP principles
Create an Animal object called animal with name "Generic" and a Dog object called dog with name "Buddy". Use pointers of type Animal* to point to both objects. Print the name and sound of both objects using getName() and makeSound().
C++
Hint

Use pointers of type Animal* to point to both objects and call methods.

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