Consider the following C++ Class to identify State, Identity and Behavior of Objects in a Class:
class Car {
public:
string color;
int speed;
int fuel_level;
void accelerate() {
speed += 10;
}
void brake() {
speed -= 10;
}
void refuel(int fuel) {
fuel_level += fuel;
}
};
int main() {
// Create two objects of class Car
Car car1;
car1.color = “Red”;
car1.speed = 50;
car1.fuel_level = 30;
Car car2;
car2.color = “Red”;
car2.speed = 50;
car2.fuel_level = 30;
car1.accelerate(); // car1’s speed becomes 60
}
Identifying State, Identity, and Behavior in the Car
Class
State
The state of a Car
object is defined by its attributes or data members. In this case, the state includes:
- color: A string representing the car’s color.
- speed: An integer representing the car’s current speed.
- fuel_level: An integer representing the car’s fuel level.
Identity
The identity of a Car
object is its unique identifier. In most programming languages, this is typically the object’s memory address. While not explicitly shown in the code, each Car
object created will have a distinct memory address that distinguishes it from other Car
objects.
Behavior
The behavior of a Car
object is defined by its methods or functions. In this case, the behavior includes:
- accelerate(): Increases the car’s speed by 10.
- brake(): Decreases the car’s speed by 10.
- refuel(int fuel): Increases the car’s fuel level by the specified amount.
Example in the main
function:
The main
function demonstrates the use of Car
objects:
- Object Creation: Two
Car
objects,car1
andcar2
, are created. - State Assignment: The
color
,speed
, andfuel_level
attributes of both cars are initialized. - Behavior Invocation: The
accelerate()
method is called oncar1
, increasing its speed to 60.
Note: Although car1
and car2
have the same initial state, they are distinct objects with separate identities. This means that changes made to one object will not affect the other.