Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП на языке Object Pascal.docx
Скачиваний:
21
Добавлен:
11.05.2015
Размер:
79.62 Кб
Скачать

Министерство образования Республики Беларусь

Учреждение образования

«Белорусский государственный университет

информатики и радиоэлектроники»

Кафедра информатики

А. А. Волосевич

ООП НА ЯЗЫКЕ OBJECT PASCAL

Курс лекций

для студентов специальности

1-40 01 03 Информатика и технологии программирования

Минск 2012

Содержание

1. Базовые понятия ООП 3

2. Создание и уничтожение объектов 5

3. Параметр self 9

4. Ограничение видимости элементов класса 11

5. Свойства 13

6. Отношения между классами 18

7. Перекрытие методов 20

8. Полиморфизм 22

9. RTTI и размещение объектов в памяти 27

10. Обработчики событий и указатели на методы 28

Литература 33

1. Базовые понятия ооп

При разработке программ возможно использование нескольких подходов. Императивное1программирование подразумевает разработку программы методом последовательного уточнения и детализации. Исходная задача разбивается на несколько связанных подзадач, затем каждая подзадача делится на более мелкие подзадачи. Этот процесс продолжается вплоть до элементарных команд («присвой значение переменной», «выполни функцию» – отсюда и название стиля программирования). Однако усложнение программных продуктов потребовало новой методики написания программ. Выход был найден, когда в программировании применили принципы реального мира. В повседневной жизни мы сталкиваемся с множеством объектов («автомобиль», «дом», «улица»), наблюдаем их взаимодействие, и сами взаимодействуем с ними.Объектно-ориентированное программирование(ООП) предполагает представление программы как процесса взаимодействия некоторых вполне самостоятельных единиц, по аналогии с реальным миром называемыхобъектами. Работа программиста в этом случае заключается в наиболее полном описании набора объектов задачи и кодировании их связей. Подобный стиль программирования позволяет существенно сократить время разработки сложных программ и программных комплексов. Упрощается также сопровождение и отладка программ. ООП оказалось настолько продуктивной идеей, что большинство современных языков программирования являются либо чисто объектно-ориентированными (Java, C#, Visual Basic.NET), либо содержат средства ООП в качестве надстройки (C++, Object Pascal).

ООП основывается на трёх принципах: инкапсуляция,наследование,полиморфизм. Рассмотрим первый из них. Инкапсуляция – это логическое объединение в одном программном типе, называемомкласс, как данных, так и подпрограмм для их обработки. Данные класса хранятся вполях класса, подпрограммы для работы с полями называютсяметодами класса.

Разберём синтаксис определения класса в Object Pascal. В качестве примера рассмотрим класс для представления информации о человеке:

type TPerson = class

fName: string;

fAge: Integer;

procedure SetAge(Age: Integer);

function SayName: string;

end;

Определение класса размещается в секции описания типов. Это может быть глобальная секция типов программы, секция типов в интерфейсной части модуля или в разделе реализации, но не секция типов в подпрограмме. Для определения класса используется ключевое слово class. Вначале описываются поля класса. Полями классаTPersonявляютсяfNameиfAge2. После описания всех полей следует указание методов класса. МетодыTPerson– это процедураSetAgeи функцияSayName. Класс содержит только заголовки методов, реализация методов описывается отдельно. Если класс описан в модуле, реализация методов должна находиться в том же модуле в секцииimplementation. Чтобы показать, что подпрограмма является реализацией метода класса, используется синтаксисимя-класса.имя-метода. В теле методов обращение к полям класса происходит без указания каких-либо дополнительных спецификаторов:

procedure TPerson.SetAge(Age: Integer);

begin

if Age > 0 then fAge := Age

end;

function TPerson.SayName: string;

begin

Result := 'My name is ' + fName

end;

После того как класс описан, можно объявить переменную класса, называемую экземпляром классаилиобъектом:

var Man: TPerson;

В реальной жизни классу соответствует абстрактное понятие, которое конкретизируется в своих проявлениях. Так, класс TPersonкак бы пытается описать человека вообще, его параметры и действия, производимые им и над ним. ОбъектMan– это уже конкретный человек, и конкретизировать его можно через значения полей.

В Object Pascal для работы с полями и методами объекта используется синтаксис имя-объекта.имя-поля-или-метода. Это напоминает работу с переменной типа запись:

Man.fName := 'John Dow';

Man.SetAge(35);

writeln(Man.SayName, Man.fAge);

Приведём полный пример консольного приложения, содержащего определение класса и демонстрирующего работу с объектами:

program FirstOOPProgramm;

{$APPTYPE CONSOLE}

type TPerson = class

fName: string;

fAge: Integer;

procedure SetAge(Age: Integer);

function SayName: string;

end;

procedure TPerson.SetAge(Age: Integer);

begin

if Age > 0 then fAge := Age

end;

function TPerson.SayName: string;

begin

Result := 'My name is ' + fName

end;

var Man: TPerson;

begin

Man := TPerson.Create; // созданиеобъекта

Man.fName := 'John Dow';

Man.SetAge(36);

writeln(Man.SayName, Man.fAge);

end.