1903 Fall 2007 Lab 1: Using BlueJ at UofW The purpose of this lab is to give you some experience with BlueJ. Over the course of the term, in classes and in labs, you will be given more instruction. In this lab you will see how to: Start BlueJ Open a BlueJ project (a Java program) Save the BlueJ project using a new name Compile and run a Java program Interact with an object system by sending messages Modify a Java program and compile a Java class Fall 2007 ACS-1903 BlueJ Ron McFadyen 1903 Fall 2007 Lab 1: Using BlueJ at UofW Lab 1, details: We discuss a particular example that comes with the BlueJ installation called shapes. The example deals with objects that are squares, triangles and circles. As you will see, we design object-oriented systems so objects have specific responsibilities and will respond to specific commands or messages. We examine some Java program instructions in the Triangle class in detail. You are asked to review the Circle and Square classes on your own. We will not discuss the Canvas class. Its responsibilities are to draw or repaint the images we see on the screen. You will compile the shapes classes and interact with Java classes and objects. As shapes is an interactive program, you will be asked to send specific messages. Lastly, you are asked to make a change to the Triangle class to experience modifying a program and verifying your changes. Fall 2007 ACS-1903 BlueJ Ron McFadyen 1903 Fall 2007 Lab 1: Using BlueJ at UofW Student Identification Student number ______________________ Last name ______________________ First name ______________________ Workstation user id ______________________ Email address ______________________ Include this slide with your answers to lab questions Fall 2007 ACS-1903 BlueJ Ron McFadyen 3 1903 Fall 2007 Lab 1: Using BlueJ at UofW Starting BlueJ Logon to a workstation in 3D03 or 3C13 (you may need specific logon information from your lab demonstrator). Click Start, then click on Programs, then click on BlueJ, and then click the BlueJ program Start >> Programs >> BlueJ >> BlueJ Fall 2007 ACS-1903 BlueJ Ron McFadyen 4 1903 Fall 2007 Lab 1: Using BlueJ at UofW Opening a Java Project/Program Open the shapes project that can be found in a folder named blueJExamples on the H drive. The diagram shown on the right illustrates the classes that comprise the Java program. We will pay special attention to the Triangle, Square and Circle classes in this tutorial. Fall 2007 Project>>Open Project>> ACS-1903 BlueJ Ron McFadyen 5 1903 Fall 2007 Lab 1: Using BlueJ at UofW Saving as a Different a Java Project/Program Click the Project menu, and select Save As. Choose a new name and location to save your work and your work will not affect the original copy of shapes Project>>Save As >> Fall 2007 ACS-1903 BlueJ Ron McFadyen 6 1903 Fall 2007 Lab 1: Using BlueJ at UofW Saving as a Different a Java Project/Program What drive have you used for your copy of shapes? Answer: What directory or folder have you used? Answer: What name did you give your copy of shapes? Answer: Fall 2007 ACS-1903 BlueJ Ron McFadyen 7 1903 Fall 2007 Lab 1: Using BlueJ at UofW Reviewing the Java Program You can view the Java classes by double-clicking on each of the four classes shown in the class pane. Double-click on the orange rectangle named Triangle. This action opens the class editor. Double-click Fall 2007 ACS-1903 BlueJ Ron McFadyen 8 1903 Fall 2007 Lab 1: Using BlueJ at UofW Reviewing the Triangle class Examine the code on your workstation, and note the following : You should see coloured text in use: some red, some blue, etc. BlueJ uses colour to denote special aspects of the code. The first line is a Java import statement. import java.awt.*; In this case the program is stating that it will use a Java library known as awt. The editor shows the word import is in red because it is keyword (this keyword informs the Java compiler of the Java library that is needed). Fall 2007 ACS-1903 BlueJ Ron McFadyen 9 1903 Fall 2007 Lab 1: Using BlueJ at UofW Reviewing the Triangle class The blue-coloured text is used for comments. /** * A triangle that can be manipulated and that draws itself on a canvas. * * @author Michael Kolling and David J. Barnes * @version 1.0 (15 July 2000) */ Comments are not executed by the computer. Comments are used to guide humans when they read the program code. As such, comments should be explanatory. Fall 2007 ACS-1903 BlueJ Ron McFadyen 10 1903 Fall 2007 Lab 1: Using BlueJ at UofW Reviewing the Triangle class Following the comments we have just discussed, you will see the beginning of the Triangle class. public class Triangle { private int height; private int width; private int xPosition; private int yPosition; private String color; private boolean isVisible; A class always begins with the key words public class followed by its name; in this case the class is named Triangle. The above partial listing shows the attributes in Triangle. These attributes will hold values that describe a particular triangle (its height, width, position, etc). Fall 2007 ACS-1903 BlueJ Ron McFadyen 11 1903 Fall 2007 Lab 1: Using BlueJ at UofW Reviewing the Triangle class Following the lines giving the name of the class and its attributes, we see a method that is used whenever we ask for an instance of the Triangle to be created. /** * Create a new triangle at default position with default color. */ public Triangle() { height = 30; width = 40; xPosition = 50; yPosition = 15; color = "green"; isVisible = false; } Later on we will ask for a triangle to be instantiated… when we do, it is the above Java code that will execute. From the above you know the height, width, and positioning coordinates, amongst other things for the triangle that is created. Fall 2007 ACS-1903 BlueJ Ron McFadyen 12 1903 Fall 2007 Lab 1: Using BlueJ at UofW Interacting with the shapes program Where do new triangles position themselves when they are instantiated? Answer: What colour is given to a newly instantiated triangle? Answer: How high is a newly instantiated triangle? Answer: How wide is a newly instantiated triangle? Answer: Fall 2007 ACS-1903 BlueJ Ron McFadyen 1903 Fall 2007 Lab 1: Using BlueJ at UofW Reviewing the Triangle class Following the “constructor” method just described, we have several methods which in this example begin with the words public void followed by the name of the method. Each method defines a responsibility that an object has, or a capability it has. In this example you will see that a triangle can make itself visible make itself invisible move to the right move to the left … The programmer that designed shapes decided that triangles should be responsible for making themselves visible and invisible, moving themselves right, left, up, or down on the screen. As you will see, we can ask a triangle to do these things. Fall 2007 ACS-1903 BlueJ Ron McFadyen 14 1903 Fall 2007 Lab 1: Using BlueJ at UofW Interacting with the shapes program What things can we ask a triangle to do? (The answer is the names of its methods) Answer: Fall 2007 ACS-1903 BlueJ Ron McFadyen 1903 Fall 2007 Lab 1: Using BlueJ at UofW Reviewing the Triangle class At this time it is only important that you realize a class may have many methods and that each is designed for a specific purpose: to become visible, to become invisible, to move up, etc. Do not be concerned with exactly how each of those is done… that will come later on in the course. There is a concept called anthropomorphism that is important for object programming. (Consult a dictionary if needed, or wikipedia.) Java programmers will design systems with classes where each method is some responsibility that an object of that class is responsible for. Consider an ordinary office where people are employed and each person is given specific responsibilities. When asked, a person will perform a particular duty such as completing an invoice, issuing a cheque and so on. The same principle is applied to object-oriented computing systems. After exploring the Triangle class, we know that triangles can be asked to do very specific things. We’ll look at that now… Fall 2007 ACS-1903 BlueJ Ron McFadyen 16 1903 Fall 2007 Lab 1: Using BlueJ at UofW Compiling a Java Program Before we can run a Java program we must compile it. This is a process that creates an execuable form of a program. At the BlueJ screen where we see the four classes, we need to select Compile from the Tools menu item. Tools >> Compile When the compile is done you will see the message Fall 2007 ACS-1903 BlueJ Ron McFadyen 17 1903 Fall 2007 Lab 1: Using BlueJ at UofW Interacting with the shapes program Let’s create a triangle …. Remember the constructor method – the triangle will initially be invisible and so we will ask it make itself visible. The next few slides show the screens discussed below. Begin by right-clicking the Triangle class and choose newTriangle(). You will be asked to name the triangle (or you can go with the default name of triangle1.) When you click OK for naming the triangle you will see a red object appear on your screen indicating that you have instantiated an object. Fall 2007 ACS-1903 BlueJ Ron McFadyen 1903 Fall 2007 Lab 1: Using BlueJ at UofW Interacting with the shapes program Right-clicking on a class presents a selection of possibilities … choose newTriangle() Fall 2007 ACS-1903 BlueJ Ron McFadyen 1903 Fall 2007 Lab 1: Using BlueJ at UofW Interacting with the shapes program The result of creating a triangle. Fall 2007 ACS-1903 BlueJ Ron McFadyen 1903 Fall 2007 Lab 1: Using BlueJ at UofW Interacting with the shapes program Right-click on an object and the messages it can respond to are shown. Choose makeVisible(). After selecting makeVisible() look at the bottom of your screen. You should see a new button, click it and you will see how Canvas is displaying your program results. See the next slide. Fall 2007 ACS-1903 BlueJ Ron McFadyen 1903 Fall 2007 Lab 1: Using BlueJ at UofW Interacting with the shapes program After selecting makeVisible() look at the bottom of your screen. You should see a new button, Click it and you will see how Canvas is displaying your program results. See the next slide. Fall 2007 ACS-1903 BlueJ Ron McFadyen 1903 Fall 2007 Lab 1: Using BlueJ at UofW Interacting with the shapes program A triangle was created, it was made visible, and the output becomes viewable by clicking on Fall 2007 ACS-1903 BlueJ Ron McFadyen 1903 Fall 2007 Lab 1: Using BlueJ at UofW Interacting with the shapes program What happens when you instantiate a second triangle and make it visible? Answer: If two triangles occupy the same space (and so it appears as though only one is there), how can you make the two triangles both visible? Answer: Fall 2007 ACS-1903 BlueJ Ron McFadyen 1903 Fall 2007 Lab 1: Using BlueJ at UofW Interacting with the shapes program So far we have only considered the Triangle class. Examine the Square and Circle classes. To do this you must double-click the Square and Circle classes. Find the “constructor” methods named Square() and Circle(). Where do new squares position themselves when they are instantiated? Answer: Where do new circles position themselves when they are instantiated? Answer: Fall 2007 ACS-1903 BlueJ Ron McFadyen 1903 Fall 2007 Lab 1: Using BlueJ at UofW Interacting with the shapes program What things can a square do? (look for the other methods – those sections of code beginning public void …. Answer: Fall 2007 ACS-1903 BlueJ Ron McFadyen 1903 Fall 2007 Lab 1: Using BlueJ at UofW Interacting with the shapes program What things can a circle do? (look for the other methods – those sections of code beginning public void …. Answer: Fall 2007 ACS-1903 BlueJ Ron McFadyen 1903 Fall 2007 Lab 1: Using BlueJ at UofW Interacting with the shapes program Now… make a square. Make it visible. Can you align it directly under the triangle? You may need to use the moveHorizontal() message and give it a specific distance to move. Don’t hesitate to experiment. Fall 2007 ACS-1903 BlueJ Ron McFadyen 1903 Fall 2007 Lab 1: Using BlueJ at UofW Interacting with the shapes program To instantiate a square and have it align directly under the triangle, you needed to send various messages asking for certain things to be done. What were these messages? Answer: Fall 2007 ACS-1903 BlueJ Ron McFadyen 1903 Fall 2007 Lab 1: Using BlueJ at UofW Modifying the shapes program As you progress in this course you will modify programs and you will create programs. Let’s start with something easy. Let’s modify the code for Triangle so that a triangle is yellow instead of green when a triangle is instantiated. We begin by opening the class editor for the Triangle class by double-clicking the orange rectangle with the name Triangle. Double-click Fall 2007 ACS-1903 BlueJ Ron McFadyen 1903 Fall 2007 Lab 1: Using BlueJ at UofW Modifying the shapes program Below is the code relating to the construction of a new triangle. Look at the second last Java line. We must modify that line and then recompile the Triangle class. Then we can test our change and determine if we have made the change correctly or not. /** * Create a new triangle at default position with default color. */ public Triangle() { height = 30; width = 40; xPosition = 50; yPosition = 15; color = “green"; isVisible = false; } Fall 2007 ACS-1903 BlueJ Ron McFadyen We need to change the word green to yellow. Note that it is only by chance the word green is shown in green-coloured text. 1903 Fall 2007 Lab 1: Using BlueJ at UofW Modifying the shapes program Once the change has been made you must choose the /** * Create a new triangle at default position with default color. */ public Triangle() { height = 30; width = 40; xPosition = 50; yPosition = 15; color = “yellow"; isVisible = false; } Fall 2007 ACS-1903 BlueJ Ron McFadyen We need to change the word green to yellow 1903 Fall 2007 Lab 1: Using BlueJ at UofW Modifying the shapes program Once the change has been made you must Compile the class. After clicking Compile you should see the message “Class compiled – no syntax errors” at the bottom of the screen. You test your changes by instantiating triangles and seeing the new colour! See next slide. Fall 2007 ACS-1903 BlueJ Ron McFadyen 1903 Fall 2007 Lab 1: Using BlueJ at UofW Modifying the shapes program Two triangles, one circle, one square. Note that one triangle was moved as both were positioned at the same coordinates. Fall 2007 ACS-1903 BlueJ Ron McFadyen 1903 Fall 2007 Lab 1: Using BlueJ at UofW Lab 1,the shapes program Lastly: When you have produced results similar to the previous slide you can copy them by using the Ctl-PrintScreen keys together, and then pasting the captured image into a Word document or a PowerPoint slide. Your lab demonstrator can show you how to do this. On previous slides you have answered various questions. Hand these in, along with the Ctl-PrintScreen image, to your instructor. Be sure to staple these pages together, and include the student identification slide. Fall 2007 ACS-1903 BlueJ Ron McFadyen