Задачи курса: 1) Приобретение навыков работы в среде системы визуального программирования Delphi (версия не ниже 0). Создание простейших Приложений

Вид материалаДокументы

Содержание


Задачи курса
Требования к выполнению и оформлению контрольной работы.
Alt + Print Screen
Текст модуля
Лабораторная работа 2 67
Рабочая программа курса
FOR имеет следующую структуру: FOR
WHILE имеет следующий вид: WHILE
REPEAT имеет следующий вид: REPEAT
Модульное программирование.
Нисходящее программирование.
Пошаговое программирование.
Структурное программирование. П
Объект – структурированная переменная, содержащая всю информацию о некотором физическом предмете или реализуемом в программе пон
Знакомство со средой программирования Delphi
Главное окно
Главное меню
Палитра компонентов
Дизайнер Форм
Палитра компонентов
...
Полное содержание
Подобный материал:
  1   2   3   4   5   6   7



Сибирский государственный университет

телекоммуникаций и информатики


Программирование на языке высокого уровня

в телекоммуникациях ”

Преподаватель: доцент кафедры прикладной математики и кибернетики


Ситняковская Елена Игоревна.


E-mail: sitlen@mail.ru


Сведения о кафедре:

Кафедра – к.430а

Лаборатории - к. 425, 430, 432, 409

Секретарь кафедры – Киселькова Татьяна Александровна – к. 423

Телефон – 269-82-72

Цель курса – ознакомление с общими принципами визуального программирования на примере системы Delphi.



Задачи курса:


1) Приобретение навыков работы в среде системы визуального программирования Delphi (версия не ниже 4.0).
  1. Создание простейших Приложений.


Рекомендуемая литература:

  • любая книга (не справочник) по Delphi версии не ниже 4.0, в которой понятно и наглядно даны описания работы в среде и создания первого Приложения, а также в которой есть описания компонентов, упоминаемых в заданиях для контрольной работы (рекомендуемый автор - Фаронов В.В.);
  • лекционный материал.


Требования к выполнению и оформлению контрольной работы.


Требуется:
  1. выполнить задание для контрольной работы согласно своему варианту (номер варианта определяется по двум последних цифр номера зачетной книжки), используя систему Delphi версии не ниже 4.0 (предпочтительнее версии 6.0 или 7.0);
  2. составить и отправить отчет, содержащий следующее:
  • текст задания;
  • распечатку формы;
  • распечатку модуля.

(Диски присылать не надо)

В случае отсутствия возможности сделать распечатки, в отчет следует аккуратно перерисовать форму и переписать текст модуля (небрежно выполненные работы будут возвращены).

Примечание: Чтобы перенести вид формы в текстовый документ необходимо выполнить следующие действия:

- открыть текстовый документ, открыть Приложение;

- сделать форму активной (для этого надо щелкнуть на ней мышкой);

- выполнить команду Alt + Print Screen;

- перейти в текстовый документ, установить курсор в нужное место и выполнить команду Ctrl + V.


Пример оформления контрольной работы.

Вариант 12


Задание1. Создать Приложение, содержащее две кнопки Color и Close и работающее следующим образом: кнопка Color изменяет цвет формы на желтый, кнопка Close закрывает Приложение.


Вид формы (скриншот ):






Текст модуля:


unit Unit1;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls;

type

TForm1 = class(TForm)

Button1: TButton;

Button2: TButton;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;


implementation


{$R *.DFM}


procedure TForm1.Button1Click(Sender: TObject);

begin

if Color<>clYellow then Color:=clYellow

else Color:=clBtnFace; ;

end;


procedure TForm1.Button2Click(Sender: TObject);

begin

Close;

end;


end.


Требования к получению зачета .

  1. Защита контрольной работы.
  2. Выполнение одной из 5-ти (по заданию преподавателя) лабораторной работы.
  3. Защита лабораторной работы.


Таким образом, к зачету необходимо:

- получить общие навыки работы в среде Delphi, необходимые для создания (и сохранения!) простейших Приложений;

- уметь создавать простейшие Приложения;

