Chinaunix首页 | 论坛 | 博客
  • 博客访问: 69214
  • 博文数量: 13
  • 博客积分: 247
  • 博客等级: 二等列兵
  • 技术积分: 138
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-02 18:17
文章分类

全部博文(13)

文章存档

2015年(1)

2014年(1)

2013年(1)

2012年(2)

2011年(8)

我的朋友

分类: 系统运维

2011-08-18 11:19:47

Personal Answers to Exercises 1 & 2:
LivingCreature.pm:
  1. #! /usr/bin/perl -w
  2. use strict;

  3. package LivingCreature;

  4. sub speak()
  5. {
  6.     my $class = shift;
  7.   if (@_ == 0)
  8.   {
  9.       print STDOUT "Here goes $class ",$class->sound,"!\n";
  10.   }
  11.   else
  12.   {
  13.       print STDOUT "Here goes $class ",$class->talk(@_),"!\n";
  14.   }
  15. }

  16. 1;

 Animal.pm:

  1. #! /usr/bin/perl -w
  2. use strict;
  3. require 'LivingCreature.pm';

  4. package Animal;
  5. our @ISA = qw(LivingCreature);
  6. sub speak
  7. {
  8.     my $class = shift;
  9.     print STDOUT "A $class goes ",$class->sound,"!\n";
  10. }

  11. 1;

Person.pm:

  1. #! /usr/bin/perl -w
  2. use strict;
  3. require 'LivingCreature.pm';

  4. package Person;
  5. our @ISA = qw(LivingCreature);

  6. sub sound()
  7. {
  8.     'Humming';
  9. }

  10. sub talk()
  11. {
  12.     shift;
  13.     "@_";
  14. }

  15. sub speak()
  16. {
  17.     my $class = shift;
  18.   $class->SUPER::speak(@_);
  19. }

  20. 1;

Cow.pm:

  1. #! /usr/bin/perl -w
  2. use strict;
  3. require 'Animal.pm';
  4. package Cow;

  5. our @ISA = qw(Animal);

  6. sub sound
  7. {
  8.     'moooo';
  9. }

  10. sub speak
  11. {
  12.     my $class = shift;
  13.     $class->SUPER::speak(@_);
  14. }

  15. 1;

Horse.pm:

  1. #! /usr/bin/perl -w

  2. use strict;
  3. require 'Animal.pm';

  4. package Horse;

  5. our @ISA = qw(Animal);

  6. sub sound()
  7. {
  8.     'neigh';
  9. }

  10. sub speak()
  11. {
  12.     my $class = shift;
  13.     $class->SUPER::speak(@_);
  14. }

  15. 1;

Sheep.pm:

  1. #! /usr/bin/perl -w
  2. use strict;
  3. require 'Animal.pm';

  4. package Sheep;
  5. our @ISA = qw(Animal);

  6. sub sound()
  7. {
  8.     'baaaah';
  9. }

  10. sub speak()
  11. {
  12.     my $class = shift;
  13.     $class->SUPER::speak(@_);
  14. }

  15. 1;

AnimalMain.pl

 

  1. #! /usr/bin/perl -w
  2. use strict;

  3. require 'Cow.pm';
  4. require 'Horse.pm';
  5. require 'Sheep.pm';
  6. require 'Person.pm';

  7. chomp(my $line = <>);
  8. my @pasture = split(/\s+/,$line);
  9. foreach my $animal(@pasture)
  10. {
  11.     next if ( $animal ne 'Cow' && $animal ne 'Horse' && $animal ne 'Sheep' );
  12.     $animal->speak;
  13. }

  14. Person->speak("Hi,songwolf");
  15. Person->speak;

 

总结:

1.our变量修饰符的使用

2.抽象公共行为成为基类的公共函数,回调子类的方法产生个性化行为.

阅读(1447) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~