Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Smart Pascal wikipedia , lookup
Java (programming language) wikipedia , lookup
Java performance wikipedia , lookup
Class (computer programming) wikipedia , lookup
Resource management (computing) wikipedia , lookup
Name mangling wikipedia , lookup
Design Patterns wikipedia , lookup
Function object wikipedia , lookup
Object-oriented programming wikipedia , lookup
C Sharp (programming language) wikipedia , lookup
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)