Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
4 ООП Объекты и классы_Delphi.doc
Скачиваний:
54
Добавлен:
13.02.2015
Размер:
317.44 Кб
Скачать

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

1.Введение 2

2.Основные положения объектно-ориентированного программирования 2

3.Классы 3

3.1.Принципы ООП 5

3.2.Элементы классов 6

3.2.1.Поля 6

3.2.2.Области видимости 7

3.2.3.Методы 7

3.2.4.Свойства 13

3.3.Объекты 17

3.4.События. Взаимодействие объектов. 20

4.Парадигма объектно-ориентированного программирования 23

4.1.От структурированного программирования к ООП 23

4.2.Основные понятия и принципы ООП 24

  1. Введение

Язык Object Pascal является дальнейшим развитием языка Pascal. Наследуя все лучшее от языка Pascal, Object Pascal позволяет разработчикам использовать все самые современные технологии программирования, основанные на идеологии объектно-ориентированного программирования.

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

В этой лекции рассматриваются способы реализации основных механизмов ООП в Object Pascal и Delphi:

  • понятия объекта, класса и компонента;

  •  основные механизмы ООП: инкапсуляция, наследование и полиморфизм;

  •  особенности реализации объектов;

  •  взаимодействие свойств и методов.

  1. Основные положения объектно-ориентированного программирования

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

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

В традиционных методах программирования изменение данных или правил и методов их обработки часто приводило к необходимости значитель­ного изменения программы. Всякое существенное изменение программы - это большая "неприятность" для программиста, так как при этом увеличивается вероятность ошибок и возрастает время, необходимое для отладки про­граммы. Использование ООП позволяет выйти из такой ситуации с мини­мальными потерями, сведя необходимую модификацию программы к ее рас­ширению и дополнению.

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

По­этому естественным обобщением традиционного подхода к программированию является объединение данных, процедур и функций, предназначенных для их обработки, в одном месте, или, используя терминологию Delphi, в одном типе. Для такого типа использовали общепринятое понятие класс (class).

  1. Классы

Перед началом работы необходимо ввести основные понятия и определения.

Классом в Object Pascal называется структура языка, которая может иметь в своем составе переменные, функции и процедуры. Переменные в зависимости от предназначения именуются полями или свойствами (см. ниже). Процедуры и функции класса – методами.

Соответствующий классу тип будем называть объектным типом:

type

TMyObject = class(TObject)

MyField: Integer;

function MyMethod: Integer; 

end;

В этом примере описан класс TMyObject, содержащий поле MyField и метод MyMethod.

Поля объекта аналогичны полям записи (record). Это данные, уникальные для каждого созданного в программе экземпляра класса. Описанный здесь класс TMyObject имеет одно поле – MyField.

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

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

Классы могут быть описаны либо в секции интерфейса модуля, либо на верхнем уровне вложенности секции реализации. Не допускается описание классов "где попало", т. е. внутри процедур и других блоков кода.

Разрешено опережающее объявление классов, как в следующем примере:

type

TFirstObject = class; 

TSecondObject = class(TObject)

Fist : TFirstObject;

...

end;

TFirstObject = class(TObject)

...

end;

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

var

AMyObject: TMyObject;

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

Как создаются и уничтожаются объекты?

Те, кто раньше использовал ООП в работе на C++ и особенно в Turbo Pascal, будьте внимательны: в Object Pascal экземпляры объектов могут быть только динамическими. Это означает, что в приведенном выше фрагменте переменная AMyObject на самом деле является указателем, содержащим адрес объекта.

Базовым в объектно-ориентированном программировании является понятие класса. Класс имеет заранее заданные свойства. Состояние класса задается зна­чениями его полей. Класс знает, как решать определенные задачи, т.е. распо­лагает методами решения.

Но обычно сам класс не используется в программах. Образно говоря, класс является шаблоном, на основе которого создаются эк­земпляры класса, или объекты. Программа, написанная с использованием ООП, состоит из объектов, которые могут взаимодействовать между собой.

Например, как только вы создаете новое приложение типа Application в среде Delphi, в редакторе кодов автоматически появляется объявление класса TForm1, которое выглядит так.

type

TForm1 = class(TForm)

private

{ Private declarations }

public

{ Public declarations }

end;

Это можно рассматривать как заготовку для разработки класса.

Затем соз­дается объект (переменная или экземпляр класса) типа TForm1.

var

Form1: TForm1;

To есть, класс объявляется как обычный тип, а объект создается как лю­бая переменная.

Основными понятиями, связанными с классами, являются следующие.