import java.applet.*; import java.awt.*; import java.text.DecimalFormat; /*-------------------------------------------------------------------* * NTU Student: Java With Engineering Applications, Spring 1999 * Assignment # 3 - Java How To Program 2nd edition, Deitel & Deitel * Problem 7.26 on page 403 - Implement Abstract Shape Class * * Michael Kusmierz * Xerox Corporation * Rev 1.0 Mar 2, 1999 * * This code represents a students work in progress * and is not to be used beyond that purpose. *-------------------------------------------------------------------*/ public class Driver2 extends Applet { Font font = new Font("Dialog", Font.BOLD, 12); String str = "Welcome to Problem 7.26 Implementing a Shape Hierarchy"; int xPos = 5; private TextArea ivjTextArea1 = null; //-- two D shapes private Circle testCircle; private Square testSquare; private Triangle testTriangle; //-- three D shapes private Sphere testSphere; private Cube testCube; private Cylinder testCylinder; /** * Returns information about this applet. * @return a string of information about this applet */ public String getAppletInfo() { return "Driver2\n" + "Deitel&Deitel Problem 7.26:\n" + " Using an interface to an Abstract Hierarchy of Shapes\n" + ""; } /** * Return the TextArea1 property value. * @return java.awt.TextArea */ /* WARNING: THIS METHOD WILL BE REGENERATED. */ private TextArea getTextArea1() { if (ivjTextArea1 == null) { try { ivjTextArea1 = new java.awt.TextArea(); ivjTextArea1.setName("TextArea1"); ivjTextArea1.setBounds(11, 70, 407, 238); // user code begin {1} // user code end } catch (java.lang.Throwable ivjExc) { // user code begin {2} // user code end handleException(ivjExc); } }; return ivjTextArea1; } /** * Called whenever the part throws an exception. * @param exception java.lang.Throwable */ private void handleException(Throwable exception) { /* Uncomment the following lines to print uncaught exceptions to stdout */ // System.out.println("--------- UNCAUGHT EXCEPTION ---------"); // exception.printStackTrace(System.out); } /** * Initializes the applet. * * @see #start * @see #stop * @see #destroy */ public void init() { super.init(); try { setName("Driver2"); setLayout(null); setSize(440, 320); add(getTextArea1(), getTextArea1().getName()); // user code begin {1} //--- Create instances of Two D shapes and give dimensions testCircle = new Circle(5); testSquare = new Square(6); testTriangle = new Triangle(6,6); //--- Create instances of Three D shapes and give dimensions testSphere = new Sphere(5); testCube = new Cube(6); testCylinder = new Cylinder(5,2); //--- print results dimensions as well as area and volume printResults(); // user code end } catch (java.lang.Throwable ivjExc) { // user code begin {2} // user code end handleException(ivjExc); } } /** * main entrypoint - starts the part when it is run as an application * @param args java.lang.String[] */ public static void main(java.lang.String[] args) { try { Frame frame; try { Class aFrameClass = Class.forName("com.ibm.uvm.abt.edit.TestFrame"); frame = (Frame)aFrameClass.newInstance(); } catch (java.lang.Throwable ivjExc) { frame = new Frame(); } Driver2 aDriver2; Class iiCls = Class.forName("Driver2"); ClassLoader iiClsLoader = iiCls.getClassLoader(); aDriver2 = (Driver2)java.beans.Beans.instantiate(iiClsLoader,"Driver2"); frame.add("Center", aDriver2); frame.setSize(aDriver2.getSize()); frame.setVisible(true); } catch (Throwable exception) { System.err.println("Exception occurred in main() of java.applet.Applet"); exception.printStackTrace(System.out); } } /** * Draws the text on the drawing area. * @param g the specified Graphics window */ public void paint(Graphics g) { g.setFont(font); g.setColor(Color.black); g.drawString(str, xPos, 50); } /*************************************************************************** * This method prints to two screens: * The System out screen contains the original Type and original dimensions * The Applets text area contains the above plus calculated volume and area. */ private void printResults() { DecimalFormat precision2 = new DecimalFormat( "#0.00" ); ivjTextArea1.append(testCircle.toString()); ivjTextArea1.append("Area = \t" + precision2.format(testCircle.area()) + "\n"); ivjTextArea1.append("Volume = \t" + precision2.format(testCircle.volume()) + "\n"); ivjTextArea1.append("\n"); testCircle.print(); ivjTextArea1.append(testSquare.toString()); ivjTextArea1.append("Area = \t" + precision2.format(testSquare.area()) + "\n"); ivjTextArea1.append("Volume = \t" + precision2.format(testSquare.volume()) + "\n"); ivjTextArea1.append("\n"); testSquare.print(); ivjTextArea1.append(testTriangle.toString()); ivjTextArea1.append("Area = \t" + precision2.format(testTriangle.area()) + "\n"); ivjTextArea1.append("Volume = \t" + precision2.format(testTriangle.volume()) + "\n"); ivjTextArea1.append("\n"); testTriangle.print(); ivjTextArea1.append(testSphere.toString()); ivjTextArea1.append("Area = \t" + precision2.format(testSphere.area()) + "\n"); ivjTextArea1.append("Volume = \t" + precision2.format(testSphere.volume()) + "\n"); ivjTextArea1.append("\n"); testSphere.print(); ivjTextArea1.append(testCube.toString()); ivjTextArea1.append("Area = \t" + precision2.format(testCube.area()) + "\n"); ivjTextArea1.append("Volume = \t" + precision2.format(testCube.volume()) + "\n"); ivjTextArea1.append("\n"); testCube.print(); ivjTextArea1.append(testCylinder.toString()); ivjTextArea1.append("Area = \t" + precision2.format(testCylinder.area()) + "\n"); ivjTextArea1.append("Volume = \t" + precision2.format(testCylinder.volume()) + "\n"); ivjTextArea1.append("\n"); testCylinder.print(); } }