zoukankan      html  css  js  c++  java
  • 面向对象下面几步

    高效的属性存储:
    
    我们一向使用散列表来存储对象属性,我们这样做有几个好的理由:
    
    
    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# 
    

  • 相关阅读:
    推荐给新手gopher的一些书籍
    flask中路由处理
    flask中间件之请求扩展
    Chrome调试技巧
    iconfont 使用
    @font-face 使用过程
    SEO
    数据结构与算法2-4 队列
    数据结构与算法2-4 堆栈链式存储
    软件推荐--Sublime Text3常用快捷键查询(不断更新ing)
  • 原文地址:https://www.cnblogs.com/zhaoyangjian724/p/6198940.html
Copyright © 2011-2022 走看看