Classes and Objects PPT

Download Report

Transcript Classes and Objects PPT

CLASSES & OBJECTS
Representin’ real-world things in code-space
Brian Camodeca, Mercyhurst College
What is a class?


Defines, conceptually, some real-world thing and
how the computer can build such a thing; a
blueprint.
Consists of state (stuff describing the thing) and
behavior (stuff the thing does).
Building a class




Classes have built-in mechanisms for state and
behavior
Instance variables represent state
Methods represent behaviors
Consider this…
Release the hounds




What if our application needs to work with dogs?
Built-in types like integers, strings, and arrays alone
can’t really help us here.
But, maybe we can unify them in this new class
thingie!
Consider things about a dog…
A Dog
State







Name
Breed
Fur Color
Weight
Temperament
Hungry
Tired
Behavior






Bark
Beg
Eat
Chase Tail
Fetch
Sleep
A Dog…in code







Name : String
Breed : String
Fur Color : String
Weight : int
Temperament : String
Hungry : boolean
Tired : boolean
Building a class

For example, Dog.java

public class Dog {
String name, breed;
int weight;
public void bark() {
System.out.println(“Woof”);
}
}
Building a class

Creating a class creates a new type
If we name our class “Dog”, we can now create
variables of type Dog

Dog fido;

Creating an object

An object is a given instance of a class
A class is the abstract idea, an object is the concrete
example

Dog fido = new Dog();

Manipulating the object




We can change the state of the object by
manipulating its instance variables directly (for
now)
For example,
Dog someDog = new Dog();
someDog.weight = 35;
someDog.name = “Fido”;
System.out.println(someDog.name);
Using the object




We can invoke behaviors of the object by calling its
methods by name
For example,
someDog.bark();
Prints “Woof!” to the console
Manipulating the object II




Before, we changed the values directly.
DON’T ALLOW THIS
Set instance variables as “private” and create
public “getter” and “setter” methods
For example…
Manipulating the object II
public class Dog {

private String name, breed;
private int weight;
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
}
Encapsulation



But why?
Encapsulation! Also known as “information
hiding”
Consider this…
Encapsulation


(Assuming variables are still public)
Dog someDog = new Dog();
someDog.weight = -7;
someDog.name = “Fido”;

No control over what values get assigned to the instance variables.

If only we had a way to make sure-
“Setters”

Write methods to set instance variables!

public void setWeight (int weight) {
if (weight > 0) {
// phew
this.weight = weight;
}
else {
// AHHHHH! PANIC!!!
// Throw exception
}
}
“Getters”
Uh-oh, only other members of the class can “see”
private members. We need a liaison!

public int getWeight() {

return this.weight;
}
The power of instance variables


Make the class dynamic!
Consider the correlation between a dog’s size and
the sound of its bark…
The power of instance variables
public void bark() {

if (this.weight > 50) {
System.out.println(“Woof!”);
}
else if (this.weight > 15) {
System.out.println(“Ruff!”);
}
else {
System.out.println(“Yip!”);
}
}
The constructor



Special function that is invoked upon object
instantiation
Java convention: named the same as the class’
name, and is that class’ return type
For example…
The constructor
public Dog() {

// Do Something
}
The constructor
public Dog(String name) {

this.name = name;
}
public Dog(String name, String breed) {

this.name = name;
this.breed = breed;
}
The toString() method



A method that returns a string representation of
that object.
By default it’s not very helpful, but we can
implement our own toString() method!
@Override
Where is “static”?


Static members of a class can be accessed without
an instantiation, like our readLine() method.
All our variables pertain to the particular instance
of the dog, therefore they are non-static.