Ошибка: Failed to parse the Currency Converter XML document.
$45 338.82


Ошибка: Failed to parse the Currency Converter XML document.
$36 876.00


Ошибка: Failed to parse the Currency Converter XML document.
$18 054.97


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

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

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

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

 

Интересное

Поиск файлов с расширением...
Чтобы убедиться в этом, создайте текстовый файл и запишите в него одно слово (например, «поиск»). Сохраните этот файл с расширением log или cpp. Теперь запустите поиск файлов (Пуск > Поиск),...
Подробнее...
Удаление неиспользуемых...
Известно ли вам, что до тех пор, пока не удалить драйвер в Windows XP, он будет впустую расходовать системные ресурсы? Ниже дана пошаговая инструкция, которая поможет увидеть и удалить ненужные...
Подробнее...
Top 10 ошибок конфигурации...
Установить Linux/BSD — не проблема, инсталлятор все сделает за нас, а вот правильно настроить систему, чтобы ее тут же успешно не атаковали хакеры, удается далеко не каждому. Проанализировав...
Подробнее...
Учимся работать с DelphiX
Говоря техническим языком, DirectX — набор объектов COM (Component Object Model), которые реализуют интерфейсы для облегчения работы с видеоаппаратурой, звуком, межкомпьютерными соединениями и...
Подробнее...
Оптимизация памяти в...
Windows XP предоставляет больше возможностей по оптимизации памяти, нежели Windows 2000. Вместе с тем, она и требует больше свободных ресурсов. Данная статья поможет вам настроить вашу систему для...
Подробнее...
Настраиваем Apache - FAQ...
В: Что такое Apache и зачем он нужен?О: Apache — это web-сервер, один из наиболее распространенных, безопасных и удобных во всем мире. Если вы создаете свой динамичный сайт с использованием языков...
Подробнее...
Java обгоняет по...
Одним из главных недостатков языка Java традиционно считается невысокая скорость работы программ по сравнению с приложениями на языке С++. И для приложений, где переносимость между платформами или...
Подробнее...
DBI для mSQL/mySQL
УстановкаДля использования интерфейсов rnSQL и MySQL к модулям DataBase Dependent/DataBaseIndependent (DBI/DBD) или MsqlPerl и MysqlPerl необходимо иметь следующие компоненты :
Подробнее...
Загрузка FreeBSD 5.0 на...
Введение За последние годы порт FreeBSD-sparc64 привлек значительное внимание разработчиков. За годы было сделано многое; тем не менее, еще много предстоит сделать в области поддержки устройств и...
Подробнее...
Про Хакеров
«Уважаемый г-н Иванов! Коpпоpация Microsoft пpоводит беспpецедентную акцию и пpедлагает Вам участие в пpогpамме »Лицензия-Плюс«. Суть пpогpаммы заключается в том, что мы пеpеводим на Ваш...
Подробнее...