Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика / inf-ka_shpory.doc
Скачиваний:
67
Добавлен:
13.02.2015
Размер:
642.56 Кб
Скачать

8) Концепция наследования. Формы наследования. Реализация и использование в объектно-ориентированных языках программирования.

ОО языки программирования строятся на основе 3-х концепций: инкапсуляция, наследование, полиморфизм.

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

Объект, кот наследует св-ва другого, наз-ся наследником, потомком (child). Класс этого объекта наз производным классом (derived class). Объект, у кот наследуют элементы, наз-ся родителем, предком (parent), класс наз-ся базовым (base class). Мех-м наследования позволяет избежать объявления одних и тех же элементов в различных классах. Все они реализуются в родит классе, а наследники добавляют к ним то, что необходимо для них, а при необходим модифицируют уже унаследованные элементы. Механизм модификации унаследованных элементов – переопр-ние (overriding).

Формы наслед:

1 ко многим. В яз Object Pascal у люб класса может быть только 1 родит, но у 1 и того же родит мож быть неск наследников. (фрукты – яблоки, лимоны, апельсины). Частный случ. 1 к 1, если 1 наследник.

Многие к 1. Множественное наслед сущ в яз C++. (Грейпфрут – лимон, апельсин). В Object Pascal невозможно.

Многие ко многим – 1 и тот же родитель может иметь мн-во наследник и мн-во родит. (фрукты – лим и апельс – родит грейпфрута))

Реализация

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

При объявлении нового класса, базовый класс указывается в круглых скобках после директивы class. Внутри класса раздел protected – обеспечивается доступ только к дочерним элементам

<имя класса> = class(<имя родительского класса>)

protected

// защищенный раздел доступа

public

// открытый раздел доступа

end;

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

9) Численные методы решения нелинейных уравнений с одним неизвестным.

1. метод половинного деления

2. метод касательной

3. метод итерации

4. метод секущих

1 этап - локализация корня.

Цель: найти такой отрезок [а,b], на к-ом находится единст корень ур-ния f(x)=0, и выполнить все условия применимости метода.

2 этап – непосредственная реализация метода.

Любой х, удовл-щий неравенству о-х≤E будет явл-ся приближенным корнем ур-ния f(x)=0 с точностью Е.

Метод половинного деления.

Сущ-ет [а,b], на к-ом находится единственный корень ур-ния f(x)=0 и ф-я f(x) на [а,b] непрерывная и принимает на концах отрезка значения противоположного знака f(a)*f(b)<0. Метод годится для нахождения корней нечетной кратности (гр ф-ии пересекает ох). Метод наиболее простой и позволяет решить самый широкий класс задач.

Суть: x=(a+b)/2. С каждым шагом отрезок уменьшается в 2 раза. За конечное число шагов мы получим отрезок, длина к-ого <E и на к-ом находится точный корень.

Метод касательной.

f(x) опр-на на [a,b] и на этом отрезке сущ-ет корень ур-ния f(x)=0. На [a,b] сущ-ет непрерывная f’(x) и f”(x). Для любого x принадлежащего [a,b] f’(x)≠0 и f”(x) ≠0.

Рассмотрим геометрический смысл метода.

x0=b. Получим последовательность x1, x2...

Пусть есть xn-1. Найдем соотношение, чтобы найти xn.

y-f(xn-1)=f’(xn-1)(x-xn-1) – уравнение касательной к графику в точке (xn-1;f(xn-1))

Точка переносится с осью OX (xn;0). 0-f(xn-1)=f(xn-1)(xn-xn-1)

xn=xn+1-[(f(xn-1))/(f’(xn-1))] (1)

Можно показать, что f(x)*f’(x)<0, на любом x принадлежащем [a;о) – при а достаточно близком к о.

Док-во: предположим, что это не выполняется f(x)*f’(x)>0, на любом x принадлежащем [a;о)

1. f(x)>0 следует f’(x)>0, значит ф-я положительна и возрастает, при x→ о f(о)>0 – противоречие.

2 f(x)<0 следует f’(x)<0, при x→ о, ф-я непрерывна, f(о)<0 – противоречие, значит верно.

Разложим ф-ю f(x) в ряд Тейлора в точке xn-1 ограничимся 2мя первыми членами ряда и остаточный член в форме Лагранжа.

f(x)=f(xn-1)+f’(xn-1)(x-xn-1)+[(f”(c))/2!]*(x-xn-1)2

с принадлежит (xn-1,x), если xn-1<x

с принадлежит (x, xn-1), если xn-1>x

Сущ. любой x принадлежащий [a,b], т.к. 1 и 2 производная сущ.на [a,b]. В точке x=о ф-лы справедливы f(о)=0. Подставим

0=f(xn-1)+f’(xn-1)(о-xn-1)+[(f”(c))/2]*(о-xn-1)2 (2)

с принадлежит (xn-1,о), если xn-1

с принадлежит (о,xn-1), если xn-1

о-xn= о-xn-1+[(f(xn-1))/(f’(xn-1))]

о=xn-1= о-xn-[(f(xn-1))/(f’(xn-1))]

В равенстве (2) заменим на о-xn-1

0= f(xn-1)+f’(xn-1)(о-xn)-f(xn-1)+[(f”(c))/2]*(о-xn-1)2

о-xn=[(-f”(c))/(2f’(xn-1))]*(о-xn-1)2 (3)

Ф-ла (3) позволяет найти, где находится очередной xn – слева или справа от корня.

Случаи по поводу знака произведения (3):

1) f ‘(x)*f ’’(x)>0, x € (ξ; b]; 2) f ‘(x)*f ’’(x)<0, x € (a; ξ]

1) x0=b, ξ-x1=

ξ-x1<0  x1> ξ xn-1> ξ xn> ξ все xi > ξ, i=0,1,2,..

xn-xn-1 = Справа от корня выполн-ся б) (см. выше). xn – xn-1< 0, xn-1> xn Это означ., что посл-ть убыв. и огр-на снизу корнем, она им. предел, т.е. сходится. В случае а) f ‘(x)*f ’’(x)>0, x € [a;ξ) метод применим. 2) доказ-ся аналогично.

Погрешность |-xn| = , где |-xn| - погр. на n шаге, (-xn-1)2 – погр-сть на (n-1) шаге

Погрешность на след шаге будет уменьшаться.

Соседние файлы в папке Информатика