CPSC 124, Fall 2001
Lab 8: A Simple ClassIn this lab, you will write a complete class definition that works with a main program, which I have already written. This exercise will probably not occupy you for the entire lab. You should use any extra time to work on your second programming assignment, or to work on the "Some fun" part of the lab.
The files for this lab can be found in the directory /home/cs124/lab8. Begin by copying this directory into your own account, and cd into your copy of the directory.
This lab is due next Wednesday, October 24. Turn in a printout of your Java source code file, Account.java. Don't forget to include comments in your class definition and to otherwise follow the rules of good programming style.
Exercise: Bank Account
The exercise for this week is to write a class that simulates a bank account (in a very simple way). The "account" is created with an initial balance. It is possible to deposit and withdraw funds, to add interest, and to find out the current balance. This should be implemented in class named Account that includes:
- A constructor that accepts the initial balance as a parameter.
- A function getBalance that returns the current balance.
- A method deposit for depositing a specified amount.
- A method withdraw for withdrawing a specified amount.
- A method addInterest for adding interest to the account.
The addInterest method takes the interest rate, r, as a parameter and changes the balance in the account to balance*(1+r).
All the methods in the class are simple, one-line subroutines. The main point is to get the syntax of the class and the parameters of the subroutine correct. Your class must work with my main program, BalanceAccount. Once you have compiled your class, you should be able to run BalanceAccount. It should run exactly like the following applet:
Some Fun: Mosaic Applets
This is not a required part of the lab (except to read about it), but you can do it if you want to add some interest to your web site.
Lab 6 --- as well as the textbook and programming assignment two --- uses a class named Mosaic to manage a mosaic window. Mosaic contains static subroutines and is meant to be used in stand-alone programs. Suppose you want to write a mosaic applet that you can put on your web page?
I have written a class called SimpleMosaicApplet that can be used as a basis for writing mosaic applets. To do so, create a class that extends this class, and include a "public void program()" subroutine in your class. The program() subroutine will be run when the applet is created. It can use the functions getRed(row,col), getGreen(row,col), and getBlue(row,col) and the subroutines setColor(row,col,r,g,b) and fillRandomly() to work with the mosaic. It can use the delay(milliseconds) to insert a delay in the program. (It's a good idea to include some delays in an applet, since it gives time for other things in the Web browser to run.) Note that these subroutines are defined in SimpleMosaicApplet, not in any separate Mosaic class, and they should be called directly. Also, note that there is no equivalent to Mosaic.open() or Mosaic.isOpen() since there is no separate window. The mosaic is set up to use 40 rows and 40 columns by default, but you can change this by including an init() method in your subclass and assigning values to the instance variables rows and columns.
Here is how a basic random walk applet could be written, based on SimpleMosaicApplet:
import java.awt.*; public class RandomWalk extends SimpleMosaicApplet { // Set up a 20-by-20 grid, instead of the default 40-by-40. public void init() { rows = 20; columns = 20; } // Define the random wald program. public void program() { int row = rows / 2; // start at center of grid int col = columns / 2; setColor(row,col,255,0,0); // make the square red while (true) { delay(30); // insert a delay of 30 milliseconds setColor(row,col,0,0,0); // return current rect to black switch ( (int)(4*Math.random()) ) { // move to new rect case 0: if (row > 0) row--; break; case 1: if (col > 0) col--; break; case 2: if (row < 19) row++; break; case 3: if (col < 19) col++; break; } setColor(row,col,255,0,0); // make new square red } } // end program } // end class RandomWalkHere is what this applet looks like (try right-clicking it):
If you have a Mosaic program that you would like to convert into a mosaic applet, here is a guide for doing so:
- Change "public class Name" to "public class NameApplet extends SimpleMosaicApplet" (or use whatever other name for the new class that you want).
- Change "public static void main(String[] args)" to "public void program()".
- Remove the "static" modifier from any subroutines and member variables.
- If you want a grid size different from 40-by-40, add an init() method.
- Remove the "Mosaic.open" command.
- Change any "while (Mosaic.isOpen())" loop to "while (true)".
- Remove "Mosaic." from any subroutine call, such as "Mosaic.getRed(row,col)".
- Make any other changes that you find to be necessary.
- To run your applet, use an <applet> tag in an .html file. Don't forget to include the SimpleMosaicApplet.class file in the same directory with the html file and the compiled class file from the class you wrote.
David Eck, 18 October 2001