Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






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






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

 

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

 

Курс лекций

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

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

 

Минск 2012


 

Содержание

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

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

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

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

5. Свойства. 13

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

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

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

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

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

Литература. 32


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

При разработке программ возможно использование нескольких подходов. Императивное[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 и fAge[2]. После описания всех полей следует указание методов класса. Методы 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.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.