- знать основные свойства, методы и события всех компонентов, упоминаемых в заданиях для контрольной работы (в т.ч. основные свойства, методы и события формы).

ОГЛАВЛЕНИЕ


Рабочая программа курса 7

1.Основные конструкции языка Паскаль 8

1.1Структура программы 8

1.2Операторы языка Паскаль 8

1.3Процедуры и функции 9

2.Объектно-ориентированная методология 11

2.1Различные технологии программирования 11

2.2Принципы объектно-ориентированного программирования 14

2.3Модули и классы 17

3.Знакомство со средой программирования Delphi 18

3.1Структура среды программирования 18

3.2Проект Delphi 21

3.3Главное меню среды 22

3.4Первое приложение на Delphi 23

3.5Контрольные вопросы 25

4.Библиотека визуальных компонентов (VCL) 26

4.1Иерархия базовых классов VCL 26

4.2Типы свойств компонентов. Изменение свойств 26

4.3Некоторые общие свойства компонентов 28

4.4События в Delphi 30

4.5Некоторые общие события компонентов 31

4.6Контрольные вопросы 33

5.Класс TForm 33

5.1Роль формы в приложении 33

5.2Свойства класса TForm 35

5.3События формы 37

5.4Пример использования событий формы 38

5.5Контрольные вопросы 39

6.Графические возможности визуальных компонентов 39

6.1Свойства класса TCanvas 39

6.2Методы класса TCanvas 41

6.3Примеры использования свойств и методов класса TCanvas 42

7.Использование визуальных компонентов 44

7.1Метки 44

7.2Кнопки 45

7.3Редактируемые компоненты 47

7.4Списки выбора 49

7.5Меню 52

7.6Диалоговые компоненты 54

7.7Таблица строк 57

7.8Переключатели 60

7.9Контрольные вопросы 64

Лабораторная работа 1 65

ЛАБОРАТОРНАЯ РАБОТА 2 67

ЛАБОРАТОРНАЯ РАБОТА 3 69

ЛАБОРАТОРНАЯ РАБОТА 4 71

ЛАБОРАТОРНАЯ РАБОТА 5 73

Контрольная работа 75

Правила получения зачета 82

Литература 82

Таблица 1 Свойства класса TComponent 28

Таблица 2 Размер и местоположение компонента 29

Таблица 3 Выравнивание и масштабирование 29

Таблица 4 Внешний вид 29

Таблица 5Свойства TForm 35

Таблица 6 Cобытия TForm при создании и отображении формы 37

Таблица 7 Cобытия TForm при закрытии и уничтожении формы 37

Таблица 8 Класс TFont 39

Таблица 9 Класс ТРеn 40

Таблица 10 Класс TBrush 40

Таблица 11 Методы TCanvas 41

Таблица 12 свойства TLabel и TStaticText 44

Таблица 13 специфические свойства TButton 45

Таблица 14 Специфичные свойства TBitBtn 46

Таблица 15 Свойства редактируемых компонентов 47

Таблица 16 Свойства однострочного редактора 48

Таблица 17 Методы однострочного редактора 48

Таблица 18 Свойства компонента TListBox 49

Таблица 19 Свойства и события TComboBox, связанные с раскрытием списка 51

Таблица 20Свойства компонента TMainMenu 52

Таблица 21 Свойства TMenuItem 53

Таблица 22 Свойства TSaveDialog и TOpenDialog 55

Таблица 23 Значения свойства Options 56

Таблица 24Свойства компонента TStringGrid 58

Таблица 25Свойства компонента TCheckBox. 60

Таблица 26Свойства компонента TRadioButton 61

Таблица 27Свойства компонента TRadioButton 61

Таблица 28Свойства компонента TСheckListBox 62




Рисунок 1 Главное окно Delphi 19

Рисунок 2 23

Рисунок 3 Работа приложения 25

Рисунок 4 26

Рисунок 5 31

Рисунок 6 Заполнение формы разноцветными точками 42

Рисунок 7 Рисование отрезка 42

Рисунок 8 Рисование прямоугольника 43

Рисунок 9 Рисование окружности 43




    Рабочая программа курса

