CSSE 220 – Object-Oriented Software Development

Homework 6

Objectives

Practice creating, documenting, and testing classes based on a given public interface. More graphics and math practice. Practice with if in Java.

Tasks

  1. Complete the assigned reading for the next session, according to the course schedule.
  2. Complete the assessment exercise over this reading on ANGEL (under Lessons → Assignments).
  3. Programming:
    1. In Eclipse, checkout the Decisions project.

      • Use the SVN Repositories view to check out this project.
    2. Complete Exercise P5.4 from Big Java. (This is P5.5 in ed3.) We’ve provided a commented-out GradeTest JUnit test class for you. Uncomment and study the code there for clarification of the design of the Grade class.
    3. Create a class CubicPlot. Its constructor should take eight (yes, eight!) arguments:
      • top, left — the top-left coordinates for a rectangle on which the class will plot
      • width, height — the width and height of the rectangle on which the class will plot
      • a, b, c, d — the coefficients of the equation y = ax3 + bx2 + cx + d, that the class will plot

      The class should include a method drawOn(Graphics2D g) that plots the graph as detailed below. The classes CubicPlotViewer and PlotComponent are provided. PlotComponent includes a call of CubicPlot’s constructor that we supplied to test your code. Uncomment that call.

      Implement the CubicPlot class to satisfy these conditions:

      1. The origin of the plotted graph should be in the center of the rectangle described by top, left, width, and height.
      2. The plotted graph should display x- and y-axes. You do not need to include tick marks on the axes.
      3. Use String’s format() method and Graphics2D’s drawString() method to display the equation on the graph.
      4. Use a loop to calculate the y value for each integer x from -width to width. Plot the graph by drawing a line from the previous point calculated to the next point. (You’ll have to calculate the first point outside the loop.) Be sure to shift your plot according to the required origin. You should also “flip” the y values when plotting so that the y-axis increases up the screen.
      5. Bonus: clip the plot so that it doesn’t extend beyond the bounds given by top, left, width, and height.

      The figure below gives an example plot (without clipping, no bonus for me): Sample CubicPlot output

Remember, in all your code:

Here is the grading rubric for this assignment.

Turn-in Instructions

Turn in your programming work by committing it to your SVN repository.