![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Базовые понятия ООПСтр 1 из 9Следующая ⇒
А. А. Волосевич
ООП НА ЯЗЫКЕ 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.
|