У вас вопросы?
У нас ответы:) SamZan.net

заголовки процедур и функций инкапсулированных в данном типе объекта

Работа добавлена на сайт samzan.net: 2016-03-13

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 30.6.2025

Билет 20. Концепция объекта в Турбо Паскале.

В языке Турбо Паскаль введено новое понятие объекта, как дальнейшее развитие концепции типа. Как и типы, объекты должны быть описаны в разделе описаний программы. Форма описания объекта аналогична описанию типа Запись. Различие лишь в том, что ключевым словом описания является object, а не record, и кроме обычных полей (элементов структуры данных) в описании объекта используются процедурные поля - заголовки процедур и функций, инкапсулированных в данном типе объекта. Кроме того, возможности описания полей структуры данных расширены - могут описываться кроме переменных также необходимые типы данных, константы. Переменные, образующие структуру данных, называются полями объекта, а процедуры и функции - методами объекта. При этом тела методов должны быть описаны вне описания объекта: обычно в соответствующих модулях.

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

Пример описания объекта:

type point = object; {объект - точка на плоскости}

       x,y: integer; {координаты точки}

       c: byte; { цвет точки}

       vis: boolean; { светимость}

     procedure create(a,b:integer); {создание точки}

     procedure move(dx,dy:integer); {сдвиг точки}

     procedure setcolor(color:byte); {установка цвета}

     procedure vis_on; {включить светимость}

     procedure vis_off; {выключение светимости}

     function getX:integer; {получить координату Х}

     function getY:integer; {получить координату Y}

end {point};

Для работы с объектами помимо описания объекта, как и при описании других типов, необходимо объявить переменные типа объект, называемые экземплярами объектов. Например, для описанного выше объекта point можно объявить экземпляры:  var p1,p2:point; {две точки}

Для обращения к полям и к методам объекта используются составные имена (имена с точкой), аналогично тому, как это принято для записей. Например: p1.X:=1; p1.Y:=p1.X; p2.X:=p1.getX; p1.SetColor(green); В описании каждого типа-объекта неявно присутствует стандартное имя Self того же типа, что и сам объект. Это - обобщенное имя экземпляра объекта, которое может использовать любой метод для указания своей принадлежности этому объекту.

Аналогично записям, доступ к полям и методам объекта можно упростить за счет использования оператора with.

Например: with p1 do begin x1:=getX; y1:=getY end;

Для объектов одного типа допустимо присваивание, например: p1:=p2;

В заданной прямоугольной матрице поставить на первое место

столбец с наименьшим количеством нулевых элементов,

перестаиви все нули в конец этого столбца.  (Измененная

матрица должна сожержать все элементы исходной матрицы).

program z433_20;

program Z433_20;

uses Z433_20;

Var a:matr; i,j:integer;

Begin

for i:=1 to n do

for j:=1 to m do

read(a[i,j]);

obmen_nul(a);

for j:=1 to m do

for i:=1 to n do

writeln(a[i,j]);

end.

unit Z433_20;

interface

Const n=4; Const m=5;

Type matr=array[1..n,1..m] of real;

Var a:matr; i,j:integer;

procedure nul_schet(a:matr; Var k:mas);

procedure nom_stol(k:mas; Var w:integer);

procedure obmen_nul(Var a:matr);

implementation

procedure nul_schet;

Var i,j:integer;

Begin

for j:=1 to m do

for i:=1 to n do

if a[i,j]=0 then k[j]:=k[j]+1;

end;

end;{proc1}

procedure nom_stol;

Var i,j:integer;

Begin w:=0;

for j:=1 to m do

if k[j]>k[j+1] then w:=i+1;

end;

end;{proc2}

procedure obmen_nul;

Var j, k,l:integer;

Begin k:=1; l:=m;

for i:=1 to n do

for j:=1 to m do

while k<>l do Begin

if a[i,k]=0 then Begin

if a[i,l]=0 then l:=l-1

else Begin a[i,l]:=a[i,k]; a[i,k]:=0; k:=k+1; l:=l+1; end; end

else k:=k+1;

end;

end;{proc}




1. Кемеровский государственный университет Кафедра социальной психологии и психосоциальных технологий
2. История о медведь-горе
3. 2014 г 0800 205 ауд
4. темах вы увидите определения из других источников взятых мною
5.  Теоретические основы предпринимательской деятельности
6. Несостоятельность (банкротство) кредитной организации
7. I.ПРЕДРОСЫЛКИ ДВИЖЕНИЯ Объективная основа обострение противоречий феодальнокрепостнического строя оче
8. Тема голоса в поэзии Маяковского- параллели и метаморфозы
9. Рукопись Бога выдержал несколько переизданий удостоен ряда литературных премий и переводился на гречески
10. Национальный исследовательский ядерный университет МИФИ ИАТЭ НИЯУ МИФИ Социальноэкономический