Except where otherwise noted, the contents of this document are Copyright 2010 Stuart Reges and Marty Stepp.
lab document created by Whitaker Brand and Marty Stepp
Goals for today:
public class class name { // fields field type field name; // methods public return type method name() { statements; } }A couple things look different than programs for past homeworks:
main
method. It won't be run like a client
program.static
keyword in the header.
Suppose a method in the BankAccount
class is defined as:
public double computeInterest(int rate)
If the client code has declared a BankAccount
variable
named acct
, which of the following would be a valid call to
the above method?
What are the x- and y-coordinates of the Point
s referred to
as p1
, p2
, and p3
after the
following code executes? Give your answer as an x-y pair such as (0, 0).
(Recall that Point
s and other objects use reference
semantics.
Point p1 = new Point(); p1.x = 17; p1.y = 9; Point p2 = new Point(); p2.x = 4; p2.y = -1; Point p3 = p2; p1.translate(3, 1); p2.x = 50; p3.translate(-4, 5); |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
public class Point { int x; // Each Point object has int y; // an int x and y inside. public void Point(int initX, int initY) { // Constructor initX = x; initY = y; } public static double distanceFromOrigin() { // Returns this point's int x; // distance from (0, 0). int y; double dist = Math.sqrt(x*x + y*y); return dist; } public void translate(int dx, int dy) { // Shifts this point's x/y int x = x + dx; // by the given amounts. int y = y + dy; } } |
The above Point
class has 8 errors. Can you find them all?
void
static
x
and y
x
and y
(remove word int
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
public class Point { int x; int y; public Point(int initX, int initY) { x = initX; y = initY; } public double distanceFromOrigin() { double dist = Math.sqrt(x*x + y*y); return dist; } public void translate(int dx, int dy) { x = x + dx; y = y + dy; } } |
Point p1 = new Point(); ... System.out.println(p1);
The above println
statement (the entire line) is equivalent to
what?
PointClient
program is supposed to construct
two Point
objects, translate each, and then print their
coordinates. Finish the program so that it runs properly. (You don't
need to modify Point.java
.)
BankAccount
class
(see next slide):
// Each BankAccount object represents one user's account // information including name and balance of money. public class BankAccount { String name; double balance; public void deposit(double amount) { balance = balance + amount; } public void withdraw(double amount) { balance = balance - amount; } }
double
field named
transactionFee
that represents an amount of money
to deduct every time the user withdraws money. The default value
is $0.00
, but the client can change the value. Deduct the
transaction fee money during every withdraw
call (but not
from deposits).
balance
value at
all.
Point
and PointMain
Point.java
and add two methods to
the Point
class as described on the next two slides.
The PointMain
program calls these methods; you can use it to
test your code.
quadrant
Add the following method to the Point
class:
public int quadrant()
Returns which quadrant of the x/y plane this Point
object
falls in. Quadrant 1 contains all points whose x and y values are both
positive. Quadrant 2 contains all points with negative x but positive y.
Quadrant 3 contains all points with negative x and y values. Quadrant 4
contains all points with positive x but negative y. If the point lies
directly on the x and/or y axis, return 0.
(Test your code by running the PointMain
program.)
flip
Add the following method to the Point
class:
public void flip()
Negates and swaps the x/y coordinates of the Point
object.
For example, if the object initially represents the point (5, -3), after a
call to flip
, the object should represent (3, -5). If the
object initially represents the point (4, 17), after a call
to flip
, the object should represent (-17, -4).
(Test your code by running the PointMain
program. You will
need to un-comment the flip
testing code.)
Point
toString
Modify the toString
method in the Point
class.
Make it return a string in the following format. For example, if
a Point
object stored in a variable punkt
represents the point (5, -17), return the string:
Point[x=5,y=-17]
If the client code were to call System.out.println(punkt);
,
that text would be shown on the console.
(Test your code by running your PointClient
or PointMain
and printing a Point
there.)
BankAccount
toString
Add a toString
method to the BankAccount
class.
Your method should return a string that contains the account's name and
balance separated by a comma and space. For example, if an account object
named benben
has the name "Benson"
and a balance
of 17.25, benben.toString()
should return:
Benson, $17.25
If the client code were to call System.out.println(benben);
,
that text would be shown on the console.
(Test your code by writing a short client program that constructs and initializes an account, then prints it.)
manhattanDistance
Add the following method to the Point
class:
public int manhattanDistance(Point other)
Returns the "Manhattan distance" between the current Point
object and the given other Point
object. The Manhattan
distance refers to how far apart two places are if the person can only
travel straight horizontally or vertically, as though driving on the
streets of Manhattan. In our case, the Manhattan distance is the sum of
the absolute values of the differences in their coordinates; in other
words, the difference in x plus the difference in y between the points.
Click on the check-mark above to try out your solution in Practice-it!
(For this problem, write just the new method, not the
entire Point
class.)
TimeSpan
Define a class named TimeSpan
. A TimeSpan
object
stores a span of time in hours and minutes (for example, the time span
between 8:00am and 10:30am is 2 hours, 30 minutes). The minutes should
always be reported as being in the range of 0 to 59. That means that you
may have to "carry" 60 minutes into a full hour.
To solve this problem, you may want to refer to the lecture slides about the syntax for constructors.
See the Practice-It link above for a full description of the class and the methods/constructors it should have. You can also test your class in Practice-It.
Circle
Define a class named Circle
. A Circle
object
stores a center point and a radius.
See the Practice-It link above for a full description of the class and the methods/constructors it should have. You can also test your class in Practice-It.
If you finish all the exercises, try out our Practice-It web tool. It lets you solve Java problems from our Building Java Programs textbook.
You can view an exercise, type a solution, and submit it to see if you have solved it correctly.
Choose some problems from Chapter 8 and try to solve them!