Рейтинг@Mail.ru
Menu
Скачать картинки на телефон бесплатно.
Заставки для телефона, аватарки.
(Вырезать из фотографии)

Роза `Гренд Могул` Яхта `Алиса` Лесное озеро Музей `Пирогово` Белочка
Выберите рубрику (тему)

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

Программирование на Паскале
Программа 13

  Тип объект содержит:
    -  поля: вектор, его размер и его идентификатор в символьном виде
    -  методы: введение вектора, вывод вектора, сортировка за ростом элементов вектора.
Реализовать экземпляр этого типа и выполнить над ним все возможные действия


Текст программы


program Prg13;



{ http://nataliya.kiev.ua/?id=113 }



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.

Print

Печатать текст программы!



Source code: «Объектное программирование».

Редактировать, копировать

(WYSIWYG редактор «NicEdit»)
Загрузить файл с текстом программы: «Объектное программирование». Печатать текст программы!

Загрузить файл с текстом программы

(Prg13.pas - Windows-1251)


Результат работы программы


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;



Дата: 2007-12-15   Автор: Admin
Случайный анекдот

Студент пишет матери: "Мамочка, пришли мне теплые носки, но только заверни их, чтобы они не испачкались от сала и колбасы".
Дата: 01-07-2004   Автор: Admin   Подрубрика: Родители