zoukankan      html  css  js  c++  java
  • 《大话设计模式》——附录A 封装、继承、多态

      对于不是纯软件开发出身的Flasher,什么是设计模式,什么是OOP编程,简直就是一头雾水。但每每回头看自己写的一坨坨“屎”一样的代码,心都碎了,是应该是时候要改变了。

      从网上搜索了一下资源,买了本程杰的《大话设计模式》,粗看了一篇感觉很不错,通过故事讲述程序如何设计的,使高深的OOP编程思想变得通俗易懂,是对于苦恼、困惑的oop编程初学者的救星啊。虽然里面的代码是C#版本的,但基本思想也是能看明白的。我也打算将书中C#代码改为AS3,正如书中作者所建议读者多自己动手练习。

      仅供参考

      A6封装、A7继承、A8多态

      

    Main
     1 package {
     2     import flash.display.Sprite;
     3     
     4     public class Main extends Sprite{
     5         public function Main(){
     6             var cat:Cat=new Cat();
     7             cat.shoutNum =4;
     8             trace(cat.Shout());
     9             
    10             var dog:Dog = new Dog();
    11             dog.shoutNum = 5;
    12             trace(dog.Shout());
    13         }
    14     }
    15 }
    Animal
     1 package  {
     2     public class Animal {
     3         protected var name:String = "";
     4         protected var _shoutNum:uint = 3;
     5         
     6         /**
     7          * AS3不支持重载,通过“...args”关键字实现,分析args的内容来判断执行不同的分支。
     8          * @param args
     9          * 
    10          */        
    11         public function Animal(){
    12             
    13         }
    14         
    15         protected function setName(...args):void{
    16             if(args.length == 0){
    17                 this.name = "无名"
    18             }else if (args.length ==1){
    19                 this.name = args[0];    
    20             }else {
    21                 trace("参数长度大于1")
    22             }
    23         }
    24         
    25         public function Shout():String{
    26             var result:String = "";
    27             for(var i:uint=0; i < _shoutNum; i++){
    28                 result += getShoutSound();
    29             }
    30             return "我的名字叫" + this.name + result;
    31         }
    32         
    33         public function getShoutSound():String{
    34             return "";
    35         }
    36         
    37         public function get shoutNum():uint{
    38             return _shoutNum;
    39         }
    40         
    41         public function set shoutNum(value:uint):void{
    42             if(value <= 10){
    43                 _shoutNum = value;
    44             }
    45             else{
    46                 _shoutNum = 10;
    47             }
    48         }
    49     }
    50 }
    Cat
     1 package {
     2     public class Cat extends Animal{
     3             
     4         public function Cat(...args){
     5             super.setName(args);
     6         }
     7         
     8         public override function getShoutSound():String{
     9             return "喵";
    10         }
    11     }
    12 }
    Dog
     1 package  {
     2     
     3     public class Dog extends Animal{
     4         public function Dog(...args){
     5             super.setName(args);
     6         }
     7         
     8         public override function getShoutSound():String{
     9             return "汪";
    10         }
    11     }
    12 }
  • 相关阅读:
    【BZOJ】【1662】/【POJ】【3252】 【USACO 2006 Nov】Round Number
    【BZOJ】【1026】【SCOI2009】Windy数
    【HDOJ】【3555】Bomb
    【HDOJ】【2089】不要62
    【Ural】【1057】Amount of degrees
    【POJ】【3710】Christmas Game
    【BZOJ】【2940】【POI2000】条纹
    【POJ】【3537】Crosses and Crosses
    【POJ】【2068】Nim
    【POJ】【2960】S-Nim
  • 原文地址:https://www.cnblogs.com/iwhk/p/2725546.html
Copyright © 2011-2022 走看看