Spaces:
Sleeping
Sleeping
| /** | |
| * @fileoverview This file is to be used for testing the JSDoc parser | |
| * It is not intended to be an example of good JavaScript OO-programming, | |
| * nor is it intended to fulfill any specific purpose apart from | |
| * demonstrating the functionality of the | |
| * <a href='http://sourceforge.net/projects/jsdoc'>JSDoc</a> parser | |
| * | |
| * @author Gabriel Reid gab_reid@users.sourceforge.net | |
| * @version 0.1 | |
| */ | |
| /** | |
| * Construct a new Shape object. | |
| * @class This is the basic Shape class. | |
| * It can be considered an abstract class, even though no such thing | |
| * really existing in JavaScript | |
| * @constructor | |
| * @throws MemoryException if there is no more memory | |
| * @throws GeneralShapeException rarely (if ever) | |
| * @return {Shape|Coordinate} A new shape. | |
| */ | |
| function Shape(){ | |
| /** | |
| * This is an example of a function that is not given as a property | |
| * of a prototype, but instead it is assigned within a constructor. | |
| * For inner functions like this to be picked up by the parser, the | |
| * function that acts as a constructor <b>must</b> be denoted with | |
| * the <b>@constructor</b> tag in its comment. | |
| * @type String | |
| */ | |
| this.getClassName = function(){ | |
| return "Shape"; | |
| } | |
| /** | |
| * This is an inner method, just used here as an example | |
| * @since version 0.5 | |
| * @author Sue Smart | |
| */ | |
| function addReference(){ | |
| // Do nothing... | |
| } | |
| } | |
| /** | |
| * Create a new Hexagon instance. | |
| * @extends Shape | |
| * @class Hexagon is a class that is a <i>logical</i> sublcass of | |
| * {@link Shape} (thanks to the <code>@extends</code> tag), but in | |
| * reality it is completely unrelated to Shape. | |
| * @param {int} sideLength The length of one side for the new Hexagon | |
| * @example | |
| * var h = new Hexagon(2); | |
| * @example | |
| * if (hasHex) { | |
| * hex = new Hexagon(5); | |
| * color = hex.getColor(); | |
| * } | |
| */ | |
| function Hexagon(sideLength) { | |
| } | |
| /** | |
| * This is an unattached (static) function that adds two integers together. | |
| * @param {int} One The first number to add | |
| * @param {int} Two The second number to add | |
| * @author Gabriel Reid | |
| * @deprecated So you shouldn't use it anymore! Use {@link Shape#getClassName} instead. | |
| */ | |
| function Add(One, Two){ | |
| return One + Two; | |
| } | |
| /** | |
| * The color of this shape | |
| * @type Color | |
| */ | |
| Shape.prototype.color = null; | |
| /** | |
| * The border of this shape. | |
| * @field | |
| * @type int | |
| */ | |
| Shape.prototype.border = function(){return border;}; | |
| /* | |
| * These are all the instance method implementations for Shape | |
| */ | |
| /** | |
| * Get the coordinates of this shape. It is assumed that we're always talking | |
| * about shapes in a 2D location here. | |
| * @requires The {@link Shape} class | |
| * @returns A Coordinate object representing the location of this Shape | |
| * @type Coordinate[] | |
| */ | |
| Shape.prototype.getCoords = function(){ | |
| return this.coords; | |
| } | |
| /** | |
| * Get the color of this shape. | |
| * @see #setColor | |
| * @see The <a href="http://example.com">Color</a> library. | |
| * @link Shape | |
| * @type Color | |
| */ | |
| Shape.prototype.getColor = function(){ | |
| return this.color; | |
| } | |
| /** | |
| * Set the coordinates for this Shape | |
| * @param {Coordinate} coordinates The coordinates to set for this Shape | |
| */ | |
| Shape.prototype.setCoords = function(coordinates){ | |
| this.coords = coordinates; | |
| } | |
| /** | |
| * Set the color for this Shape | |
| * @param {Color} color The color to set for this Shape | |
| * @param other There is no other param, but it can still be documented if | |
| * optional parameters are used | |
| * @throws NonExistantColorException (no, not really!) | |
| * @see #getColor | |
| */ | |
| Shape.prototype.setColor = function(color){ | |
| this.color = color; | |
| } | |
| /** | |
| * Clone this shape | |
| * @returns A copy of this shape | |
| * @type Shape | |
| * @author Gabriel Reid | |
| */ | |
| Shape.prototype.clone = function(){ | |
| return new Shape(); | |
| } | |
| /** | |
| * Create a new Rectangle instance. | |
| * @class A basic rectangle class, inherits from Shape. | |
| * This class could be considered a concrete implementation class | |
| * @constructor | |
| * @param {int} width The optional width for this Rectangle | |
| * @param {int} height Thie optional height for this Rectangle | |
| * @author Gabriel Reid | |
| * @see Shape is the base class for this | |
| * @augments Shape | |
| * @hilited | |
| */ | |
| function Rectangle(width, // This is the width | |
| height // This is the height | |
| ){ | |
| if (width){ | |
| this.width = width; | |
| if (height){ | |
| this.height = height; | |
| } | |
| } | |
| } | |
| /* Inherit from Shape */ | |
| Rectangle.prototype = new Shape(); | |
| /** | |
| * Value to represent the width of the Rectangle. | |
| * <br>Text in <b>bold</b> and <i>italic</i> and a | |
| * link to <a href="http://sf.net">SourceForge</a> | |
| * @private | |
| * @type int | |
| */ | |
| Rectangle.prototype.width = 0; | |
| /** | |
| * Value to represent the height of the Rectangle | |
| * @private | |
| * @type int | |
| */ | |
| Rectangle.prototype.height = 0; | |
| /** | |
| * Get the type of this object. | |
| * @type String | |
| */ | |
| Rectangle.prototype.getClassName= function(){ | |
| return "Rectangle"; | |
| } | |
| /** | |
| * Get the value of the width for the Rectangle | |
| * @type int | |
| * @see Rectangle#setWidth | |
| */ | |
| Rectangle.prototype.getWidth = function(){ | |
| return this.width; | |
| } | |
| /** | |
| * Get the value of the height for the Rectangle. | |
| * Another getter is the {@link Shape#getColor} method in the | |
| * {@link Shape} base class. | |
| * @return The height of this Rectangle | |
| * @type int | |
| * @see Rectangle#setHeight | |
| */ | |
| Rectangle.prototype.getHeight = function(){ | |
| return this.height; | |
| } | |
| /** | |
| * Set the width value for this Rectangle. | |
| * @param {int} width The width value to be set | |
| * @see #setWidth | |
| */ | |
| Rectangle.prototype.setWidth = function(width){ | |
| this.width = width; | |
| } | |
| /** | |
| * Set the height value for this Rectangle. | |
| * @param {int} height The height value to be set | |
| * @see #getHeight | |
| */ | |
| Rectangle.prototype.setHeight = function(height){ | |
| this.height = height; | |
| } | |
| /** | |
| * Get the value for the total area of this Rectangle | |
| * @return total area of this Rectangle | |
| * @type int | |
| */ | |
| Rectangle.prototype.getArea = function(){ | |
| return width * height; | |
| } | |
| /** | |
| * Create a new Square instance. | |
| * @class A Square is a subclass of {@link Rectangle} | |
| * @param {int} width The optional width for this Rectangle | |
| * @param {int} height The optional height for this Rectangle | |
| * @augments Rectangle | |
| */ | |
| function Square(width, height){ | |
| if (width){ | |
| this.width = width; | |
| if (height){ | |
| this.height = height; | |
| } | |
| } | |
| } | |
| /* Square is a subclass of Rectangle */ | |
| Square.prototype = new Rectangle(); | |
| /** | |
| * Set the width value for this Shape. | |
| * @param {int} width The width value to be set | |
| * @see #getWidth | |
| */ | |
| Square.prototype.setWidth = function(width){ | |
| this.width = this.height = width; | |
| } | |
| /** | |
| * Set the height value for this Shape | |
| * Sets the {@link Rectangle#height} attribute in the Rectangle. | |
| * @param {int} height The height value to be set | |
| */ | |
| Square.prototype.setHeight = function(height){ | |
| this.height = this.width = height; | |
| } | |
| /** | |
| * Create a new Circle instance based on a radius. | |
| * @class Circle class is another subclass of Shape | |
| * @extends Shape | |
| * @param {int} radius The optional radius of this {@link Circle } | |
| * @mixin Square.prototype.setWidth as this.setDiameter | |
| */ | |
| function Circle(radius){ | |
| if (radius) { | |
| /** The radius of the this Circle. */ | |
| this.radius = radius; | |
| } | |
| } | |
| /* Circle inherits from {@link Shape} */ | |
| Circle.prototype = new Shape(); | |
| /** | |
| * The radius value for this Circle | |
| * @private | |
| * @type int | |
| */ | |
| Circle.prototype.radius = 0; | |
| /** | |
| * A very simple class (static) field that is also a constant | |
| * @final | |
| * @type float | |
| */ | |
| Circle.PI = 3.14; | |
| /** | |
| * Get the radius value for this Circle | |
| * @type int | |
| * @see #setRadius | |
| */ | |
| Circle.prototype.getRadius = function(){ | |
| return this.radius; | |
| } | |
| /** | |
| * Set the radius value for this Circle | |
| * @param {int} radius The {@link Circle#radius} value to set | |
| * @see #getRadius | |
| */ | |
| Circle.prototype.setRadius = function(radius){ | |
| this.radius = radius; | |
| } | |
| /** | |
| * An example of a class (static) method that acts as a factory for Circle | |
| * objects. Given a radius value, this method creates a new Circle. | |
| * @param {int} radius The radius value to use for the new Circle. | |
| * @type Circle | |
| */ | |
| Circle.createCircle = function(radius){ | |
| return new Circle(radius); | |
| } | |
| /** | |
| * Create a new Coordinate instance based on x and y grid data. | |
| * @class Coordinate is a class that can encapsulate location information. | |
| * @param {int} [x=0] The optional x portion of the Coordinate | |
| * @param {int} [y=0] The optinal y portion of the Coordinate | |
| */ | |
| function Coordinate(x, y){ | |
| if (x){ | |
| this.x = x; | |
| if (y){ | |
| this.y = y; | |
| } | |
| } | |
| } | |
| /** | |
| * The x portion of the Coordinate | |
| * @type int | |
| * @see #getX | |
| * @see #setX | |
| */ | |
| Coordinate.prototype.x = 0; | |
| /** | |
| * The y portion of the Coordinate | |
| * @type int | |
| * @see #getY | |
| * @see #setY | |
| */ | |
| Coordinate.prototype.y = 0; | |
| /** | |
| * Gets the x portion of the Coordinate. | |
| * @type int | |
| * @see #setX | |
| */ | |
| Coordinate.prototype.getX = function(){ | |
| return this.x; | |
| } | |
| /** | |
| * Get the y portion of the Coordinate. | |
| * @type int | |
| * @see #setY | |
| */ | |
| Coordinate.prototype.getY = function(){ | |
| return this.y; | |
| } | |
| /** | |
| * Sets the x portion of the Coordinate. | |
| * @param {int} x The x value to set | |
| * @see #getX | |
| */ | |
| Coordinate.prototype.setX = function(x){ | |
| this.x = x; | |
| } | |
| /** | |
| * Sets the y portion of the Coordinate. | |
| * @param {int} y The y value to set | |
| * @see #getY | |
| */ | |
| Coordinate.prototype.setY = function(y){ | |
| this.y = y; | |
| } | |
| /** | |
| * @class This class exists to demonstrate the assignment of a class prototype | |
| * as an anonymous block. | |
| */ | |
| function ShapeFactory(){ | |
| } | |
| ShapeFactory.prototype = { | |
| /** | |
| * Creates a new {@link Shape} instance. | |
| * @return A new {@link Shape} | |
| * @type Shape | |
| */ | |
| createShape: function(){ | |
| return new Shape(); | |
| } | |
| } | |
| /** | |
| * An example of a singleton class | |
| * @param ... Arguments represent {@link coordinate}s in the shape. | |
| * @constructor | |
| */ | |
| MySingletonShapeFactory = function(){ | |
| /** | |
| * Get the next {@link Shape} | |
| * @type Shape | |
| * @return A new {@link Shape} | |
| */ | |
| this.getShape = function(){ | |
| return null; | |
| } | |
| } | |
| /** | |
| * Create a new Foo instance. | |
| * @class This is the Foo class. It exists to demonstrate 'nested' classes. | |
| * @constructor | |
| * @see Foo.Bar | |
| */ | |
| function Foo(){} | |
| /** | |
| * Creates a new instance of Bar. | |
| * @class This class exists to demonstrate 'nested' classes. | |
| * @constructor | |
| * @see Foo.Bar | |
| */ | |
| function Bar(){} | |
| /** | |
| * Nested class | |
| * @constructor | |
| */ | |
| Foo.Bar = function(){ | |
| /** The x. */ this.x = 2; | |
| } | |
| Foo.Bar.prototype = new Bar(); | |
| /** The y. */ | |
| Foo.Bar.prototype.y = '3'; | |