Objects & Class
What is an object?
component of a program
contains variables and data
perform certain actions
interact with other pieces of the program
What is a class?
blue prints of objects
abstraction data type (ADT)

Instance
Instance – every object is an instance of a class
a real thing of a class
can be manipulated
instances keep track of their own information
    called member data/variables
knows how to do things with different methods

Method
Method (interface)
member variable except it can do more tricks
   like move(), attackMonster() and etc..
Special methods
Constructors
get the object ready to be used
Destructors
terminate the object

Struct and Class
struct Player{
  int health;
  int strength;
  int agility;
}
Player Jane, John;
class Player {
   public:
        int health;
    int strength;
        int agility;
};
Player Jane, John;

Constructors & Destructors
   Player:: Player () {
 strength = 10;
  agility = 10;
  health = 10;
}
Player::~Player() {
   strength = 0;
   agility = 0;
   health = 0;
} //automatically called

Instantiation
Purpose
set up an object: i.e. instantiate an object.
How
Constructor automatically invoked at declaration time
Player John;   //default constructor
Player::Player(int s, int a) {
    strength = stg;
    agility = agl;
    health = 10;
}
Player Jane(20, 5); //function overloading

"class Player {"
class Player {
    int health;
    int strength;
    int agility;
    Player();              // constructor - no return type
    Player(int s, int a);  // alternate constructor void  void move();
    void attackMonster();
    void getTreasure();
};

"class Player {"
class Player {
  private: // hidden
    int health;
    int strength;
    int agility;
  public:
    Player();              // constructor - no return type
    Player(int s, int a);  // alternate constructor void  void move();
    void attackMonster();
    void getTreasure();
};

"void Player::move()..."
void Player::move() {
   cout <<“I’ve moved to a new position.” << endl;
}
void Player::getTreasure() {
  health++;  // increments health by one
}
int main() {
Player Jane, John(5, 5);
cout <<“Jane’s  health:.” << Jane.health << endl;
  Jane.getTreasure();
cout <<“Jane’s  health:.” << Jane.health << endl;
};

"class Engine {"
class Engine {
public:
  void start() const {}
  void rev() const {}
  void stop() const {}
};
class Wheel {
public:
  void inflate(int psi) const {}
};

"class Window {"
class Window {
public:
  void rollup() const {}
  void rolldown() const {}
};
class Door {
public:
  Window window;
  void open() const {}
  void close() const {}
};

"class Car {"
class Car {
public:
  Engine engine;
  Wheel wheel[4];
  Door left, right; // 2-door
};
int main() {
  Car car;
  car.left.window.rollup();
  car.wheel[0].inflate(72);
}