This week's book giveaway is in the OCAJP 8 forum. We're giving away four copies of OCA Java SE 8 Programmer I Study Guide and have Edward Finegan & Robert Liguori on-line! See this thread for details.
Well, looks like I've got another mess here. Part 3 of the Inventory program requirements are as follows:
- Modify the Inventory Program by creating a subclass of the product class that uses one additional unique attribute of the product you chose (for example, if Movie is your product, you can create a subclass named ForiegnMovie with “country” as a unique attribute).
- In the subclass, override the method to calculate the value of the inventory of a product with the same name and return type as the method previously created for the product class. The subclass override should add a 5% restocking fee to the value of the product.
- Modify the output to display this additional attribute you have chosen and the restocking fee.
This is what I have for code (please be merciful...):
I'm sure it's something simple I missed, but being a complete novice, I can't see it. Any help would be greatly appreciated...
I suppose this is the method that calculates mentioned price in your superclass:
You didn't override it in your subclass. Instead, you've actually implemented another method:
If your intention is to override superclass method in a subclass, overriden method needs to have the same signature as the one in superclass.
Furthermore, I notice that your setters are not implemented correctly. Instead of what you have implemented, each setter in your class should look like this:
Notice that it has an argument of the same type as field you are setting value of. You should also use Camel notation for naming your methods as well as fields (with exception of constants, which you are not using).
Also, your subclass constructor shouldn't look like this:
Once you invoke superclass constructor, there is no need to set the same fields again, because super has already done that, so what you should set are actually just fields specific to your subclass.
The quieter you are, the more you are able to hear.
Joined: Sep 26, 2012
Thanks for pointing those things out. The problem I'm having is getting the data in the sub-class back to the Inventory class. I'm at my boiling point right now so I have to step away for a while. Thanks again...
If you do what Kemal has already suggested it will work.
BTW what's the purpose of the itemClass instance variable which is set to "Training". You know the object is a training book because it's an instance of the TrainingBook class.
If you ever have an instance variable that is hard coded to a value and is never changed then you have a design problem.
Is the return type for those methods really Double? Don’t you mean double?
Actually, you ought never to use double arithmetic for money. Use what is described in this thread: BigDecimal.
Joined: Sep 26, 2012
Update: OK, the code below is almost there. The last thing I need to do is populate "Restock price" with the result of the "(InStock * PriceEach) * 1.05" formula in the TrainingBook class. I need to generate separate instances of Java 101, C#, and Python. Basically I need to have the value of each book with a 5% restocking fee on each "Restock Price" line and I'm done. Any ideas? Do I need to create a for loop for each instance? Maybe a new ArrayList for NewTotal? Not quite sure what to do at this point. Also, I realize the Restock Price is null because it's not set. Code follows:
If what you wrote is the formula for calculating restock price in your application, you already have it in your gettotal() method. So just change toString() and add that method call at the end of it (instead of NewTotal).
Note that you didn't follow instructions you got here:
Campbell told you about the types you use.
Tony told you about the design.
I told you about setters (those you implemented still don't work as you expect them, since you are assigning value to itself in them) and use of Camel notation.
Joined: Sep 26, 2012
I had a feeling it was something simple I wasn't seeing (again). Thanks again for the assist. Here is what the output looks like:
Now if I can just trim that output to only 2 places after the decimal point to represent a dollars and cents format. Any ideas or suggestions would be appreciated...
Thanks again, everyone. I apologize for not incorporating the information you all gave me at first. I am going to take what great information has be given to me here and mull it over again and sort out this last hurdle of my program. I promise I wont ask any more questions about this application... :-D