Главная » Объектное программирование
Тип объект содержит:
    -  поля: вектор, его размер и его идентификатор в символьном виде
    -  методы: введение вектора, вывод вектора, сортировка за ростом элементов вектора.
Реализовать экземпляр этого типа и выполнить над ним все возможные действия Текст программы
program Prg13;
uses crt;
type TMas=array[1..10] of real;
  TVector=object
    Mas:TMas;
    n:byte;
    id:char;
    procedure inp;
    procedure out;
    procedure sort;
    end;
var vect:tvector;
procedure TVector.inp;
var i:byte;
begin
  Writeln('Enter identificator of vector (One symbol) :');
  Write('id=');
  Readln(id);
  Writeln('Enter number of elements of vector ',id,' :');
  Write('n=');readln(n);
  writeln('Enter elements of vector ',id,' :');
  for i:=1 to n do
    begin Write(id,'[',i,']=');readln(mas[i]); end;
end;
procedure TVector.out;
var i:byte;
begin
  Writeln('Vector ',id,' :');
  for i:=1 to n do
    writeln(id,'[',i,']=',mas[i]:0:3)
end;
procedure TVector.sort;
var i,j:byte;
  b:real;
begin
for i:=n-1 downto 1 do
  for j:=1 to i do
    begin
    if mas[j]>mas[j+1] then
      begin
      b:=mas[j];
      mas[j]:=mas[j+1];
      mas[j+1]:=b;
      end;
    end;
end;
begin
  clrscr;
  vect.inp;
  vect.sort;
  vect.out;
  readkey;
end.
Результат работы программы
1)
Enter identificator of vector (One symbol) :
id=a
Enter number of elements of vector a :
n=5
Enter elements of vector a :
a[1]=1
a[2]=4
a[3]=2
a[4]=7
a[5]=8
Vector a :
a[1]=1.000
a[2]=2.000
a[3]=4.000
a[4]=7.000
a[5]=8.000
2)
Enter identificator of vector (One symbol) :
id=q
Enter number of elements of vector q :
n=3
Enter elements of vector q :
q[1]=2.1
q[2]=5.9
q[3]=2.1
Vector q :
q[1]=2.100
q[2]=2.100
q[3]=5.900 Теория к программе
Объектное программирование
  В рамках концепции ОПП данные и методы их обработки (программы) объединяются в единые структуры - так называемые объекты. Кроме того объектам присуще важное качество: если существует некоторый класс объектов (прародитель предок), на его базе может быть построено, "выделено" иной подкласс (наследник потомок), который автоматически наследует все свойства предка (в отношении к данным и средствам работы с ними).
  Объект определяется типом 'объект', или классом объекта, который описывается в разделе описи типов программы и имеет вид:
    Type =object
      ;
     
      end;
  - содержат объявление наборов логически связанных данных разного типа
  - содержат объявление процедур и функций работы с этими данными.
  Такое объединение в единой структуре данных и методов называется инкапсуляцией.
  Объект-переменная или экземпляр - переменная объектного типа, описание:
    var : ;
      - описание типа 'объект' может быть выполнено только в блоке TYPE главной программы или в разделах модулей (т.е. невозможно описывать локальные объекты)
      - при описании типа 'объект' все поля данных должны предшествовать описаниям методов
      - компонентами объектов не могут быть файлы (файловые переменные). Данные типа объект не могут быть записаны в файл.
  Наследование - это возможности создавать новые классы объектов на базе уже существующих и таким образом предоставлять новым классам - 'наследникам' право наследования свойств (полей) и методов существующих классов - 'прародителей'. 'Наследники' рассматриваются как подчиненные (зависимые от) 'прародителей'. 'Наследник' иногда называется производным типом. Такая структура реализуется с помощью следующей конструкции:
    type =object()
     
     
      end;
  В операциях предоставления прародитель всегда должен находиться слева, так как количество его полей всегда меньша или равняется количеству полей наследника
    :=;
  Полиморфизм - это существование нескольких одинаковых по именем но разных по смыслу методов (процедур или функций) для разных классов объектов. Благодаря этому становится возможным выполнить одну и ту же самую операцию с объектами разных классов с учетом их специфики.
    Обработка статических методов похожая на обработку статических переменных, т.е. ссылка на эти методы формируются на стадии компиляции (раннее связывание).
    Для реализации полиморфизма в полной мере используются виртуальные методы.
  Виртуальным метод становится после того, если после его заголовка указывается служебное слово VIRTUAL:
    procedure (); virtual;
    function ():; virtual;
  При 'виртуализации' - объявлении метода виртуальным - следует придерживаться правил:
    1. Если порождаемый тип объекта описывал метод как виртуальный, то и все производные типы, которые переопределяют метод с тем самым именем, должны описывать его как виртуальный.
    2. Если переозначается виртуальный метод, то его заголовок в новой реализации в произвольном типе не может быть изменен.
    3. В описи объекта должен обязательно присутствовать присутствующим метод, который инициализирует объект (как правило с именем init) - Заголовок в объявлении и реализации вместо procedure употребляется служебное слово constructor.
  Конструктор - это специальный вид процедуры, которая выполняет установочную работу по виртуализации метода (обеспечение так называемого позднего связывания). Все типы объектов, которые имеют виртуальные методы, должны содержать конструктор. Конструктор всегда вызывается к первому вызову виртуального метода.
    Объекты могут быть размещены в динамической области памяти, для этого они должны быть объявлены как и все другие динамические структуры.
      Var :^;
  Создание динамических объектов происходит
    с помощью процедуры NEW
      а) NEW();
      -при этом выделяется место для сохранения базового типа. Если есть виртуальные методы, то динамический объект должен быть инициализован:
        ^.();
      б) расширенный вариант с выполнением инициализации объекта:
        NEW(,());
      в) реализация NEW в виде функции:
        :=new();
или: :=new(,());
  Освобождение объектов происходит
    а) с помощью процедуры dispose:
      dispose();
    б) или расширенный вариант процедуры:
      dispose(,);
    Деструктор - специальная процедура, объявляется в описании типа объект среди других методов. Вместо procedure употребляется зарезервированное слово destructor, как правило эта процедура носит имя done ('выполнено'). Назначение - заключительные действия перед освобождением объекта (например, действия по освобождению динамично распределенных полей). Деструктор может наследоваться.
      destructor .done;
      begin . . . end; Категория: Языки программирования | Просмотров: 158 Офсетная печать, изготовление буклетов и брошюр.