$44.21


$33.16


$277.90


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

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

Реализовать экземпляр этого типа и выполнить над ним все возможные действия

Текст программы
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;

 

Интересное

Стоит ли самому собирать...
Недавно в одном уважаемом компьютерном издании довелось прочитать в статью о том, как самому собрать себе компьютер. В этой статье был ряд полезных советов на тему выбора монитора, материнской...
Подробнее...
Реестр Windows
На смену ini-файлам, имеющим ряд концептуальных ограничений, еще в windows 3.1 было введено понятие реестра — регистрационной базы данных, хранящей различные настройки ОС и приложений. Изначально...
Подробнее...
Тестирование настроек...
Можно смело предположить, что нет таких пользователей, которые были бы полностью довольны производительностью своих dial-up соединений в Интернет. Приходится долго ждать загрузки web-страниц,...
Подробнее...
«Резиновая вёрстка»:...
Я недавно столкнулся с задачей, в которой надо было создать двухколоночный макет страницы с «шапкой» и «подвалом», причём в коде страницы контент должен был быть расположен перед блоком...
Подробнее...
Выпуск iPad Mini – роковая...
Первые слухи о намерениях корпорации Apple выпустить новый компактный планшет, цена которого будет составлять не более $299, по всей видимости, становятся вполне настойчивыми, чтобы применить к...
Подробнее...
Оптимизация проекта в Delphi
Здравствуйте, программисты-делфисты. Повидал я не мало многих программ написанных на делфи. Есть хорошие, есть не очень, но их размер меня всегда поражал. 0.6, 1, 5 и даже 10 мегабайт!!! А...
Подробнее...
Использование OpenGL в Java
Принципы реализации OpenGL в JavaВ настоящее время Java очень широко распространена и все больше и больше различных технологий переносятся на этот язык. Не исключением является и OpenGL. OpenGL...
Подробнее...
Протоколы интернет
Прародителем сети интернет была сеть ARPANET. Первоначально её разработка финансировалась Управлением перспективного планирования (Advanced Research Projects Agency, или ARPA). Проект стартовал...
Подробнее...
Общая информация по XP
1.1. Что такое WindowsXP? Это новая OC от компании Microsoft, в которой сделана попытка объединить две, ранее существовавшие независимо, линейки W9x и NT. Первоначально этот проект назывался...
Подробнее...
Delphi и Flash. Совмещение...
Разве возможно совместить Флэш-ролики и Дельфи-приложения. Раньше я думал что НЕТ. Но теперь я знаю не только, что это возможно, но и знаю как это делается!!! И сейчас я вам расскажу об этом....
Подробнее...