Week 3 presentation - Computing Sciences

Download Report

Transcript Week 3 presentation - Computing Sciences

Week 3
Introduction to Computer Science
and Object-Oriented Programming
COMP 111
George Basham
Week 3 Topics
3.1.1 Constructing Objects
3.1.2 Accessor and Mutator
Methods
3.1.3 The API Documentation
3.1.4 Implementing a Test
Program
3.1.5 Object References
3.1.1 Constructing Objects
• We will learn how to construct objects that
allow us to go beyond our earlier String
object and System.out object creation
examples
• Let’s look at the Java class library
Rectangle class
• A Rectangle object isn’t a rectangular
shape, it is an object that contains a set of
numbers that describes a rectangle
3.1.1 Constructing Objects Cont.
• Each rectangle is described by the x and y
coordinates of its top-left corner and its
width and height
• Rectangle box = new
Rectangle(5,10,20,30)
x
y
width
height
=
=
=
=
5
10
20
30
3.1.1 Constructing Objects Cont.
• The new operator makes a Rectangle
object
• It uses parameters in the call to one of the
constructors to initialize the data of the
object
• It returns the object’s address in memory
• In our example, the address (object
reference) is stored in the object variable
identified by box, of type Rectangle
3.1.2 Accessor and Mutator Methods
• A method of a class that accesses an
object and returns some information about
it without changing the object is called an
accessor method
• A method whose purpose is to modify the
state of an object (its data) is called a
mutator method
3.1.2 Accessor and Mutator Methods Cont.
• The length method of the String class
is an accessor method. It does not modify
the state of the string object, it just counts
the number of stored characters
• The Rectangle class has a number of
accessor methods, getX, getY,
getWidth and getHeight
• double width = box.getWidth();
3.1.2 Accessor and Mutator Methods Cont.
• The translate method of the Rectangle
class is a mutator method
• Translate moves a rectangle by a certain
distance in the x and y directions
• box.translate(15, 25);
• The above method call moves the
rectangle by 15 units in the x direction and
25 units in the y direction
3.1.2 Accessor and Mutator Methods Cont.
Illustration:
Effect of translate
method
Using the translate method to move a
rectangle
3.1.3 The API Documentation
• The classes and methods of the Java
library are listed in the API documentation
(application programming interface)
• The API documentation can be found on
the web at http://java.sun.com
• The API for each class starts out with a
purpose section, then summary tables for
the constructors and methods
• Click on a method link to get detailed info
3.1.4 Implementing a Test Program
1. Provide a new class
2. Supply a main method
3. Inside the main method, construct one or
more objects
4. Apply methods to the objects
5. Display the results of the method calls
import java.awt.Rectangle;
public class MoveTester
{
public static void main(String[] args)
{
Rectangle box = new Rectangle(5, 10, 20, 30);
// Move the rectangle
box.translate(15, 25);
// Print information about the moved rectangle
System.out.println("After moving, the top-left
corner is:");
System.out.println(box.getX());
System.out.println(box.getY());
}
}
Output: text message then 20 followed by 35
/**
* Test the translate method.
*/
protected void testTranslate()
{
Rectangle box = new Rectangle(5, 10, 20, 30);
box.translate(15, 25);
assertEquals(20.0, box.getX(), .0001);
assertEquals(35.0, box.getY(), .0001);
}
Example: JUnit test method.
Upon doing Run Tests a green checkmark indicates
successful test, a red X indicates that test failed.
3.1.5 Object References
• In Java a variable whose type is a class
does not hold an object, it holds the
memory location of an object.
• Object reference is the technical term to
denote the memory location of an object.
• Rectangle box = new
Rectangle(5,10,20,30)
• The variable box refers to the object that
the new operator constructed.
3.1.5 Object References Cont.
• The new operator returned a reference to
the new object, and that reference is
stored in the box variable.
• Again, the box variable does not contain
the object, it refers to the object
• Remember that number variables actually
store numbers, not a reference to the
number
3.1.5 Object References Cont.
• A number variable and an object variable
behave differently when you make a copy of the
variable:
// number variable 1:
int luckyNbr = 13;
// number variable 2 has value 13:
int luckyNbr2 = luckyNbr;
// number variable 2 now has value 12, but
// number variable 1 still has value 13:
luckyNbr2 = 12;
3.1.5 Object References Cont.
• Note object variable behavior:
// object variable 1:
Rectangle box = new Rectangle(5, 10, 20, 30);
// object variable 2 will have same value
// as object variable 1, a MEMORY ADDRESS:
Rectangle box2 = box;
// calling a mutator method on object variable
// 2 will change the object referenced by both
// variables:
box2.translate(15, 25);
3.1.5 Object References Cont.
• Thus, both these statements will produce
identical output since the object variables
reference the same object:
System.out.println(box);
System.out.println(box2);
Output:
java.awt.Rectangle[x=20,y=35,width=20,
height=30]
Reference: Big Java 4th Edition by Cay
Horstmann
3.1.1 Constructing Objects (section
2.6 in Big Java)
3.1.2 Accessor and Mutator Methods
(section 2.7 in Big Java)
3.1.3 The API Documentation (section
2.8 in Big Java)
3.1.4 Implementing a Test Program
(section 2.9 in Big Java)
3.1.5 Object References (section 2.10
in Big Java)