Lecture for March 27

In the Real World...

Objects are known for having characteristics. A car has on average 4 wheels, 2-4 doors, a steering wheel.

Objects can perform actions. A car can drive, hold cargo, and honk.

In the Programming World...

Object-Oriented Programming

Class Structure

public class Classname {
    // Fields
    // Constructors
    // Methods
}

Fields

Fields are instance variables, they store values, help define state, and exist in memory for the lifetime of the object.

public class Car {
    private double price;
    private double gas;
}

Constructor

We can build an object through a constructor. It is a special kind of method, this method requires that you not have a return type and that you name it the same as the class itself.

Constructors help set default field values for the different properties of our class.

public class Car {
    // Begin Constructor
    public Car(double cost) {
        this.price = cost;
        this.gas = 0;
    }
    // End Constructor
    private double price;
    private double gas;
}

Note: The this keyword refers to the object's fields. This helps keep it separate from other variables you can create in the method and the input parameters you receive.

Accessor Method - "Getter"

We like to classify methods into two types, accessors and mutators.

Getter methods return a copy of an instance field. It does not change the state of the object.

public double getPrice() {
    return this.price;
}

Mutator Method - "Setter"

This type of method modifies an instance field. It does not return anything and changes the state of the object.

public void setPrice(double cost) {
    this.price = cost;
}

Example of Car Class In All Its Glory

public class Car {
    // Instance Variables
    private int mpg;
    private double price;

    // Constructors
    public Car() {
        this.price = 0;
        this.mpg = 0;
    }
    public Car(double cost, int mpg) {
        this.price = cost;
        this.mpg = mpg;
    }

    // Accessors
    public double getPrice() {
        return this.price''
    }
    public int getMpg() {
        return this.mpg;
    }

    // Mutators
    public void setPrice(double cost) {
        this.price = cost;
    }
    public void setMpg(int mpg) {
        this.mpg = mpg;
    }
}

Using Classes

Just like how we used the Scanner class, we can also use our new Car class.

public class TestCar {
    public static void main(String[] args) {
        // Declare an object reference
        Car c;

        // Initialize the object
        c = new Car();

        // Update the fields of the object
        c.setPrice(3000);
        c.setMpg(22);

        // Print object information
        System.out.println("Price is " + c.getPrice() )
    }
}