В результате изучения курса студент должен

знать основные понятия и принципы объектно-ориентированного программирования, основные конструкции языка программирования Object Pascal, необходимые сведения об операционной системе Windows;

уметь разрабатывать интерфейс приложения Windows с использованием визуальных компонентов, создавать обработчики событий для приложения на языке Object Pascal;

иметь навыки работы в операционной системе Windows и с интегрированной средой разработки Delphi.


Содержание дисциплины


1. Необходимые сведения о языке программирования Паскаль

1.1 Типы, переменные, константы. 1.2 Условный оператор. 1.3 Циклы. 1.4. Процедуры и функции. 1.5.Понятие объекта и класса. 1.6 Принципы объектно-ориентированного программирования.


2. Среда программирования Delphi

2.1 Общая характеристика Delphi. 2.2 Составные части среды: главное меню, дизайнер форм, инспектор объектов, палитра компонентов, редактор кода. 2.3 Проект в Delphi 2.4 Команды для управления проектом.


3. Визуальные компоненты Delphi

3.1 Иерархия визуальных компонентов. 3.2 Общие свойства компонентов 3.3 Общие события компонентов.3.4 Методы-обработчики событий.


4. Графические возможности компонентов

4.1 Класс TCanvas. 4.2 Кисть. 4.3 Перо 4.4 Шрифт 4.5 Методы класса TCanvas


5.5 Класс TForm

5.1 Роль формы в приложении 5.2 Виды форм. 5.3 Свойства и события формы.


6. Стандартные компоненты

6.1 Метки. 6.2 Кнопки. 6.3 Меню. 6.4 Редактируемые компоненты 6.5 Диалоговые компоненты 6.6 Списки 6.7 Переключатели
  1. Основные конструкции языка Паскаль
    1. Структура программы

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


program Myprogram;

//заголовок программы

uses Unit1;

//раздел подключения модулей

label metka;

//раздел описания меток

const A=12; C=’A’;

//раздел описания констант

type Mytype=integer;

//раздел описания типов

procedure Myproc;

function Myfunc;

//раздел описания подпрограмм

var x:integer;

//раздел описания переменных

begin

// исполняемая часть программы







end.






    1. Операторы языка Паскаль

Рассмотрим некоторые операторы языка Паскаль, без которых не обходится ни одна программа:
  • Оператор присваивания
  • Составной оператор
  • Условный оператор
  • Оператор цикла.

Оператор присваивания (обозначается :=) вызывает выполнение выражения, стоящего справа от него, и присваивание вычисленного значения переменной, стоящей слева от него. Например, в результате выполнения оператора x:=5+6*7 переменной х будет присвоено значение 47.

Составной оператор используется, когда необходимо выполнить несколько операторов, а синтаксисом языка допускается только один. Организуется составной оператор с помощью операторных скобок, т.е. служебных слов begin (начало составного оператора) и end (конец составного оператора).

Условный оператор позволяет выполнить некоторое действие в зависимости от истинности условия. Условный оператор может иметь две формы:

IF <условие> THEN <оператор1>;

IF <условие> THEN <оператор1> ELSE <оператор2>;

В первом случае если значение условия равно TRUE, то выполняется оператор1, иначе этот оператор пропускается. Во втором случае если значение условия равно TRUE, то выполняется оператор1, иначе выполняется оператор2.

Пример.

