Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекция 8 Объекты 2017.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
444.99 Кб
Скачать

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

Теоретические основы ООП

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

Процедурное программирование

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

Структурное программирование (стиль программирования) – совокупность рекомендуемых технологических приемов.

Контроль на этапе разработки, Метод пошаговой детализации с использованием 3 базовых структур (следование, альтернатива, повторение)

Следующий этап - повышение роли организации данных (Паскаль).

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

Модульное программирование предполагает выделение групп подпрограмм, использующие одни и те же глобальные данные (типы данных).

Например, System

В виде модулей реализованы также библиотеки классов и компонент (VCL – Visual library Component), которая была разработана для Делфи и используется в С++ Builder

Windows , Messages, Dialogs, Forms

SysUtils – содержит библиотеку классов стандартных исключений;

Graphics – содержит библиотеку графических компонент.

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

Свойства модулей:

  1. Информационная независимость

  2. Функциональная завершенность

  3. Логическая независимость (модулей друг от друга)

<структура модуля > ::= Unit <имя>;

Interface

<интерфейсная секция>

Implementation

<секция реализации>

[ Initialization

<секция инициализации>]

[ Finalization

<завершающая секция>]

End.

{модуль для работы с комплексными числами}

Unit Complex;

Interface

Type Tcomplex = record

Re, Im: Real;

end;

Procedure In_Complex( var z:Tcomplez);

Procedure Out_Complex( z:Tcomplez);

Function Sum_Complex(z1,z2:Tcomplex; var z3:Tcomplez);

Function Abs_Complex(Z:Tcomplex):real;

Function Eq_Complex(z1,z2:Tcomplex):boolean;

Implementation

Procedure In_Complex( var z:Tcomplez);

Begin

Write(‘ Введите действительную часть комплексного числа = ‘);

Readln(z.re);

Write(‘ Введите мнимую часть комплексного числа = ‘);

Readln(z.im);

end;

Procedure Out_Complex( z:Tcomplez);

Begin

Write(‘ Комплексное число = ‘);

Writeln(z.re, ‘ + ‘,z.im, ’ i ‘);

end;

Function Sum_Complex(z1,z2:Tcomplex; var z3:Tcomplez);

Begin

z3.re:=z1.re + z2.re;

z3.im:=z1.im + z2.im;

end;

Function Abs_Complex(Z:Tcomplex):real;

Begin

Abs_Complex:= Sqrt(Sqr(z.re) + Sqr(z.im));

End;

Function Eq_Complex(z1,z2:Tcomplex):boolean;

{z1>z2}

Begin

If Abs_Complex(z1) > Abs_Complex(z2) then Eq_Complex:=true

Else Eq_Complex:=false;

End;

End.

{Cохранить модуль в файле рабочего каталога с именем Complex.pas и откомпилировать его. В результате компиляции получите файл с именем Complex.tpu}

{ программа, которая будет использовать ресурсы модуля Complex}

Program Test_Complex;

Uses Complex;

Const n=10;

Type TarrComplex=Array[1..n] of Tcomplex;

Var z:TarrComlex; I:1..n;

BEGIN

For I:=1 to n div 2 do In_Complex(z[I]);

For I:=1 to n div 2-1 do Sum_Complex(z[I], z[I+1), z[I +n div 2);

Sum_Complex(z[1], z[n div 2], z[n]);

For I:=1 to n do Out_Complex(z[I]);

For I:=1 to n do Abs_Complex(z[I]);

If Eq_Complex(z[1],z[n]) Then writeln (‘ Первое число больше последнего’) else writeln (‘ Первое число меньше последнего’);

End.

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

Технология создания сложного ПО, основанная на представлении программы в виде совокупности объектов (классов).

Идея заключается в стремлении связать данные с обрабатываемыми эти данные процедурами и функциями в единое целое – класс.

Фактически его можно рассматривать как модульное программирование нового уровня.

Библиотека классов Делфи и С++ - это фактически набор «кирпичиков» для построения программ.

Класс – это структурный тип данных, который включает описание полей, методов (процедур и функций, работающих с этими полями).

Класс ОКНО:

Поля X1,Y1,X2,Y2,Color

Метод Инициализировать(ax1,ay1,ax2,ay2,acolor)

Метод Изобразить

Конец описания

Пример задание класса:

Type TPoint = class {класс точка на плоскости}

X,Y: Integer;

Visible:Boolean;

Color:word;

Procedure Init(InitX, InitY, Col:integer);

Procedure Show; ; {нарисовать}

Procedure MoveTo(StepX, StepY: integer); {переместить}

Function IsVisible:boolean; {сделать видимой}

End;

var X1,X2:Tpoint;

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

Операции над объектами:

  • Создание, уничтожение;

  • Модификация (обращение к объекту для изменения его состояния);

  • Селекция ( ответ объекта о его состоянии);

  • Итерация (доступ к содержанию объекта по частям, например, массив).

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

Переменная называется статической, если место для нее выделяется в момент компиляции программы. Динамической – если в момент выполнения программы.

В Делфи все объекты динамические.