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

по наследству объектампотомкам.

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

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

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

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

от 25%

Подписываем

договор

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

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

Билет 21

Свойства  наследования и полиморфизма объектов

Ещё одной важной и мощной идеей объектно-ориентированного программирования является наследование полей и методов объектов, т.е. возможность передавать свойства объектов-предков "по наследству" объектам-потомкам. Отношение наследования "предок-потомок" позволяет строить иерархию объектов так, что многие поля и методы описываются лишь однократно и затем используются многими объектами. Таким образом, можно существенно ограничить количество необходимых описаний процедур в сложной программе.

Любой объект может быть объявлен потомком ранее описанного объекта-предка. При этом объекту-потомку становятся доступны все методы своего предка и все структуры данных этого предка. Кроме того, объект-потомок вправе определить свои дополнительные поля и методы и даже перекрывать методы предка. Каждый объект имеет единственного предка (непосредственного), а каждый предок может иметь любое число потомков.

Свойство наследования распространяется по цепочке, образуя дерево родственных объектов. В этом дереве имеется один объект-корень, являющийся предком всех других объектов. Если иерархия хорошо продумана, то получается библиотека объектов, представляющая многообразие связанных объектов, используемых при разработке прикладных программ. Примером такой библиотеки является Turbo Vision - библиотека объектов для разработки текстовых интерфейсов в системе DOS.

В Турбо Паскале, чтобы объявить объект потомком некоторого объекта-предка необходимо после ключевого слова object в круглых скобках указать имя объекта-предка. При этом в описании объекта-потомка указываются только дополнительные поля и методы, отсутствующие у предка (или предков). Например:

type Line = object ( point); {объект- Линия, являющийся предком объекта point}

        xe,ye:integer; {координаты точки-конца линии}

        procedure set_line(x1,y1,x2,y2:integer) ;{установка линии}

        procedure get_line(var x1,y1,x2,y2:integer) ; {получить координаты }

end {Line};

Оператор присваивания может быть использован для обмена информацией между родственными объектами. Допустим только односторонний обмен - от потомка к предку.

В целом ряде случаев при создании объектов-потомков бывает важно не только дополнять поля и методы новыми, но и "перекрывать" старые методы, введенные в предках. Это возможно, т.к. объекты Турбо Паскаля наделены свойством полиморфизма.

Полиморфизм - это возможность называть различные процедуры (или функции) одинаковыми именами. Такая возможность не чужда многим естественным операциям. Достаточно вспомнить операцию +, которая в Турбо Паскале может означать и сложение целых чисел, и сложение вещественных чисел, и сцепление строк, и объединение множеств. Полиморфизм можно использовать и для любых методов объектов-потомков путем перекрытия, ранее описанных методов предков. Термин "перекрытие" здесь означает подмену одного метода другим с тем же именем и, возможно, тем же набором параметров. Можно выполнить перекрытие двумя способами: статически и динамически.

Статическое перекрытие - объявление для объекта-потомка нового метода с тем же именем и, если необходимо, с тем же набором параметров, что и у метода, объявленного для предка. В этом случае новый метод будет действовать таким образом, что "видимым " для объекта-потомка и всех его потомков будет новый метод, в то время как для объекта-предка будет действовать старый метод (недоступный теперь для объекта-потомка!). Имеет распространение только в одном направлении - к потокам. Более гибким является специально введенный для объектов механизм динамического перекрытия.

Динамическое перекрытие действует только в период выполнения программы и возможно только для перекрытия метода с тем же именем и тем же набором параметров метода, что и у объекта-предка. Для перекрытия метода он должен быть описан в объекте-потомке как виртуальный метод - с директивой virtual. Компилятор по директиве virtual создает таблицу виртуальных методов, хранящую адреса точек входа всех виртуальных методов. При этом для каждого типа объекта создается собственная таблица, так что каждый экземпляр объекта однозначно связан с таблицей.

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

Задача 21(1)Для массива С из N элементов составить процедуру, которая находит m наименьших значений С1,С2…СN и т.д.

program 432_1;

const n=6;

type fun=function(x:real):real;

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

mas=array[1..n] of real;

var A:matr; c:mas; i,j,m:integer; S:real;

procedure UPOR_P(c:mas;f:fun;m:integer;s:real);

var i,j,k,l:integer; w,min:real;z:array[1..m] of real;

begin for j:=1 to n-1 do begin

min:=c[j]; k:=j;

for i:=j to n do if c[i]<min

then begin min:=c[i]; k:=1; end;

w:=c[j];

c[j]:=c[k];

c[k]:=w;

end;

for l:=1 to n do

z[l]:=c[l];

s:=0;

for l:=1 to m do s:=s+f(z[l]);

end;

{$F+} function G(x:real):real;

begin

G:=SQR(x);

end;

{$F-};

begin

for i:=1 to n do

for j:=1 to n do

readln A[i,j];

read(m);

for i:=1 to n do begin

for j:=1 to n do

c[j]:=A[i,j];

p(c,G,m,S);

writeln(S);

end;

end.




1. а за вознаграждение совершить одну или несколько сделок от своего имени но за счета комитента
2.  Пропелленты- классификация требования 5 2
3. Учет расчетов с персоналом по оплате труда
4. рассматривают различные стороны этой истины
5. По оценкам ученых в чайных листьях содержится около трехсот ингредиентов включая белки жиры более 10 видов
6. а предреформенная Россия; б пореформенная Россия
7. СІС к 1073 Публічні й таємні перешкоди к
8. По этим свойствам они разительно отличаются от металлов
9. Контрольная работа- Технології навчання у грі
10. Тема 3.18- Группы крови Rhфактор совместимость групп крови.