Interface.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. Type.registerNamespace("Demo.Trees");
  2. Demo.Trees.IFruitTree = function() {}
  3. Demo.Trees.IFruitTree.Prototype = {
  4. bearFruit: function(){}
  5. }
  6. Demo.Trees.IFruitTree.registerInterface('Demo.Trees.IFruitTree');
  7. Demo.Trees.Tree = function(name) {
  8. this._name = name;
  9. }
  10. Demo.Trees.Tree.prototype = {
  11. returnName: function() {
  12. return this._name;
  13. },
  14. toStringCustom: function() {
  15. return this.returnName();
  16. },
  17. makeLeaves: function() {}
  18. }
  19. Demo.Trees.Tree.registerClass('Demo.Trees.Tree');
  20. Demo.Trees.FruitTree = function(name, description) {
  21. Demo.Trees.FruitTree.initializeBase(this, [name]);
  22. this._description = description;
  23. }
  24. Demo.Trees.FruitTree.prototype.bearFruit = function() {
  25. return this._description;
  26. }
  27. Demo.Trees.FruitTree.registerClass('Demo.Trees.FruitTree', Demo.Trees.Tree, Demo.Trees.IFruitTree);
  28. Demo.Trees.Apple = function() {
  29. Demo.Trees.Apple.initializeBase(this, ['Apple', 'red and crunchy']);
  30. }
  31. Demo.Trees.Apple.prototype = {
  32. makeLeaves: function() {
  33. alert('Medium-sized and desiduous');
  34. },
  35. toStringCustom: function() {
  36. return 'FruitTree ' + Demo.Trees.Apple.callBaseMethod(this, 'toStringCustom');
  37. }
  38. }
  39. Demo.Trees.Apple.registerClass('Demo.Trees.Apple', Demo.Trees.FruitTree);
  40. Demo.Trees.GrannySmith = function() {
  41. Demo.Trees.GrannySmith.initializeBase(this);
  42. // You must set the _description feild after initializeBase
  43. // or you will get the base value.
  44. this._description = 'green and sour';
  45. }
  46. Demo.Trees.GrannySmith.prototype.toStringCustom = function() {
  47. return Demo.Trees.GrannySmith.callBaseMethod(this, 'toStringCustom') + ' ... its GrannySmith!';
  48. }
  49. Demo.Trees.GrannySmith.registerClass('Demo.Trees.GrannySmith', Demo.Trees.Apple);
  50. Demo.Trees.Banana = function(description) {
  51. Demo.Trees.Banana.initializeBase(this, ['Banana', 'yellow and squishy']);
  52. }
  53. Demo.Trees.Banana.prototype.makeLeaves = function() {
  54. alert('Big and green');
  55. }
  56. Demo.Trees.Banana.registerClass('Demo.Trees.Banana', Demo.Trees.FruitTree);
  57. Demo.Trees.Pine = function() {
  58. Demo.Trees.Pine.initializeBase(this, ['Pine']);
  59. }
  60. Demo.Trees.Pine.prototype.makeLeaves = function() {
  61. alert('Needles in clusters');
  62. }
  63. Demo.Trees.Pine.registerClass('Demo.Trees.Pine', Demo.Trees.Tree);