Download week03topics

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Smart Pascal wikipedia , lookup

Java (programming language) wikipedia , lookup

Java performance wikipedia , lookup

Smalltalk wikipedia , lookup

Class (computer programming) wikipedia , lookup

Resource management (computing) wikipedia , lookup

Name mangling wikipedia , lookup

C++ wikipedia , lookup

Design Patterns wikipedia , lookup

Function object wikipedia , lookup

Object-oriented programming wikipedia , lookup

C Sharp (programming language) wikipedia , lookup

C Sharp syntax wikipedia , lookup

Object lifetime wikipedia , lookup

Transcript
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 Implementing a Test
Program
3.1.4 The API Documentation
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 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.4 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.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 2nd 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 Implementing a Test Program
(section 2.8 in Big Java)
3.1.4 The API Documentation (section
2.9 in Big Java)
3.1.5 Object References (section 2.10
in Big Java)