CS 117: Using Classes Written by Others

Submit using hsp by 11:59pm on Thursday, 12 January 2006.

In this lab, you will play with existing Java programs with the goal of learning a few things about Java: (1) how programs are structured, (2) how to draw simple pictures, and (3) how do do arithmetic with integers. The instructor and the prefector will be around if you have questions (and they'll be thrilled to answer them, because it makes them feel like they're earning the oxygen that they're breathing). Ask if you have any questions, and have fun!

Please work in your assigned group for this lab. Remember that all work is to be done with both teammates working together at the computer. If you find that you absolutely can't schedule time to work together, split up for this assignment and turn in your own work. As always, feel free to ask lots of questions!


One of the nice things about programming in Java is that a lot of the hard work has already been done for you. There are a lot of predefined classes that can be used to accomplish a lot of interesting tasks, including a large number of classes that can be used to program graphics. The details of doing so can be be somewhat tedious in Java—especially for simple things like drawing pictures in a window. Luckily, some kind soul recognized that problem and wrote a class to handle simple drawing tasks much more easily. We'll be using this class in today's lab.

The Canvas class

Create a directory called lab3 to hold your work for this lab. Save the file Canvas.java in that directory. You can open up the file and look at it if you'd like. However, we won't be paying much attention to what's in this class. Instead, we're just going to use this class in our own programs. (You can think of Canvas.java as a black box that draws certain things on the screen when you pull the levers in different ways.)

Now copy MyArtWork.java into the same directory. Read through the code and see if you can figure out what it will do.

To compile your program, you need to compile both Java programs. Type javac *.java in the terminal window. The * is a "wildcard." In other words, "*.java" is shorthand for "all files that end in .java". Finally, assuming that you don't get any errors (call for help if you do), run your program. Type java MyArtwork and something should happen. What do you see? Try modifying the program to accomplish the following:

The documentation for the Canvas class is at this web page. Notice that the page has distinct sections: a general description of the class, a summary of fields and constructors (we'll talk about those later), and a more detailed description of all the methods available to you. Take a few minutes to skim the methods and to familiarize yourself with the documentation format. Then try picking out a few methods that look like they might be interesting, and try them out. Modify your program to use other methods from this documentation page.

A Bit of Arithmetic

We're going to shift away from graphics for a short while, but don't worry, we'll be back! Download Arithmetic.java, look through the program, to get a sense for what it might do, and run it. Answer the following questions in a file called lab3.txt.

Question #1: What does the operation % do? How about /? (If you're having trouble guessing what % does, try these examples: 50 % 5, 51 % 5, 52 % 5, 53 % 5, 54 % 5, 55 % 5, 56 % 5. Try other cases with a similar pattern and see if that helps.)

Now change the types of a and b from int to double. Recompile and rerun.

Question #2: How does the behavior of / change?

Question #3: The type double is not very helpfully named. What does it mean in this context? (Your reading should be helpful in answering this question.)

Back to Graphics

Write a Java application named MyDrawing.java. Your program should create a Canvas object and, using the methods in the Canvas class, draw a picture. Spend a little bit of time experimenting with the different methods, and then figure out how to combine these methods to draw more complex shapes or pictures. Use the arithmetic operations above as part of your program.

Some suggestions:

Be creative, and have fun!

What to turn in

Turn in your entire directory with hsp your answers to the questions as well as your graphics demos. Creativity is highly valued! Again, only one member of a team needs to submit the work, but make sure that both team members names are in comments in the program and in lab3.txt.

Authored by Amy Csizmar Dalal, Dave Musicant, and Jeff Ondich. Minor modifications by David Liben-Nowell.