Концепция объектно-ориентированного подхода в Perl во многом основана на ссылках, анонимных массивах и хэшах. Давайте приступим к изучению основных концепций объектно-ориентированного языка Perl.
Основы работы с объектами
В Perl пакет — это автономная единица определяемых пользователем переменных и подпрограмм, которую можно повторно использовать снова и снова. Пакеты Perl предоставляют отдельное пространство имен внутри программы Perl, которое сохраняет подпрограммы и переменные независимыми от конфликтов с другими пакетами.
Чтобы объявить класс с именем Person в Perl, мы делаем:
package Person;
Давайте создадим наш конструктор для нашего класса Person, используя хэш-ссылку Perl. При создании объекта вам необходимо предоставить конструктор, который представляет собой подпрограмму внутри пакета, возвращающую ссылку на объект. Ссылка на объект создается путем благословения ссылки на класс пакета.
#!/usr/bin/perl
package Person;
sub new { my $class = shift; my $self = { _firstName => shift, _lastName => shift, _ssn => shift, }; # Print all the values just for clarification. print "First Name is $self->{_firstName}\n"; print "Last Name is $self->{_lastName}\n"; print "SSN is $self->{_ssn}\n"; bless $self, $class; return $self; } sub setFirstName { my ( $self, $firstName ) = @_; $self->{_firstName} = $firstName if defined($firstName); return $self->{_firstName}; }
sub getFirstName { my( $self ) = @_; return $self->{_firstName}; } 1;
Теперь давайте воспользуемся объектом Person
в файле scientific-employee.pl
следующим образом:
#!/usr/bin/perl
use Person;
$object = new Person( "Sci", "Pro", 23234345); # Get first name which is set using constructor. $firstName = $object->getFirstName();
print "Before Setting First Name is : $firstName\n";
# Now Set first name using helper function. $object->setFirstName( "Scientific" );
# Now get first name set by helper function. $firstName = $object->getFirstName(); print "Before Setting First Name is : $firstName\n";
Когда мы выполняем вышеуказанную программу, она дает следующий результат:
First Name is Scientific
Last Name is Pro
SSN is 23234345
Before Setting First Name is : Sci
Before Setting First Name is : Pro.
Запуск интерактивно!
Курс «Системы PERL и научное программирование» — это практическое обучение, которое даст вам глубокое понимание и практические знания Perl, необходимые для создания любого проекта.