Basic Java 03 Objects N Classes
Basic Java 03 Objects N Classes
Object-Oriented Programming
Outline
Java program
public class Greeting {
public void greet() {
System.out.print("Hi there!");
}
}
33
Designing a class
Designing a class
Writing a class
1. Write the class
class Dog {
instance
variables
DOG
int size;
String breed;
String name;
a method
void bark() {
System.out.println("Ruff! Ruff!");
}
size
breed
name
bark()
Writing a class
2. Write a tester (TestDrive) class
with code to test the Dog class
Writing a class
Instance variables/methods belong to an object.
Thus, when accessing them, you MUST specify
which object they belong to.
dot notation (.)
and
the object
reference
Object references
3 steps of object declaration, creation and assignment:
1. Declare a reference variable
Dog myDog = new Dog();
2. Create an object
Dog myDog = new Dog();
3. Link the object and the reference
Dog myDog
new Dog();
10
Object references
Dog myDog = new Dog();
11
message content
extra information
12
Objects have
state (instance variables)
behavior (methods)
A method can use instance variables' value and
change the object's state.
A method can use instance variables so that objects
of the same type can behave differently
13
DOG
State affects behavior.
Dogs of different sizes
behave differently.
void bark() {
if (size > 14)
System.out.println("Ruff! Ruff!");
else
System.out.println("Yip! Yip!");
}
size
breed
name
bark()
getBigger()
method changes
state
void getBigger() {
size += 5;
}
}
i hc Cng ngh - HQG HN
14
15
class DogTestDrive {
one
name:null
size:0
breed:null
one.bark();
}
}
16
class DogTestDrive {
one
name:null
size: 7
breed:null
one.bark();
}
}
17
class DogTestDrive {
one
name:null
size: 7
breed:null
Dog object 2
two
name:null
size:13
breed:null
one.bark();
}
}
18
class DogTestDrive {
one
name:null
size: 7
breed:null
Dog object 2
two
name:null
size:13
breed:null
one.bark();
}
}
19
class DogTestDrive {
one
name:null
size: 7
breed:null
Dog object 2
two
name:null
size:18
breed:null
one.bark();
}
}
20
class DogTestDrive {
one
name:null
size: 7
breed:null
Dog object 2
two
name:null
size:18
breed:null
one.bark();
}
Ruff! Ruff!
21
class DogTestDrive {
one
name:null
size: 7
breed:null
Dog object 2
two
name:null
size:18
breed:null
one.bark();
}
Ruff! Ruff!
Yip! Yip!
%>
i hc Cng ngh - HQG HN
22
Compare
size, name
vs. bruno,
value
syntax?
scope?
class Dog {
int size;
String name;
...
void getBigger() {
size += 5;
}
}
23
Local variables
belong to a method
declared within a method
MUST be initialized before
use
public class DogTestDrive {
public static void main(String []
Dog bruno = new Dog();
bruno.name = "Bruno";
...
int size = bruno.size;
}
}
24
Encapsulation
Bad
class Person {
String name;
Date birthday;
String address;
// about his/her dog
String dogName;
String dogBreed;
int dogSize;
Better
class Dog {
int size;
String breed;
String name;
...
class Person {
}
String name;
Date birthday;
String address;
Dog petDog;
}
25
26
27
28
29
Less error-prone
30