๐ Scenario: You are creating a simple program to manage a Car object. The car has a speed attribute that you want to control carefully. You will use getter and setter methods to safely access and update the speed.
๐ฏ Goal: Build a C++ class called Car with a private speed variable. Create getter and setter methods to read and update the speed. Use these methods to set the speed to 60 and then print it.
๐ What You'll Learn
Create a class named Car with a private integer variable speed
Add a public getter method getSpeed() that returns the current speed
Add a public setter method setSpeed(int s) that sets the speed to s
In main(), create an object of Car, set the speed to 60 using the setter, and print the speed using the getter
๐ก Why This Matters
๐ Real World
Getter and setter methods are used in real-world programs to protect data inside objects and control how it is accessed or changed.
๐ผ Career
Understanding getters and setters is important for writing clean, safe, and maintainable code in many programming jobs involving object-oriented programming.
Progress0 / 4 steps
1
Create the Car class with a private speed variable
Write a class called Car with a private integer variable named speed. Do not add any methods yet.
C++
Hint
Use the class keyword to define the class. Declare speed under private:.
2
Add getter and setter methods to the Car class
Inside the Car class, add a public getter method named getSpeed() that returns an int, and a public setter method named setSpeed(int s) that sets the private speed variable to s.
C++
Hint
Put the getter and setter methods under public:. The getter returns speed. The setter takes an int s and assigns it to speed.
3
Create a Car object and set the speed
In the main() function, create an object named myCar of type Car. Use the setter method setSpeed(60) on myCar to set the speed to 60.
C++
Hint
Create the object with Car myCar;. Call the setter with myCar.setSpeed(60);.
4
Print the speed using the getter method
In main(), after setting the speed, print the speed using std::cout and the getter method getSpeed() on myCar. Include #include <iostream> and use std::endl to end the line.
C++
Hint
Use std::cout << myCar.getSpeed() << std::endl; to print the speed.
Practice
(1/5)
1. What is the main purpose of getter and setter methods in C++ classes?
easy
A. To control access to private variables safely
B. To make variables public automatically
C. To delete variables from the class
D. To print variable values directly
Solution
Step 1: Understand encapsulation in classes
Getter and setter methods are used to access and modify private variables safely without exposing them directly.
Step 2: Identify the role of getters and setters
Getters return the value, setters allow controlled modification, often with validation.
Final Answer:
To control access to private variables safely -> Option A
Quick Check:
Getter and setter = control access [OK]
Hint: Getters and setters protect private data access [OK]
Common Mistakes:
Thinking getters/setters make variables public
Confusing setters with printing functions
Assuming getters modify data
2. Which of the following is the correct syntax for a setter method in C++ to set a private integer variable age?
easy
A. int setAge() { return age; }
B. void setAge(int a) { age = a; }
C. void getAge(int a) { age = a; }
D. int age(int a) { age = a; }
Solution
Step 1: Identify setter method signature
A setter usually returns void and takes a parameter to set the private variable.
Step 2: Match correct syntax
void setAge(int a) { age = a; } matches: void return type, parameter int a, and sets age = a.
Final Answer:
void setAge(int a) { age = a; } -> Option B
Quick Check:
Setter = void + parameter + assign [OK]
Hint: Setter methods return void and take a parameter [OK]
Common Mistakes:
Using return type int for setter
Naming setter as getAge
Setter returning a value
3. What will be the output of the following code?
#include <iostream>
class Person {
private:
int age;
public:
void setAge(int a) { if(a >= 0) age = a; else age = 0; }
int getAge() { return age; }
};
int main() {
Person p;
p.setAge(-5);
std::cout << p.getAge();
return 0;
}
medium
A. Garbage value
B. -5
C. 0
D. Compilation error
Solution
Step 1: Analyze setter behavior with negative input
The setter checks if the input is >= 0; if not, it sets age to 0.
Step 2: Check what happens with -5
Since -5 < 0, age is set to 0.
Final Answer:
0 -> Option C
Quick Check:
Negative input sets age to 0 [OK]
Hint: Setter validates input before setting value [OK]
Common Mistakes:
Assuming negative value is stored
Expecting garbage value from uninitialized variable
Thinking code won't compile
4. Identify the error in the following setter method and choose the correct fix:
class Box {
private:
int length;
public:
void setLength() { length = l; }
};
medium
A. Remove the method entirely
B. Change return type to int
C. Make length public instead
D. Add parameter int l to setLength method
Solution
Step 1: Check setter method parameters
The setter tries to assign 'l' but has no parameter 'l' defined.
Step 2: Fix by adding parameter
Adding 'int l' as a parameter allows passing the value to set length.
Final Answer:
Add parameter int l to setLength method -> Option D
Quick Check:
Setter needs parameter to assign value [OK]
Hint: Setter must have parameter to set value [OK]
Common Mistakes:
Forgetting to add parameter
Changing return type unnecessarily
Making variable public instead of fixing setter
5. You want to create a class Temperature that stores temperature in Celsius but only allows values between -273 and 1000. Which setter method correctly enforces this rule?
hard
A. void setTemp(int t) { if(t >= -273 && t <= 1000) temp = t; else temp = -273; }
B. void setTemp(int t) { temp = t; }
C. int setTemp(int t) { if(t >= -273) temp = t; return temp; }
D. void setTemp() { temp = 0; }
Solution
Step 1: Understand the value range requirement
Temperature must be between -273 and 1000 inclusive.
Step 2: Check which setter enforces this range
void setTemp(int t) { if(t >= -273 && t <= 1000) temp = t; else temp = -273; } checks the range and sets temp accordingly; others do not enforce limits properly.