
- •Экзаменационный вопрос №1. Основные понятия объектно-ориентированного подхода
- •Экзаменационный вопрос №2. Объектно-ориентированная методология
- •Экзаменационный вопрос №3. Основные понятия объектно-ориентированного анализа
- •Экзаменационный вопрос № 4. Методы объектно-ориентированного анализа
- •Экзаменационный вопрос № 5. Пример объектно-ориентированного анализа
- •Экзаменационный вопрос № 6. Основные понятия объектно-ориентированного проектирования
- •Экзаменационный вопрос № 7. Основные понятия объектно-ориентированного программирования
- •Экзаменационный вопрос № 8. История объе́ктно-ориенти́рованного программи́рования
- •Экзаменационный вопрос № 9. Определение ооп и его основные концепции.
- •Экзаменационный вопрос № 10. Сложности определения ооп
- •Экзаменационный вопрос № 11. Особенности реализации ооп
- •Экзаменационный вопрос № 12. Подходы к проектированию объектно-ориентированных программ
- •Экзаменационный вопрос № 13. Компонентное объектно-ориентированное программирование
- •Экзаменационный вопрос № 14. Прототипное объектно-ориентированное программирование
- •Экзаменационный вопрос № 15. Производительность объектных программ
- •Экзаменационный вопрос № 16. Идентификация объектно-ориентированных языков
- •Экзаменационный вопрос № 17.
- •Экзаменационный вопрос № 18.
- •Экзаменационный вопрос № 19.
- •Экзаменационный вопрос № 20.
- •Экзаменационный вопрос № 21.
- •Экзаменационный вопрос № 22. Основные понятия языка ооп Delphi
- •Экзаменационный вопрос № 23. Основные понятия языка ооп Smalltalk
- •Экзаменационный вопрос № 24. Основные понятия языка ооп Java
- •Список зарезервированных слов Java:
- •Import java.Io.IoException; // подключения библиотеки ioException:
- •Int y,X,z,a,b,c,d;//объявление переменных
- •Экзаменационный вопрос № 25. Основные понятия языка ооп c#
- •Структура программы c#
- •Экзаменационный вопрос № 26 Основные понятия языка ооп Ruby
- •Основные элементы языка Ruby
- •Арифметические Операторы:
- •Структура программы на языке Ruby
- •Экзаменационный вопрос № 27 История создания Action Script
- •Основные элементы языка ActionScript
- •Структура программы на языке ActionScript
- •Экзаменационный вопрос № 28 Основные понятия языка ооп Perl
- •Основные элементы языка
- •Экзаменационный вопрос № 29. Основные понятия языка ооп php
- •Основные элементы языка рнр
- •Структура программы на языке рнр
- •Экзаменационный вопрос № 30. Основные понятия языка ооп Visual Basic
Структура программы на языке ActionScript
var a = 3; // Создается переменная а со значением 3
var b = 2; // Создается переменная b со значением 2
var с = 8;
var b = 9;
var x = (а + b); // Создается переменная x, равная сумме а и b
var y = (c + d);
var z = (x + y);
trace (z); // Значение с выводится на панель Output
Экзаменационный вопрос № 28 Основные понятия языка ооп Perl
Ларри Уолл начал разработку Perl в 1987 году, когда работал программистом в Unisys. Версия 1.0 была выпущена и анонсирована в новостной группе comp.sources.misc 18 декабря 1987 года как «„замена“ для awk и sed».
Perl 2 был выпущен в 1988 году. Основным нововведением в нём был переработанный механизм регулярных выражений. Perl 3, выпущенный в 1989 году, получил возможность обрабатывать потокидвоичных данных.
Изначально, единственной документацией для Perl была единственная (огромной длины) man-страница. В 1991 году была выпущена книга «Programming Perl» (известная многим программистам как «Верблюжья книга» (Camel Book) из-за изображения на обложке), которая, де-факто, стала стандартом языка. В то же самое время, версия языка была «поднята» до 4 — не столько, чтобы указать на значительные изменения, сколько, чтобы обозначить, что эта версия языка документирована книгой.
Perl 6 - с 2000 года. В отличие от предыдущих версий, разработчики планируют создать чётко определённый стандарт языка. В настоящее время существуют экспериментальные компиляторы Perl 6, но продолжается дальнейшая дискуссия о новых правилах. На русском языке информация о новой версии языка доступна на сайте perl6.ru.
Основные элементы языка
Комментарии начинаются с символа '#' и продолжаются до конца строки.
Типы данных. В Perl нет специальной формы определения типа данных как в Си. В языке Perl данные могут быть числом или строкой символов. И в зависимости от контекста они свободно конвертируются интерпретатором из одной формы в другую. Числа в Perl могут быть:
Десятичные 127 или 127.0 или 1.27Е2
Восьмеричные: 0177 (первый 0 указывает, что используется восьмеричное число)
Шестнадцатиричные: 0x7F или 0x7f (0x - признак шестнадцатиричного числа)
Строка может быть в двух формах - в двойных (") или одинарных (') ковычках. Ниже я объясню какая между ними разница.
Истиным Perl считает любое число не равное 0. Строковое значение рассматривается как истинное, если оно не пустое "" или не '0'.
В настоящее время Perl поддерживает следующие арифметические операторы:
+ сложение
- вычитание или изменение знака
умножение ? / деление (только для чисел с плавающей запятой)
% взятие по модулю (только для целочисленных значений)
Perl также поддерживает операторы инкремента и декремента:
++ декремент в префиксной или постфиксной форме
-- инкремент в префиксной или постфиксной форме
Все побитовые операторы С представлены в языкеPerl:
| побитовое ИЛИ
& побитовое И
^ побитовое исключающее ИЛИ
~ побитовая инверсия
<< сдвиг влево
>> сдвиг вправо
Операторы сравнения Операторы сравнения сравнивают величины двух операндов. Также как при работе с арифметическими операторами, Perl преобразует строчные операнды в численные перед тем, как выполнять сравнение. Для того чтобы позволить скрипту сравнивать строки, которые не являются числами, Perl имеет дополнительные операторы строкового сравнения. Эти операторы сравнивают строки, используявеличины ASCII. Если численное значение задано как операнд присравнении строк, оно сначала преобразуется в строку. Таблица перечисляет операторы сравнения:
Число |
Строка |
Значение |
== |
eq |
равно |
!= |
nе |
не равно |
> |
gt |
больше чем |
< |
it |
меньше чем |
>= |
gе |
больше или равно |
<= |
lе |
меньше или равно |
<=> |
cmp |
не равно (результат со знаком) |
Результатом операции сравнения является единица, если сравнение истинно и нуль в противном случае. Однако последняя операция (<=> или cmp) может возвращать значения -1, 0 или 1 в зависимости от того, является ли значение первого операнда меньше, чем второго, равным ему или большим. Примечание: Оператор cmp языка Perl ведет себя, аналогично функции Strcmp() библиотеки времени выполнения языка С.
Логические операторы языка Perl включают следующие:
|| логическое ИЛИ
&& логическое И
Perl всегда обрабатывает логические выражения слева направо. Кроме того. Perl всегда прекращает оценку, если уже выполненнойоценки достаточно, чтобы определить значение результата.
В дополнение к общим логическим операторам Perl поддерживает следующие дополнительные логические операторы:
! - логическое отрицание
?: - условная операция
, - последовательное выполнение
Строковые операторы
Поскольку Perl представляет собой язык для обработки текста, неудивительно, что в него включены дополнительные операторы для работы со строками. Ниже перечисляются операторы обработки строк:
. конкатенация строк
х репликация
=~ сопоставление переменной с образцом
!~ то же, что и предыдущее, но с дополненным отрицанием результата
Операторы присваивания Так же как и в С, эти операторы заставляют Perl выполнить специальные операции со значениями, которые появились с правой стороны оператора, и затем выполнить присваивание:
= |
+= |
-= |
*= |
/= |
%= |
|= |
&= |
^= |
~= |
<<= |
>>= |
**= |
.= |
x= |
|
Условные операторы
В языке Perl оператор if почти что идентичен оператору if в языке С. Отличие, однако, состоит в том, что в языке С оператор if может использовать простую инструкцию без фигурных скобок, тогда как в языке Perl инструкции обязательно должны быть заключены в фигурные скобки, образуя блок.
if (expr)
statement; // приемлемо для C но не для Perl
if (expr)
{statement; # вот так нужно делать в Perl}
Аналогичным образом инструкции языка Perl else работает немного отлично от соответствующей инструкции в С. В языке Perl инструкции также должны быть заключены в фигурные скобки и образовать блок:
// Пример в С неприемлемо в Perl
if (expr1)
statament1;
else if (expr2)
statement2;
else
Циклы и ветвления
Perl поддерживает операторы циклов for, while и do с небольшими отличиями от их реализации в языке С. Существенным отличием служит то, что Perl требует использования инструкций блоками, заключенными в фигурные скобки. Кроме того, как вы познакомитесь , далее, Perl расширяет конструкцию цикла, что6ы обеспечить ее некоторые новые формы. В следующих примерах циклы for, while и do работают аналогичным образом на языках С и Perl:
for($i = 0; $i< 100;$i++)
{printf("%d\n", $i) ;}
while ($i > 0)
{printf("%d\n", $i-);}
do {printf("%d\n", $i++);}
while ($i < 0);
Конструкция циклов на языке С отлична от конструкции на языке Perl еще и в том, что Perl не содержит оператора break, а оператор continue выполняет совершенно иную функцию. К счастью, Perl обеспечивает некоторые новые, более гибкие и более интуитивно понятные конструкции:
last - выход из цикла (как оператор С break)
next - начать новую итерацию (как оператор С continue)
redo - повторить текущую итерацию
Цикл UNTIL
Еще одной конструкцией цикла в языке Perl является цикл until, который является противоположностью циклу while. Как выпомните, в цикле while инструкции выполняются до тех пор, пока выполняется заданное условие. В цикле until, напротив, инструкции выполняются до тех пор, пока не будет выполнено условие.
Например, рассмотрим цикл while, такой, как показан на следующей странице.
while (!(expr))
{statement;}
Используя цикл until, можно создать идентичный цикл, показанный ниже:
until (expr)
{statement;}
Аналогичным образом следующая конструкция do while использует оператор логического отрицания для того, чтобы выполнять цикл, пока заданное булево выражение не станет истинным:
do {
statement;
} while (!(expr));
Используя конструкцию do until, вы можете сформировать идентичный цикл без использования логического отрицания:
do
{
statement;
} until (expr);
Набор ключевых слов языка Perl не велик и представлен ниже:
if,
elsif,
else,
unless,
while,
until,
foreach,
for,
next,
continue,
last,
do,
eval,
goto,
sub,
my,
return
Объектно-ориентированное программирование
Пакеты
Пакет — часть программы
Пакеты предназначены для разделения глобального пространства имен.
Пакет начинается с заголовка: package ИмяПакета;
По умолчанию всё выполняется в пакете main.
Доступ к именам, описанным в другом пакете: $ИмяПакета::ИмяПеременной
Модули
Модули представляют собой отдельные файлы, содержащие часть программы.
Принятое расширение для главного модуля — pl, для загружаемого - pm.
Подключаются с помощью директив use и require.
use Module; # Загружает модуль Module.pm use загружает модуль на этапе компиляции, а require на этапе исполнения.
Загрузка модуля из подкаталога
# загружает модуль Dir1/Dir2/Module.pm
use Dir1::Dir2::Module;
Объекты и классы
Класс — то же самое, что и пакет.
Объект — ссылка на любой встроенный тип данных, приведённая к классу с помощью функции bless.
Функция bless
Функция bless($h, $class) приводит ссылку $h к классу $class. Если второй аргумент отсутствует, то ссылка приводится к текущему
пакету.
Получить имя класса по ссылке можно при помощи функции ref.
bless($h, 'Class'); #приведёт ссылку $h к типу Class
$inst = bless($h, 'Class1');
bless($mass, ref($inst)); #приведёт $mass к Class1
Методы
Методы — это все функции пакета.
Конструктор и деструктор — обычные методы.Их может и не быть. Называться конструктор может как угодно, хотя принято его называть по имени класса или new. Деструктор должен называться DESTROY.
Конструктор
Метод, возвращающий ссылку на объект.
Типичный конструктор:
sub new{
my $class = shift;
#ссылка на класс
my $self = {};
#анонимный хэш
bless($self, $class);
#приводим к классу
return $self;
}
Наследование
Каждый класс (пакет) в perl имеет переменную @ISA, в которой перечислены некоторые пакеты. Эти пакеты — базовые классы для текущего класса. Добавить класс в @ISA можно строкой в начале класса-наследника: push @ISA, qw(ИмяКласса);
Связанные переменные
Очень интересной возможностью языка PERL является связывание переменных с объектами. Суть этого явления состоит в том, чтобы скрыть реализацию объекта за переменной. Мы можем читать и изменять значение связанной переменной обычным образом, но при этом неявно будут вызываться соответствующие методы объекта, которые могут быть сколь угодно сложными.
Для того, чтобы использовать связывание, мы должны оформить класс специальным образом. Это оформление зависит от типа связываемой переменной.
Конструктор должен называться TIESCALAR для связываемого скаляра.
Для чтения переменной определяем функцию FETCH. Передаётся один параметр — связанная переменная.
Для записи — функцию STORE. Параметры — связанная переменная и новое значение.