<< Chapter < Page | Chapter >> Page > |
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.
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.
I will publish a list containing links to ActionScript resources as a separate document. Search for ActionScript Resources in theConnexions search box.
Complete listings of the Flex and ActionScript files used in this program are provided in Listing 9 through Listing 13 below.
<?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>
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
package CustomClasses{
public class MyShape{public function area():String{
return "General Shape\n" +"Unable to compute area.";
}// end area method}//end class
}//end package
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
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
This section contains a variety of miscellaneous materials.
-end-
Notification Switch
Would you like to follow the 'Object-oriented programming (oop) with actionscript' conversation and receive update notifications?