©2006 Felleisen, Proulx, et. al.

6  Starting in Eclipse

Goals

In the first part of this lab you will learn how to work in a commercial level integrated development environment IDE Eclipse, using the Java 1.5 programming language. There are several step in the transition from ProfessorJ:

  1. Learn to set up your workspace and launch an Eclipse project.

  2. Learn to manage your files and save your work.

  3. Learn the basics of the use of visibility modifiers in Java.

  4. Learn the basics of writing test cases in Java.

6.1  Learn to set up your workspace and launch an Eclipse project.

Start working on two adjacent computers, so that you can use one for looking at the documentation and the other one to do the work. Find the web page on the documentation computer:

http://www.ccs.neu.edu/howto/howto-windows-n-unix-homedirs.html

and follow the instructions to log into your Windows/Unix account on the work computer.

Next, set up a workspace folder in your home directory where you will keep all your Java files.

Now go to the web page:

http://www.ccs.neu.edu/howto/eclipse/howto-windows-eclipse.html

on the documentation computer and set up your Eclipse working environment. Ask for help if anything is not clear.

Start your Eclipse.

DO NOT check the box that asks if you want to make this the default workspace for eclipse

Starting a new Project

6.2  Learn to manage your files and save your work.

You noticed that instead of using one file to keep all of our work we now have two different files. Java requires that each (public) class or interface is saved in a separate file and the name of that file must be the same as the name of the class or interface, with the extension .java. That means, you will always need several files for each problem you are working on.

First, modify the files you were given by adding two more examples of books to the BookTests class and showing the data in the main test driver. Run your program.

Now save all your files as an archive. Go to the workspace subdirectory of your eclipse directory and find the directory Project1. Make a .zip archive of the files in the src subdirectory and save the archive in a folder where you keep your work.

Your project will remain in the Eclipse workspace, but now you have saved a copy that will not change as you keep working.

6.3  Learn the basics of the use of visibility modifiers in Java.

Add a class Author that contains the information about author's name and age and modify the class Book to refer to an object in the Author class. Of course, you need to define a new file with the name Author.java.

Notice that all declarations in the project files start with the word public. These keywords represent the visibility modifiers that inform the Java compiler about the restrictions on what other programs may refer to the particular classes, fields, or methods.

Declare the fields name and age in the class Author to be private. Now design a method sameAuthor to the class Book that consumes a name of the author and determines whether the book was written by an author with the given name. Write your examples as comments for now. We will turn them into tests in the next part.

You should fail in making this method work. Run it. You will see the message Error in a required project. Continue launch?. At times the compiler is smart enough to fix small errors and hitting OK works just fine. In this case, hit Cancel. The program launch stops and it looks like nothing happened. Go to the tab Problems in the bottom pane and see what the problems are. You should see the message The field author.name is not visible (or something similar). The error was probably signalled in your code already. Clicking on the red cross mark to the left or the erroneous statement pops up message indicating what is wrong, and even offers suggestions for fixing the problem, whenever possible.

The problem is, that you no longer can see the field name in the class Author. The class Author does not let you see how the author's name is represented in its class. For all we know, it could be a list of integers that give you the position of each letter in the alphabet, so that an author with the name Bach would have his name encoded as a list (2 1 3 7). However, we can let the outside world find out whether this author's name is the same as the given String. Design a public method sameName to the class Author that determines whether this author has the same name as the given String.

Modify the previous method to use this helper method to solve the problem.

6.4  Learn the basics of writing test cases in Java.

We are now on our own - with no help from ProfessorJ to show us nicely the information represented by our objects, or to provide an environment to run our test suite.

Viewing the data definitions

To make it possible to view the values of the fields for the objects we define, we add to each class a method toString() that produces a String representation of our data. Java allows us to use the + operator to concatenate two Strings - it is much less messy than using the concat method we used earlier.

The simplest way for defining the toString method for the class MyClass is:

    public String toString(){
      return "new MyClass(" + this.field1 + ", "
                            + this.field2 + ")"; 
    }

Our example for the class Book shows a more elaborate version that gives us not only the value of each field, but also its name.

Java provides a toString() method for the class Object, but it typically does not give us the information we are interested in, and so we override the Java toString() method.

You must override the method toString() for every class you design, even if, at times, it may show only a portion of the data represented by the instance of the class.

Designing tests

Our goal when designing tests is to make sure that we can tell easily not only that some tests failed, but also which test failed.

Read the code that tests the method before. It prints out a String that consists of the names of the tests and the results of the tests. Convert your examples for the tests for the methods sameAuthor and sameName into similar tests and run your code again.

Save your results as a .zip file.

6.5  The World

Our projects that extended the World contained three import statements, indicating that we need to use classes defined in three different libraries written by someone else. Before we start a project that uses these libraries, we need to make sure that the libraries are saved in a known location and that the projects that need them will be able to find them.

Managing the Libraries

Configuring a Project with the World Library

Start a new project BlobWorld. Import the .java files from the BlobWorld folder. Notice that the files are marked with a number of errors. You need the World library.

To work with the libraries you need to add the three Variables you defined earlier to this project. The process is similar to what you did earlier:

You can now run your BlobWorld project. The key controls the movement of the ball, but the timer also moves the ball randomly on each tick. The user interface is nearly the same as we have seen in ProfessorJ.

Make sure you can run the project and see how it is designed.

6.6  Quiz

6.7  Pong Game

Create a new project named PongGame and import all files from the PongGame you designed in Lab 4. Add the libraries (variables) to the project and run it. You may need to make small changes in your code:

Finally, add the Examples class to the project, then right click on the Examples class to run the program.

Spend the rest of the lab adding new features to the Pong game.

Last modified: Thursday, October 12th, 2006 7:53:05pm