Чтение онлайн

на главную - закладки

Жанры

Язык программирования Perl

Шохирев Михаил Васильевич

Шрифт:

Или можно загрузить архив с модулем вручную, после чего запустить установку из локального каталога без подключения к Internet. Адрес сервера для загрузки готовых Perl-модулей в формате ppd можно узнать на сайте

Библиотеки, пакеты и модули, изученные в этой лекции, позволяют программисту рационально организовать собственные программы, когда они начинают разрастаться в объеме. А изученные приемы работы со стандартными библиотеками и дополнительными модулями помогут рационально воспользоваться компонентами, которые создали, отладили и протестировали другие

разработчики.

Лекция 14. Объектное программирование

Лекция посвящена разработке программ на Perl с использованием объектного подхода. Это общепринятая современная технология программирования, позволяющая бороться со сложностью создаваемых программ путем классификации объектов и моделирования их поведения.

Цель лекции: научиться писать программы на Perl с применением технологии объектного программирования. Освоить способы описания классов и приемы работы с объектами, включая свойства и методы классов.

Технология объектно-ориентированного программирования представляет из себя современный подход к созданию информационных систем, основанный на применении программных объектов, моделирующих состояние и поведение реальных сущностей. Не углубляясь в теорию, можно дать такие неформальные определения основным терминам, применяемым в объектно-ориентированном программировании:

[x]. Класс (class) - это именованное описание для однотипных сущностей их неотъемлемых характеристик (атрибутов) и их поведения (методов). Примеры классов: "Личность", "Хоббит", "Маг".

[x]. Объект (object) - это сущность, относящаяся к определенному классу, хранящая набор конкретных значений данных и предоставляющая для их обработки методы, предусмотренные классом. Примеры объектов: "хоббит по имени Фродо Бэггинс", "маг по имени Гэндальф". Синоним термина "объект": экземпляр (instance) класса.

[x]. Атрибут (attribute) - описание характеристики объекта, значение которой будет храниться в объекте. Примеры атрибутов: "имя", "рост". Набор конкретных значений атрибутов является текущим состоянием (state) объекта. Пример значения атрибута: "имя - Гэндальф". Синонимы термина "атрибут": свойство (property), переменная объекта (object variable), переменная экземпляра (instance variable), данные-элементы (member data).

[x]. Метод (method) - это действие объекта, изменяющее его состояние или реализующее другое его поведение. Пример методов: "назвать свое имя", "стать невидимым". Синонимы термина "метод": операция (operation), функция-элемент (member function).

[x]. Инкапсуляция (encapsulation) - это (1) объединение в объекте набора данных и методов работы с ними; (2) принцип ограничения доступа к данным объекта, когда работать с ними можно только через его методы (скрытие данных).

[x]. Наследование (inheritance) - это создание нового класса на основе существующего с целью добавить к нему новые атрибуты или изменить его поведение. Пример наследования: на основании класса "Личность" создаются его подклассы "Хоббит", "Маг", "Эльф" и "Человек", каждый из которых обладает свойствами и поведением "Личности", но добавляет собственные свойства и меняет поведение.

[x]. Полиморфизм (polymorphism) - это различное поведение объектов, принадлежащих к различным

классам, при обращении к одинаково названному методу. Пример полиморфизма: в ответ на призыв "К оружию!" гном схватит боевой топор, эльф приготовит лук и стрелы, а хоббит спрячется за дерево.

Но программистам, пишущим на Perl, можно не запоминать эти труднопроизносимые термины. Объектный подход к программированию реализуется в Perl изящно и легко - при помощи уже известных нам понятий и конструкций.

В нынешней версии Perl нет специальных синтаксических конструкций для выражения идей объектно-ориентированной технологии. Поэтому Perl нельзя назвать объектно-ориентированным языком, но он поддерживает объектный подход при разработке программ. Для создания программ с использованием объектов применяются имеющиеся в языке средства, которые сводятся к нескольким простым соглашениям:

[x]. Класс - это пакет, в котором описаны методы, реализующие поведение создаваемых объектов.

[x]. Объект - это переменная (или замыкание), на которую указывает ссылка, связанная с именем пакета.

[x]. Метод - это подпрограмма из пакета, доступ к которой происходит по ссылке на объект, которую он получает в качестве первого аргумента.

[x]. Атрибуты объекта хранятся в динамически создаваемых переменных, чаще всего - в анонимных хэшах.

