package Parent;
use strict;
use warnings;
use Child;
sub new
{ my $class = shift;
my $this = {};
bless $this, $class;
$this->setChild( Child->new( @_ ) );
return $this;
}
sub setChild
{ my ( $this, $child ) = @_;
if ( defined $child )
{ $this->{_child} = $child;
return 1;
}
return undef;
}
sub getChild
{ my $this = shift;
return $this->{_child};
}
sub setChildValue1
{ my ( $this, $value ) = @_;
if ( defined $value )
{ return $this->getChild()->setValue1( $value );
}
return undef;
}
sub getChildValue1
{ my $this = shift;
return $this->getChild()->getValue1();
}
sub setChildValue2
{ my ( $this, $value ) = @_;
if ( defined $value )
{ return $this->getChild()->setValue2( $value );
}
return undef;
}
sub getChildValue2
{ my $this = shift;
return $this->getChild()->getValue2();
}
1;
####
package Child;
use strict;
use warnings;
sub new
{ my ( $class, $value1, $value2 ) = @_;
my $this = {};
bless $this, $class;
$this->setValue1( $value1 );
$this->setValue2( $value2 );
return $this;
}
sub setValue1
{ my ( $this, $value ) = @_;
if ( defined $value )
{ $this->{_value1} = $value;
return 1;
}
return undef;
}
sub getValue1
{ my $this = shift;
return $this->{_value1};
}
sub setValue2
{ my ( $this, $value ) = @_;
if ( defined $value )
{ $this->{_value2} = $value;
return 1;
}
return undef;
}
sub getValue2
{ my $this = shift;
return $this->{_value2};
}
1;
####
use Parent;
use strict;
use warnings;
my $parent = new Parent( 'value1', 'value2' );
my $child = $parent->getChild();
print "Values 1 and two from the child are:\n1....",
$child->getValue1(),"\n2....",
$child->getValue2(),"\n";
print "Values 1 and two from the child via the parent are:\n1....",
$parent->getChildValue1(),"\n2....",
$parent->getChildValue2(),"\n";