IF (aTHEN Max:=b;

IF (aTHEN Max:=b ELSE Max:=a;

Условные операторы могут быть вложенными друг в друга, в этом случае ELSE связывается с ближайшим к нему IF.

В языке Паскаль имеется три типа операторов, с помощью которых можно запрограммировать фрагменты программ, выполняющиеся более одного раза: оператор цикла с параметром, оператор цикла с предусловием, оператор цикла с постусловием.

Оператор цикла с параметром FOR имеет следующую структуру:

FOR <параметр>:= <нач. значение> TO <конеч. знач.> DO

<оператор>;

Данный оператор цикла используется, когда число повторений заранее известно. Параметр цикла автоматически изменяется с шагом 1 (если вместо слова TO подставить слово DOWNTO, то с шагом -1). Параметр цикла должен быть перечислимого типа (обычно целого или символьного), тот же тип должны иметь начальные и конечные значения параметра цикла. В теле цикла запрещается явное изменение параметра. Начальное и конечное значения параметра цикла могут задаваться выражениями, которые вычисляются один раз, до начала выполнения цикла.

Оператор цикла с предусловием WHILE имеет следующий вид:

WHILE <условие> DO <оператор>;

В качестве условия используется некоторое логическое выражение, определяющее момент окончания циклических вычислений (цикл повторяется, пока условие истинно).Если условие ложно сразу, то цикл не выполнится ни разу. Количество повторений операторов в теле цикла заранее может быть неизвестно. В теле цикла, как правило, должны изменяться пара метры, входящие в условие, для того, чтобы в конце концов условие стало ложным и цикл завершился.

Оператор цикла с постусловием REPEAT имеет следующий вид:

REPEAT <оператор> UNTIL <условие> ;

Данный цикл повторяется до тех пор, пока условие не станет истинным. Т.к. условие продолжения проверяется в конце цикла, операторы обязательно выполняются хотя бы один раз.
    1. Процедуры и функции

Процедуры и функции (подпрограммы) – это относительно самостоятельные фрагменты программы, оформленные специальным образом и снабженные именем. Процедуры и функции улучшают наглядность и читаемость программ.

Процедура описывается следующим образом:


Procedure <имя> (список параметров);

раздел описаний;

begin

исполняемая часть;

end;

Функция отличается от процедуры тем, чтобы результат работы функции возвращается через ее имя, и вызов функции может быть использован в выражениях вместе с другими операторами. Функция описывается следующим образом:

Function <имя> (список параметров): <тип>;

раздел описаний;

begin

исполняемая часть;

end;

Использование имени подпрограммы в тексте программы приводит к активизации подпрограммы и называется ее вызовом. Сразу после активизации подпрограммы начинают исполняться входящие в нее операторы, и после выполнения последнего из них управление возвращается в основную программу, которая продолжает выполняться с оператора, стоящего непосредственно за оператором вызова процедуры или функции. Подпрограммы могут вызываться неоднократно.

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

По способу описания параметры можно разделить на параметры-переменные и параметры-значения. Подпрограмма, как реализация некоторого алгоритма, должна иметь входные данные и результат преобразования входных данных. Входные данные передаются из основной программы в подпрограмму как параметры - значения, которые могут быть константами, переменными или выражениями. Результат, который возвращает подпрограмма, передается с помощью параметров - переменных. Эти параметры описываются со словом VAR. Фактический параметр для параметра-переменной должен быть обязательно переменной того же типа, что и соответствующий формальный параметр.

Пример. Составим подпрограммы вычисления суммы первых целых N чисел в виде процедуры и в виде функции.

Procedure Summa (N: integer; var S: integer);

var I:integer;

begin

S:=0;

FOR i:=1 TO N DO

S:=S+I;

end;


Function Sum (N: integer): integer;

var i:integer;

begin

Sum:=0; i:=1;

WHILE (i<=N) DO

BEGIN

Sum:=Sum+i;

i:=i+1;

end;

end;

В основной программе можно вызвать эти подпрограммы

var S, S1, N:integer;

begin

N:=10;

Summa(N,S); //в S заносится сумма первых 10 чисел;

S1:=Sum(N+1); // в S1 заносится сумма первых 11 чисел;

end.

  1. Объектно-ориентированная методология
    1. Различные технологии программирования

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

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

Рассмотрим наиболее известные из технологий:
  • метод "северо-западного" угла (имеется в виду лист бумаги или экран дисплея). Программа пишется сразу от начала до конца, без использования каких-либо общих принципов;
  • технология структурного программирования, в ней предполагается придерживаться принципов модульности, нисходящего и пошагового проектирования программ, одновременного проектирования программ и структур данных.
  • технология объектного программирования: связана с использованием при проектировании программы понятий объектов и их классов.

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

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

Модульное программирование. Принцип модульности формулируется как требование разработки программы в виде совокупности модулей (функций). При этом разделение на модули должно носить не механический характер, а исходить из логики программы:
  • размер модуля должен быть ограничен;
  • модуль должен выполнять логически целостное и завершенное действие;
  • модуль должен быть универсальным, то есть по возможности параметризованным: все изменяемые характеристики выполняемого действия должны передаваться через параметры;
  • входные параметры и результат модуля желательно передавать не через глобальные переменные, а через формальные параметры и результат функции.

Еще одной, но уже физической единицей программы является текстовый файл, содержащий некоторое количество функций и определений типов данных и переменных. Модульное программирование на уровне файлов - это возможность разделить полный текст программы на несколько файлов, транслировать их независимо друг от друга.

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

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

Нисходящее программирование. Нисходящее проектирование программы заключается в том, что разработка идет от общей неформальной формулировки некоторого действия программы на естественном языке, "от общего к частному": к замене ее одной из трех формальных конструкций языка программирования:
  • простой последовательности действий;
  • конструкции выбора или оператора if;
  • конструкции повторения или цикла.

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

В результате проектирования получается программа, в которой принципиально отсутствует оператор перехода goto, поэтому такая технология называется "программирование без goto".

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

То, что этот принцип выделен отдельно, говорит о необходимости предотвратить соблазн детализации программы сразу от начала до конца и развивать умение выделять и сосредоточивать внимание на главных, а не второстепенных деталях алгоритма.

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

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

Структурное программирование – модульное нисходящее пошаговое проектирование алгоритма и структур данных.
    1. Принципы объектно-ориентированного программирования

Центральными в ООП являются понятия класса и объекта. Образно говоря, ООП заключается не столько в использовании классов и объектов в программе, сколько в замене принципа программирования "от функции к функции" принципом программирования "от класса к классу".

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

Объект – структурированная переменная, содержащая всю информацию о некотором физическом предмете или реализуемом в программе понятии.

Класс – описание множества таких объектов и выполняемых над ними действий.

В Object Pascal класс обладает синтаксическими свойствами базового типа данных:
  • класс определяется как структурированный тип данных;
  • объекты определяются как переменные класса;
  • возможно переопределение и использование стандартных операций языка, имеющих в качестве операндов объекты класса, в виде особых методов в этом классе.

Приведем пример описания класса и объекта.

Type

TPoint= class

x: integer;

y: integer;

procedure Draw;

end;

Var p: TPoint;

Здесь TPoint является классом, переменная p этого класса – экземпляром класса или объектом. В программе использование объектной переменной можно осуществить следующим образом.

begin

p.x:=100;

p.y:=200;

p.Draw;

end.

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

Объектно-ориентированное программирование (ООП) это совокупность понятий (класс, объект, инкапсуляция, полиморфизм, наследование), приемов их использования при проектировании программ, а Object Pascal – инструмент этой технологии.

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

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

Type

TPoint= class

x: integer; //поле

y: integer;

procedure Draw; //метод

end;


Класс инкапсулирует данные и код, что позволяет использовать процедуру прорисовки точки (Draw) с координатами x, y из данного класса. Это устраняет ошибки и неточности при использовании данной процедуры.

Вторым по значимости понятием является наследование. Новый, или производный класс может быть определен на основе уже имеющегося, или базового. При этом новый класс сохраняет все свойства старого: данные объекта базового класса включаются в данные объекта производного, а методы базового класса могут быть вызваны для объекта производного класса, причем они будут выполняться над данными включенного в него объекта базового класса. Иначе говоря, новый класс наследует как данные старого класса, так и методы их обработки. Приведем пример нового класса TColorPoint (цветная точка), который создается на основе уже существующего класса TPoint.

Type

TColorPoint= class (TPoint)

Color: integer;

procedure Draw;

end;


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

Тексты на Object Pascal представляются в виде модулей (pas-файлов), которые используются головной программой приложения. Приведем общий вид модуля, который содержит классы. В секции interface обычно приводятся описания классов, а в секции implementation – реализация методов описанных классов.