[x]. Наследование - это поиск методов, не найденных в текущем пакете, в пакетах, перечисленных в специальном массиве @ISA.

Теперь рассмотрим примеры описания классов средствами языка Perl и приемы работы с объектами.

Класс описывается в виде одноименного пакета, в котором размещаются определения методов, реализующих поведение объектов этого класса. Описания одного или нескольких классов сохраняются в виде модуля. Как минимум один из методов класса отвечает за создание объектов класса. Такой метод называется конструктором (constructor) и обычно носит имя new (или его имя совпадает с именем класса). Для хранения атрибутов объекта очень часто применяется анонимный хэш, ключи которого задают имена атрибутов. Первым аргументом конструктор получает имя класса, которое он использует для преобразования ссылки на анонимный хэш в ссылку на объект указанного класса. Это "магическое" превращение выполняется с помощью встроенной функции bless ("благословить"), благодаря которой каждый созданный объект помечается принадлежащим к определенному классу. После этого при обращении к методам объекта они отыскиваются в пакете с таким же именем. Вот как происходит превращение объекта "ссылка" в объект определенного класса:

my $class = 'Hobbit'; # имя класса в виде строки

my $object = { }; # ссылка на анонимный хэш,

# где будут храниться данные объекта,

bless($object, $class); # "благословляется" указывать

# на объект класса $class

Для примера опишем класс "Личность" (Person), сохранив его в файле Person.pm. Начало описания класса будет выглядеть так:

package Person; # класс - это пакет

Поделиться:
Популярные книги

Газлайтер. Том 40

Володин Григорий Григорьевич
40. История Телепата
Фантастика:
альтернативная история
аниме
попаданцы
6.00
рейтинг книги
Газлайтер. Том 40

Миры Филипа Фармера. Том 4. Больше чем огонь. Мир одного дня

Фармер Филип Хосе
Фантастика:
научная фантастика
5.00
рейтинг книги
Миры Филипа Фармера. Том 4. Больше чем огонь. Мир одного дня

Диета долгожителя. Питаемся правильно. Специальные меню на каждый день. Советы и секреты для долгой и здоровой жизни

Шевченко Виталий Пименович
Дом и Семья:
здоровье и красота
кулинария
5.00
рейтинг книги
Диета долгожителя. Питаемся правильно. Специальные меню на каждый день. Советы и секреты для долгой и здоровой жизни

Продолжение «Тысячи и одной ночи»

Казот Жак
1. Литературные памятники
Старинная литература:
прочая старинная литература
5.00
рейтинг книги
Продолжение «Тысячи и одной ночи»

Воронцов. Перезагрузка

Тарасов Ник
1. Воронцов. Перезагрузка
Фантастика:
попаданцы
альтернативная история
фантастика: прочее
5.50
рейтинг книги
Воронцов. Перезагрузка

Охотник за головами

Вайс Александр
1. Фронтир
Фантастика:
боевая фантастика
космическая фантастика
5.00
рейтинг книги
Охотник за головами

Месть

Камински Стюарт Мелвин
Детективы:
классические детективы
5.00
рейтинг книги
Месть

Замена Элит. Новые Люди Креативного Государства Прфессиональный Парламент. Книга 2

Мамыченко Андрей Валентинович
Научно-образовательная:
политика
5.00
рейтинг книги
Замена Элит. Новые Люди Креативного Государства Прфессиональный Парламент. Книга 2

#Бояръ-Аниме. Газлайтер. Том 11

Володин Григорий Григорьевич
11. История Телепата
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
#Бояръ-Аниме. Газлайтер. Том 11

Семья попаданцев. Дилогия

Борискин Александр Алексеевич
Фантастика:
фэнтези
альтернативная история
6.61
рейтинг книги
Семья попаданцев. Дилогия

Перерождённые

Крапицкая Влада
Любовные романы:
любовно-фантастические романы
6.25
рейтинг книги
Перерождённые

Дисциплина и Портянки

Yirtimd2
1. Академия Бикон
Фантастика:
боевая фантастика
юмористическое фэнтези
сказочная фантастика
фэнтези
5.00
рейтинг книги
Дисциплина и Портянки

Предел Искушения

Цветков Цветков Владимирович
Фантастика:
научная фантастика
5.00
рейтинг книги
Предел Искушения

Том 11. Былое и думы. Часть 6-8

Герцен Александр Иванович
11. Собрание сочинений в тридцати томах
Проза:
русская классическая проза
5.00
рейтинг книги
Том 11. Былое и думы. Часть 6-8