Difference between revisions of "CIS 3020 Project 1"
Jump to navigation
Jump to search
Line 9: | Line 9: | ||
# square(length: double) draws a regular square, and | # square(length: double) draws a regular square, and | ||
# a driver class, DrawHouse( ), that draws the house given in the figure below. | # a driver class, DrawHouse( ), that draws the house given in the figure below. | ||
+ | ==GeometricTurtle.java== | ||
+ | <pre> | ||
+ | public class GeometricTurtle extends Turtle { | ||
+ | // Simple method that draws a line of length "length", then turns | ||
+ | // to the left "angle" degrees. Note that we put the turtle's | ||
+ | // tail down at the beginning and pick it up at the end. Since | ||
+ | // we do it here, we don't have to worry about doing it in any | ||
+ | // of the methods following this one that use this particular method. | ||
+ | public void drawSide(double length, double angle) { | ||
+ | this.tailDown(); | ||
+ | this.move(length); | ||
+ | this.turnLeft(angle); | ||
+ | this.tailUp(); | ||
+ | } // end drawSide | ||
+ | |||
+ | // Method to draw a rectangle. We will be able to use this method | ||
+ | // again in a method after this for drawing a square, seeing as | ||
+ | // a square is just a rectangle with equal sides. | ||
+ | // | ||
+ | // Input is the lenth of the two differing sides of the rectangle. | ||
+ | public void drawRectangle(double length, double breadth) { | ||
+ | this.drawSide(length,90); // Rectangle angles are 90 degrees (360/4) | ||
+ | this.drawSide(breadth,90); | ||
+ | this.drawSide(length,90); | ||
+ | this.drawSide(breadth,90); | ||
+ | } // End drawRectangle | ||
+ | |||
+ | // Method to draw a pentagon. Input is just the length of the sides | ||
+ | // of the pentagon. If we knew about loops this code could be even | ||
+ | // cleaner, of course. | ||
+ | public void drawPentagon(double length) { | ||
+ | this.drawSide(length,72); // Pentagon angles are 72 degrees (360/5) | ||
+ | this.drawSide(length,72); | ||
+ | this.drawSide(length,72); | ||
+ | this.drawSide(length,72); | ||
+ | this.drawSide(length,72); | ||
+ | } // End drawPentagon | ||
+ | |||
+ | // Method to draw a hexagon. Input is the length of the sides of the | ||
+ | // hexagon. | ||
+ | public void drawHexagon(double length) { | ||
+ | this.drawSide(length,60); // Hexagon angles are 60 degrees (360/6) | ||
+ | this.drawSide(length,60); | ||
+ | this.drawSide(length,60); | ||
+ | this.drawSide(length,60); | ||
+ | this.drawSide(length,60); | ||
+ | this.drawSide(length,60); | ||
+ | } // End drawHexagon | ||
+ | |||
+ | // Method to draw an octagon. Input is the length of the sides of the | ||
+ | // octagon. | ||
+ | public void drawOctagon(double length) { | ||
+ | this.drawSide(length,45); // Octagon angles are 45 degrees (360/8) | ||
+ | this.drawSide(length,45); | ||
+ | this.drawSide(length,45); | ||
+ | this.drawSide(length,45); | ||
+ | this.drawSide(length,45); | ||
+ | this.drawSide(length,45); | ||
+ | this.drawSide(length,45); | ||
+ | this.drawSide(length,45); | ||
+ | } // End drawOctagon | ||
+ | |||
+ | // Method to draw a square. Input is the length of the sides of the | ||
+ | // square. Note that we are using the drawRectangle method from this | ||
+ | // method since it does exactly what we need here as well. | ||
+ | public void drawSquare(double length) { | ||
+ | this.drawRectangle(length,length); | ||
+ | } // End drawSquare | ||
+ | } // End class GeometricTurtle | ||
+ | </pre> |
Latest revision as of 09:46, 30 March 2007
Background
We have discussed the class Turtle and Island in class and in Lab sessions. In this homework you will focus on getting acquainted with extending a class to add more functionality. You have been given the UMLs for the two classes in your lecture notes. Your job is to augment the Turtle class by creating a new subclass called GeometricTurtle that contains at least the following methods:
- drawSide(length: double, angle: double) draws the side of an object of the specified length, then turns the specified angle.
Using this drawSide method you will implement the following methods: - rectangle(length: double, breadth: double) draws a rectangle.,
- pentagon(length: double) draws a regular pentagon,
- hexagon(length: double) draws a regular hexagon,
- octagon(length: double) draws a regular octagon,
- square(length: double) draws a regular square, and
- a driver class, DrawHouse( ), that draws the house given in the figure below.
GeometricTurtle.java
public class GeometricTurtle extends Turtle { // Simple method that draws a line of length "length", then turns // to the left "angle" degrees. Note that we put the turtle's // tail down at the beginning and pick it up at the end. Since // we do it here, we don't have to worry about doing it in any // of the methods following this one that use this particular method. public void drawSide(double length, double angle) { this.tailDown(); this.move(length); this.turnLeft(angle); this.tailUp(); } // end drawSide // Method to draw a rectangle. We will be able to use this method // again in a method after this for drawing a square, seeing as // a square is just a rectangle with equal sides. // // Input is the lenth of the two differing sides of the rectangle. public void drawRectangle(double length, double breadth) { this.drawSide(length,90); // Rectangle angles are 90 degrees (360/4) this.drawSide(breadth,90); this.drawSide(length,90); this.drawSide(breadth,90); } // End drawRectangle // Method to draw a pentagon. Input is just the length of the sides // of the pentagon. If we knew about loops this code could be even // cleaner, of course. public void drawPentagon(double length) { this.drawSide(length,72); // Pentagon angles are 72 degrees (360/5) this.drawSide(length,72); this.drawSide(length,72); this.drawSide(length,72); this.drawSide(length,72); } // End drawPentagon // Method to draw a hexagon. Input is the length of the sides of the // hexagon. public void drawHexagon(double length) { this.drawSide(length,60); // Hexagon angles are 60 degrees (360/6) this.drawSide(length,60); this.drawSide(length,60); this.drawSide(length,60); this.drawSide(length,60); this.drawSide(length,60); } // End drawHexagon // Method to draw an octagon. Input is the length of the sides of the // octagon. public void drawOctagon(double length) { this.drawSide(length,45); // Octagon angles are 45 degrees (360/8) this.drawSide(length,45); this.drawSide(length,45); this.drawSide(length,45); this.drawSide(length,45); this.drawSide(length,45); this.drawSide(length,45); this.drawSide(length,45); } // End drawOctagon // Method to draw a square. Input is the length of the sides of the // square. Note that we are using the drawRectangle method from this // method since it does exactly what we need here as well. public void drawSquare(double length) { this.drawRectangle(length,length); } // End drawSquare } // End class GeometricTurtle