Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Язык программирования Pascal - redact Мигунов.doc
Скачиваний:
11
Добавлен:
20.09.2019
Размер:
434.69 Кб
Скачать

Объектно-ориентированное программирование (ооп)

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

ООП имеет 3 основных свойства:

  1. инкапсуляция;

  2. наследование;

  3. полиморфизм.

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

Наследование – это процесс, по средствам которого один объект может наследовать свойства другого объекта и добавлять к ним черты (характеристики) свойственные только для этого объекта. Смысл наследования заключается в том, что не нужно каждый раз «с нуля» описывать новый объект, а можно указать «родителя» (базовый класс) и описать только отличительные особенности нового класса. В результате новый объект будет обладать всеми свойствами родительского класса плюс собственными отличительными особенностями. В итоге можно создать иерархию (древовидную структуру) объектных типов, где поля данных и методы «предков» автоматически являются полями данных и методами «потомков».

Полиморфизм – это свойство позволяет одно и тоже имя использовать для решения нескольких технически разных задач. Полиморфизм подразумевает такое определение методов, при котором метод (процедура) с одним и тем же именем может применятся к различным родственным объектам. Полиморфизм – это «одно имя – множество методов». Выбор конкретной процедуры (метода) в зависимости от ситуации возлагается на компилятор. Механизм полиморфизма заключается в следующем: при вызове метода класса сначала этот метод ищется в самом классе, если метод найден то он выполняется и поиск завершается, если метод не найден, то происходит обращение к родительскому классу и ищется вызванный метод в нем. Если метод снова не найден, то продолжается поиск вверх по иерархическому дереву вплоть до корня.

Работа с массивами

Массивы в целом участвуют только в операциях присваивания. При этом все элементы одного массива копируются в другой. Например, если объявлены два массива A и B,

var

A, B: array[1..10] of Integer;

то допустим следующий оператор:

A := B;

Оба массива-операнда в левой и правой части оператора присваивания должны быть не просто идентичны по структуре, а описаны с одним и тем же типом, иначе компилятор сообщит об ошибке. Именно поэтому все массивы рекомендуется описывать в секции type.

С элементами массива можно работать, как с обычными переменными. В следующей программе элементы численного массива последовательно вводятся с клавиатуры, а затем суммируются. Результат выводится на экран.

program Console;

{$APPTYPE CONSOLE}

uses

SysUtils;

var

A: array[1..5] of Double;

Sum: Double;

I: Integer;

begin

for I := 1 to 5 do Readln(A[I]);

Sum := 0;

for I := 1 to 5 do Sum := Sum + A[I];

Writeln(Sum);

Writeln('Press Enter to exit...');

Readln;

end.

Для массивов определены две встроенные функции — Low и High. Они получают в качестве своего аргумента имя массива. Функция Low возвращает нижнюю, а High — верхнюю границу этого массива. Например, Low(A) вернет значение 1, а High(A) — 5. Функции Low и High чаще всего используются для указания начального и конечного значений в операторе цикла for. Поэтому вычисление суммы элементов массива A лучше переписать так:

for I := Low(A) to High(A) do Sum := Sum + A[I];

В операциях с многомерными массивами циклы for вкладываются друг в друга. Например, для инициализации элементов таблицы, объявленной как

var

Table: array[1..5, 1..20] of Double;

требуются два вложенных цикла for и две целые переменные Col и Row для параметров этих циклов:

for Col := 1 to 5 do

for Row := 1 to 20 do

Table[Col, Row] := 0;