Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
инф-госы теория и практика.doc
Скачиваний:
28
Добавлен:
29.08.2019
Размер:
3.77 Mб
Скачать

3. Наследование

Наследование (inheritance) - это процесс, посредством которого один объект может приобретать свойства другого. Точнее, объект может наследовать основные свойства другого объекта и добавлять к ним черты, характерные только для него. Наследование является важным, поскольку оно позволяет поддерживать концепцию иерархии классов (hierarchical classification). Применение иерархии классов делает управляемыми большие потоки информации. Например, подумайте об описании жилого дома. Дом - это часть общего класса, называемого строением. С другой стороны, строение - это часть более общего класса - конструкции, который является частью ещё более общего класса объектов, который можно назвать созданием рук человека. В каждом случае порождённый класс наследует все, связанные с родителем, качества и добавляет к ним свои собственные определяющие характеристики. Без использования иерархии классов, для каждого объекта пришлось бы задать все характеристики, которые бы исчерпывающи его определяли. Однако при использовании наследования можно описать объект путём определения того общего класса (или классов), к которому он относится, с теми специальными чертами, которые делают объект уникальным. Наследование играет очень важную роль в OOP.

Основные понятия (если спросят):

Класс – мн-во однотипных объектов (classe).

Экземпляр – конкретный объект (instance).

Метод – процедура или ф-ция внутри класса.

Поле – чистые данные внутри класса (field).

Св-во (property) - поле, к к-му привязаны 2 процедуры: onRead, onWrite

15. Понятие алгоритма.

Слово алгоритм возникло от algorithm- латинской транслитерации имени великого математика IX века Мохаммеда ибн Муссы аль-Хорезми, который сформулировал правила выполнения четырех арифметических действий над многозначными числами.

Алгоритм - это организованная последовательность действий, понятных для некоторого исполнителя, ведущая к решению поставленной задачи.

Алгоритм - это конечная последовательность однозначных предписаний, исполнение которых позволяет с помощью конечного числа шагов получить решение задачи, однозначно определяемое исходными данными.

Алгоритм – понятное и точное предписание исполнителю совершить последовательность действий, направленных на достижение цели.

Алгоритм – это набор однозначно определенных шагов выполняемых для решения задач определенного класса.

Интуитивное рассуждение не формально, поскольку отсутствует формальное определение используемых в нем базовых понятий: элементарного шага, задачи, классов задач и т.д.

Кроме того жаже интуитивное определение элементарного шага основано на понятии алгоритма.

Свойства алгоритма:

  1. Массовость - алгоритм должен быть применим для класса подобных задач.

  2. Дискретность - алгоритм состоит из ряда дискретных шагов.

  3. Определенность - каждый следующий шаг алгоритма однозначно определяется предыдущими шагами.

  4. Результативность - алгоритм должен приводить к решению поставленной задачи за конечное число шагов

  5. Понятность – алгоритм рассчитан на исполнителя, и должен быть сформулирован на понятном ему языке (СКИ – система команд исполнителя).

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

Виды алгоритма:

  1. Линейный - алгоритм, в котором все предписания (шаги) выполняются так, как записаны, без изменения порядка следования, строго друг за другом.

  2. Разветвляющийся - алгоритм, в котором выполнение того или иного действия (шага) зависит от выполнения или не выполнения какого-либо условия.

  3. Циклический - алгоритм, в котором некоторая последовательность действий повторяется несколько раз.

Способы записи алгоритма:

  1. Словесно-формульное описание (на естественном языке с использованием математических формул).

  2. Графическое описание в виде блок-схемы (набор связанных между собой геометрических фигур).

  3. алгоритмический язык – система обозначений и правил для единообразной и точной записи алгоритмов и исполнения их.

  4. описание на каком-либо языке программирования (программа).

Разработка алгоритмов.

Существует два подхода к разработке алгоритмов: операциональный и структурный.

Операциональный

  1. минимум памяти

  2. минимум операций.

  3. операции:

    1. присваивание

    2. арифметические

    3. сравнение

    4. условный и безусловный переход

    5. вызов подпрограммы

Структурный:

Каждый алгоритм можно представить в виде суперпозиции трех базовых алгоритмических структур: следование, ветвление, цикл. Такой подход позволяет осуществлять разработку алгоритмов, последовательно их детализируя. Сначала выделяется несколько крупных логических блоков (модулей), затем каждый из них последовательно детализируется до отдельных команд конкретного языка программирования. Кроме того, при таком подходе каждый модуль может реализовываться отдельным программистом, если предварительно разработан способ взаимосвязи между модулями.

Подходы к формализации:

  1. Подход Геделя. Y(выход)=f(x)(вход). Алгоритм – способ вычисления этой ф-ции. Гедель определял алгоритм как систему правил, сформулированных на языке мат.логики.

Подходы стали возникать в 30-е годы 20 в. => есть проблемы эквивалентности, анализа искусственных языков, 10-я проблема Гильберта. Начались поиски формализации.

  1. Алондо Черч ввел понятие «рекурсивно-вычислительных (РВ) функций», λ-исчесления. В этой системе были выделены 3 базовых функции и 3 оператора (где из базовых РВ функций строили более сложные РВ функции). Любой алгоритм по Черчу – способ определения РВ функции.

  2. Подход Алана Тьюринга. Он создал модель гипотетического устройства, называемого машиной Тьюринга. По нему алгоритм – набор команд машины Тьюринга.

  3. Подход Маркова => некоторые входные данные можно представить в виде цепочки, сформулированных на каких-то данных => сущ-ет М-входная цепочка и N- выходная цепочка. По Маркову алгоритм – некий набор правила преобразования цепочек, позволяющий получить из входной цепочки выходную.

Был основан тезис Черча-Тьюринга: Различные подходы к формализации понятия алгоритма эквивалентны между собой с точки зрения понятия алгоритмической неразрешимости.

С этой точки зрения некоторый подход эквивалентен возможностям некоторого компьютера.

Этим мы докажем, если для решения задачи нельзя построить РВ функций => недьзя написать программы для нее на Паскале.