RoboDuke's School of Java - Lesson 3, Chapter 4

And on with even more of my Java lessons. If you have forgotten (how could you??) I am RoboDuke, the Javarian. In this lesson, we will come down to ground level as we concentrate on methods, methods, and more methods! But before we do that, how about a good Java joke?

What would Juliet have said if she had been a Java programmer?

     Romeo romeo = new Romeo();     

And a definition you can use in this lesson:
PROGRAM (pro’-gram) – [n] A magic spell cast over a computer allowing it to turn one’s input into error messages ---- or [vi] to engage in a pastime similar to banging one’s head against the wall, but with fewer opportunities for reward.

Now --- on to our lesson! Download our jar file for lesson 3 from the link below:

Let’s look first at the package named answerslesson2. In Lesson 2, you completed a number of programs (you did complete them, didn’t you??) The first one was Look at the solution and see if you have any questions. That one was not too bad! Smile Now, how about More complicated---but if you just follow my directions contained in the comments one line of code at a time, you can do it!! The only real hard part was figuring out how to generate a random number between 1 and 10 since we had not discussed that. We did generate random numbers in PhraseOMatic but not starting at 1. When this occurs, a great approach is to write yourself a little stand alone program (see my and see if you can get the line to work. Play with it, make changes, and test it until it does what you want it to do. Once it does, copy it into your program and it will run! Watch for the Scanner problem as always.

The other program you were to write was the Bet you think it isn’t fair that I asked you to write the loops when we have not even discussed them yet. But to become a proficient programmer, you need to be able to look at code that is similar to what you need ---and beg, borrow, steal, and alter it for your needs. Google is one of your very most important tools in writing Java. So – to write the loops needed here, I looked at the print method in the to see how to use for loops with arrays. I used similar code for getting the Dog information and for printing them out. And it worked!!!!

Now on to Chapter 4 and Lesson 3. We will look at methods, method, and more methods. Methods are the only thing there really is in Java!! We know that we have two components for a Java class – instance variables and methods. But the instance variables are private (your book explains this and starts using it on pages 80-81). This means that only the blueprint class can use the instance variables -- called encapsulation (great word!!!). Therefore – it has to be the methods where all the action takes place! (no pun intended!). To become proficient in Java, we need to become proficient in writing methods.

There are two concepts about methods that we need to discuss – method definitions and method calls. The definition defines what the method does and the method call then uses the method.

Go to I know ----- you do not have to tell me ---I made a real cool document that summarizes method use!!! You do not have to thank me ---just send money! Use this as a reference. Study the four ways to use Java methods. Run these samples (they are in your lesson3.methodshandout package). First run – this has a method call from the same class with no return value. Then run – it has a method call from the same class with a return value. Then run that calls methods on an Employee object that is in a different class.

Now look at the lesson3.overload package. Note that you can write different versions of the same method as long as the parameters are different (we have already done that with the constructors). Java knows which method to call since the arguments in the method call must match the parameters in the method definition.

Look at the lesson2.passValue package. See also page 77 – 78 in your text. It is critical to realize what Java does with values that are passed as parameters. Look at the comments in the class. From this example you should realize that Java passes primitives by value. This means that if the value is changed in the method call, the actual variable outside of the method is not changed. Java makes a copy of the value for the method to use and changes that only. However, if you pass in an object (such as an instance of the Number class in this example), the address is actually passed in by value. This means that the address cannot change. However, the fields of the object can be changed in the method and when you return to the original call, the fields will remain changed. Note the exception for Strings. Strings are immutable and therefore cannot be changed.

Your book describes the all important concept of getters and setters on page 79. But I know you are already an expert at this!! Look at the and in the lesson3 package. Yes – I, RoboDuke can play the electric guitar!! Read the comments carefully. Remind yourself about Java’s policy of initializing instance variables but not local variables on pages 84-85. Also look at the discussion of comparing variables on page 86. Look at the equals() method in the blueprint, used to compare reference data types and the use of == within the method to compare primitive data types.

Finish reading the chapter and completing the exercises in your text. I will wait for you while you call Sherlock Holmes to help you with the Five-Minute Mystery on page 92.

Let’s look at another blueprint and driver (you can never see too many of them!!!!). Study the and in the lesson3 package. Note the equals() method for this one. Note we were comparing the item’s names which are Strings (reference data types) so the method uses the equals() method from the String class inside. So – to create the equals() method for the Invoice, we use the equals() method already available in the String class.

Now It’s Your Turn

Look in the lesson3 package. Fill in the comments for the and and see if you can get the programs to run.

Now It’s Your Turn

Get the document from My suggestion is that you open up Eclipse and type (or copy and paste) with me as I mesmerize and impress you as I explain classes and methods yet again. Work through this example.

Now It’s Your Turn

In this exercise, you will write a class that sells robots.

  1. Write the RobotSales class assuming a sale of a robot object is described by three instance variables: robotName (a String), numSold (an integer that represents the number of that type of robot sold), and priceEach (a double that is the price of each robot). I only want three instance variables!! The class should have the following methods:
    • A constructor that has two parameters – a String containing the name of the robot and a double containing its price. The constructor should set the other instance variable to zero.
    • An empty constructor
    • All getters and setters
    • A method updateSales() that takes a single integer parameter representing the number of additions robots of that type sold. The method should add this number to the numSold instance variable and return nothing
    • A method totalValue() that takes no parameters and returns the total value of that robot inventory
    • A toString() method that returns a string containing the name of the robot and the number sold, the price each, and the total value
  2. Write a RobotSalesDriver program that uses RobotSales objects to tract the sales of three types of robots for two different stores.
    • Read in the name and price of three types of robots from the keyboard and create three RobotSales objects.
    • Prompt for the number of each type of robot sold for each of the two stores. You can use loops if you like or just six sets of prompts/read statements (we will work on the loops later). After each prompt, call the updateSales() method to update the number of robots sold.
    • After all the data has been read in call the toString() method for each of the robots to print out their information.

RoboDuke’s Extra Strength Example

Get a glass of wine (or one of those 99 bottles of beer on the wall) and study my program for renting cars. It is in the rentawreck package. Start with Read the comments and understand the code. Then look at and Finally I will create some Rental instances in the class so I can get rich! This is the driver program. Look at this code and run the example. And I bet you did not know that robots could drive!!!!


RoboOtr's picture

Roboduke, is there a place where all of your lessons are posted?  Thanks

RoboDuke's picture

Oh dear, my blog entries seem to have disappeared! I'm work on getting them all re-posted as forum entries here, my apologies!

Actually, you might be able to reach most of the lessons from this page: