[ главная ]   [ рейтинг статей ]   [ справочник радиолюбителя ]   [ новости мира ИТ ]



Ответов: 0
25-02-12 07:01







   Web - программирование
PHP


ASP






XML



CSS

SSI





   Программирование под ОС











   Web - технологии








   Базы Данных









   Графика






Данные




Программирование под ОС / Pascal - Delphi /

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

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

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

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;



Комментарии

 Ваш комментарий к данному материалу будет интересен нам и нашим читателям!



Последние статьи: Программирование под ОС / Pascal - Delphi /

Работа со шрифтами на Win API
06-06-2010   

Сегодня поговорим о шрифтах, и о том, каким образом работать с ними на Win API. Нам потребуется переменная типа HFONT. Изменить стиль шрифта можно у любого компонента, я покажу это на примере кнопки... подробнее

Кол. просмотров: общее - 3303 сегодня - 0

Работа с таймером на Win API
06-06-2010   

Таймер - вещь в хозяйстве очень полезная. Если некое действие нужно повторять с определенной периодичностью, то таймер, это как раз то, что нужно... подробнее

Кол. просмотров: общее - 3345 сегодня - 1

Работа с мультимедийным таймером на Win API
06-06-2010   

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

Кол. просмотров: общее - 3459 сегодня - 0

Создание CheckBoxов средствами Win API
06-06-2010   

Сегодня наша программа научится работать с CheckBoxами. CheckBox можно представить как флаг, который можно установить или сбросить, и в зависимости от его состояния выполнять определенные действия... подробнее

Кол. просмотров: общее - 3575 сегодня - 0

Создание группы RadioButton средствами Win API
06-06-2010   

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

Кол. просмотров: общее - 3384 сегодня - 0



  WWW.COMPROG.RU - 2009-2012 | Designed and Powered by Zaipov Renat | Projects