# [[[ HEADER ]]]
use
RPerl;
package
MyClass03MediumRPerl;
use
strict;
use
warnings;
our
$VERSION
= 0.001_000;
# [[[ OO INHERITANCE ]]]
# [[[ CRITICS ]]]
## no critic qw(ProhibitUselessNoCritic ProhibitMagicNumbers RequireCheckedSyscalls) # USER DEFAULT 1: allow numeric values & print operator
## no critic qw(RequireInterpolationOfMetachars) # USER DEFAULT 2: allow single-quoted control characters & sigils
## no critic qw(ProhibitMultiplePackages ProhibitReusedNames ProhibitPackageVars) # USER DEFAULT 8: allow additional packages
# [[[ OO PROPERTIES ]]]
our
hashref
$properties
= {
bar
=>
my
integer
$TYPED_bar
= 23 };
# [[[ SUBROUTINES & OO METHODS ]]]
sub
double_bar_save {
{
my
void::method
$RETURN_TYPE
};
(
my
MyClass03MediumRPerl
$self
) =
@ARG
;
# single argument in, multiple argument English syntax
$self
->{bar} =
$self
->{bar} * 2;
}
sub
double_bar_return {
{
my
integer::method
$RETURN_TYPE
};
my
MyClass03MediumRPerl
$self
=
shift
@ARG
;
# single argument in, single argument English syntax
return
$self
->{bar} * 2;
}
1;
# end of class
# [[[ HEADER ]]]
use
RPerl;
package
MySubclass03MediumRPerl;
use
strict;
use
warnings;
our
$VERSION
= 0.001_000;
# [[[ OO INHERITANCE ]]]
use
MyClass03MediumRPerl;
# [[[ CRITICS ]]]
## no critic qw(ProhibitUselessNoCritic ProhibitMagicNumbers RequireCheckedSyscalls) # USER DEFAULT 1: allow numeric values & print operator
## no critic qw(RequireInterpolationOfMetachars) # USER DEFAULT 2: allow single-quoted control characters & sigils
## no critic qw(ProhibitMultiplePackages ProhibitReusedNames ProhibitPackageVars) # USER DEFAULT 8: allow additional packages
# [[[ OO PROPERTIES ]]]
our
hashref
$properties
= {
bax
=>
my
integer
$TYPED_bax
= 123 };
# NEED FIX: bax should be readonly, need to change into a constant???
# [[[ SUBROUTINES & OO METHODS ]]]
sub
triple_bax_save {
{
my
void::method
$RETURN_TYPE
};
my
MySubclass03MediumRPerl
$self
=
shift
@_
;
# single argument in, single argument punctuation syntax
$self
->{bax} =
$self
->{bax} * 3;
}
sub
triple_bax_return {
{
my
integer::method
$RETURN_TYPE
};
my
MySubclass03MediumRPerl
$self
=
shift
;
# single argument in, single argument hidden syntax
return
$self
->{bax} * 3;
}
sub
add_bax_return {
{
my
integer::method
$RETURN_TYPE
};
(
my
MySubclass03MediumRPerl
$self
,
my
integer
$addend
) =
@ARG
;
# multiple arguments in, multiple argument English syntax
if
(
$addend
< 10 ) {
return
$self
->{bax} +
$addend
;
}
return
$self
->{bax} + 3;
}
sub
subtract_bax_return {
{
my
integer::method
$RETURN_TYPE
};
(
my
MySubclass03MediumRPerl
$self
,
my
integer
$subtrahend
) =
@_
;
# multiple arguments in, multiple argument punctuation syntax
if
(
$subtrahend
< 10 ) {
return
$self
->{bax} -
$subtrahend
;
}
return
$self
->{bax} - 3;
}
sub
multiply_bax_return {
{
my
integer::method
$RETURN_TYPE
};
my
MySubclass03MediumRPerl
$self
=
shift
@ARG
;
# multiple arguments in, single argument English syntax
my
integer
$multiplier
=
shift
@_
;
# multiple arguments in, single argument punctuation syntax
if
(
$multiplier
< 10 ) {
return
$self
->{bax} *
$multiplier
;
}
return
$self
->{bax} * 3;
}
sub
multiply_multiply_bax_return {
{
my
integer::method
$RETURN_TYPE
};
my
MySubclass03MediumRPerl
$self
=
shift
@ARG
;
# multiple arguments in, single argument English syntax
my
integer
$multiplier
=
shift
@_
;
# multiple arguments in, single argument punctuation syntax
my
integer
$multiplier2
=
shift
;
# multiple arguments in, single argument hidden syntax
if
(
$multiplier
< 10 ) {
return
$self
->{bax} *
$multiplier
*
$multiplier2
;
}
return
$self
->{bax} * 3 *
$multiplier2
;
}
1;
# end of subclass