<< Chapter < Page Chapter >> Page >

The file named MyRectangle.as

The class named MyRectangle is so similar to the class named MyCircle that it doesn't warrant a detailed explanation. A complete listing of the file is provided in Listing 13 near the end of the lesson.

The constructor receives and saves numeric values for the width and the height of the rectangle.

The overridden area method computes the area as the product of the width and the height and concatenates that information into a returned String object where it is displayed in the format shown in Figure 5.

Run the program

I encourage you to run this program from the web. Then copy the code from Listing 9 through Listing 13. Use thatcode to create a Flex project. Compile and run the project. Experiment with the code, making changes, and observing the results of yourchanges. Make certain that you can explain why your changes behave as theydo.

Resources

I will publish a list containing links to ActionScript resources as a separate document. Search for ActionScript Resources in theConnexions search box.

Complete program listing

Complete listings of the Flex and ActionScript files used in this program are provided in Listing 9 through Listing 13 below.

Listing of the file named polymorph02.mxml.

<?xml version="1.0" encoding="utf-8"?><!--Illustrates polymorphism.--><mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"xmlns:cc="CustomClasses.*"><cc:Driver/></mx:Application>

Listing of the file named driver.as.

package CustomClasses{ import flash.events.*;import mx.containers.VBox;import mx.controls.Button; import mx.controls.Label;import mx.controls.TextArea;public class Driver extends VBox{ private var textArea:TextArea = new TextArea();public function Driver(){//constructorvar label:Label = new Label(); label.text = "Polymorphism Demonstration";label.setStyle("fontSize",14); label.setStyle("color",0xFFFF00);addChild(label);var button:Button = new Button(); button.label = "GO";addChild(button);textArea.width = 200; textArea.height = 70;addChild(textArea);button.addEventListener( MouseEvent.CLICK,buttonHandler);}//end constructorprivate function buttonHandler( event:MouseEvent):void{var randomChoice:Number = Math.random(); var radius:uint = uint(10*Math.random() + 1);var width:uint = uint(10*Math.random() + 1); var height:uint = uint(10*Math.random() + 1);var myShape:MyShape;if(randomChoice<0.33333){ myShape = new MyShape();}else if(randomChoice<0.66666){ myShape = new MyCircle(radius);}else{ myShape = new MyRectangle(width,height);} textArea.text = myShape.area();}//end buttonHandler }//end class}//end package

Listing of the file named myshape.as.

package CustomClasses{ public class MyShape{public function area():String{ return "General Shape\n" +"Unable to compute area."; }// end area method}//end class }//end package

Listing of the file named mycircle.as.

package CustomClasses{ public class MyCircle extends MyShape{private var radius:Number;public function MyCircle(radius:Number){//constructor this.radius = radius;}//end constructoroverride public function area():String{ return "Circle\n" +"Radius = " + radius + "\n" + "Area = " + Math.PI * radius * radius;}//end area }//end class}//end package

Listing of the file named myrectangle.as

package CustomClasses{ public class MyRectangle extends MyShape{private var width:Number; private var height:Number;public function MyRectangle(width:Number,height:Number){//constructor this.width = width;this.height = height; }//end constructoroverride public function area():String{return "Rectangle\n" + "Width = " + width + "\n" +"Height = " + height + "\n" + "Area = " + width * height;}//end area }//end class}//end package

Miscellaneous

This section contains a variety of miscellaneous materials.

Housekeeping material
  • Module name: Polymorphism - The Big Picture
  • Files:
    • ActionScript0110\ActionScript0110.htm
    • ActionScript0110\Connexions\ActionScriptXhtml0110.htm
PDF disclaimer: Although the Connexions site makes it possible for you to download a PDF file for thismodule at no charge, and also makes it possible for you to purchase a pre-printed version of the PDF file, you should beaware that some of the HTML elements in this module may not translate well into PDF.

-end-

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Object-oriented programming (oop) with actionscript. OpenStax CNX. Jun 04, 2010 Download for free at http://cnx.org/content/col11202/1.19
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Object-oriented programming (oop) with actionscript' conversation and receive update notifications?

Ask