• 面向对象下面几步


    高效的属性存储:
    
    我们一向使用散列表来存储对象属性,我们这样做有几个好的理由:
    
    
    1.每个属性都是自我描述的(也就是说,每个属性的名字和类型可以很容易的从对象中获取),
    
    这样可以很容易的来编写可读性好的代码。它还可以使模块无需对象显示合作就能够进行自动的
    
    对象持续性存储或对象的可视化。
    
    2.位于继承层次中的每个类都可以自由独立的添加属性
    
    
    ObjectTemplate:使用数组来存储属性:
    
    
    这一节展示的模块使用数组来存储属性(但是不是那种每个对象一个数组的方式)
    
    
    注意:Perl 允许你不存在用法歧义的情况下,省略任何调用方法的括号。
    
    与前面的例子一样,任何跟在箭头后面的单词都被当作是一个方法。
    
    
    Vsftp:/root/perl/19# cat ObjectTemplate.pm 
    package ObjectTemplate;
      require Exporter;    
      @ISA = qw(Exporter);    
      @EXPORT_OK = qw(new position);
     sub new {
             my $self = {};    
             my $class = shift;  ##第一个参数类的名字;
             my $self ={@_};
             bless $self,$class;
        return $self;
    };
      sub position {
            my $self=shift;
            my $Actress=shift;
            return "$Actress.length$Actress"
             };
    1;
    Vsftp:/root/perl/19# cat Employee.pm 
    package Employee;
    use ObjectTemplate qw/new position/;
    1;
    
    
    
    Vsftp:/root/perl/19# cat a1.pl 
    unshift(@INC,"/root/perl/19");
    use Employee;
    use Data::Dumper;
    $obj = Employee->new("name"=>"Normae Jean",
                         "age" =>25
                         )  ##new()方法由ObjectTemplate创建
    
    ;
    print Dumper($obj);
    print "
    ";
    print $obj->{name};
    print "
    ";
    
    print $obj->{age};
    print "
    ";
    print $obj->position("Actress");
    Vsftp:/root/perl/19# perl a1.pl 
    $VAR1 = bless( {
                     'name' => 'Normae Jean',
                     'age' => 25
                   }, 'Employee' );
    
    Normae Jean
    25
    Actress.lengthActressVsftp:/root/perl/19# 
    
    
    
    Vsftp:/root/perl/19# cat Employee.pm 
    package Employee;
    use ObjectTemplate qw/new position/;
    sub promote {
        my $self=shift;
        my $current_position=$self->position(); ##获取属性
        my $next_position = $current_position."abc123";
       $self->position($next_position);
         };
    1;
    
    Vsftp:/root/perl/19# cat a1.pl 
    unshift(@INC,"/root/perl/19");
    use Employee;
    use Data::Dumper;
    $obj = Employee->new("name"=>"Normae Jean",
                         "age" =>25
                         )  ##new()方法由ObjectTemplate创建
    
    ;
    print Dumper($obj);
    print "
    ";
    print $obj->{name};
    print "
    ";
    
    print $obj->{age};
    print "
    ";
    print $obj->position("Actress");
    print "
    ";
    print $obj->promote();
    Vsftp:/root/perl/19# perl a1.pl 
    $VAR1 = bless( {
                     'name' => 'Normae Jean',
                     'age' => 25
                   }, 'Employee' );
    
    Normae Jean
    25
    Actress.lengthActress
    .lengthabc123.length.lengthabc123Vsftp:/root/perl/19# 
    

  • 相关阅读:
    前端 jquery获取当前页面的URL信息
    PHP合并数组及去重,PHP检测一个数组中有几个相同的
    ThinkPHP缓存技术(S(),F(),查询缓存,静态缓存)
    php 检测url
    ThinkPHP函数详解:F方法
    图片查看器(图片放大缩小功能)
    Thinkphp路由配置和静态缓存规则【原创】
    mySQL-CRUD操作(数据库的增删改查)练习题
    mySQL CRUD操作(数据库的增删改查)
    初识mySQL(关系型数据库)
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13349985.html
Copyright © 2020-2023  润新知