Реферат на тему методы программирования

Обновлено: 05.07.2024

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

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

Математические исследования конкретных экономических проблем с целью установления экономических зависимостей и закономерностей относятся к концу XIX и началу ХХ столетия.

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

Основатель математической школы в буржуазной политэкономии Л. Вальрас в 1874 г. создал общую статистическую экономико-математическую модель хозяйства в целом, известную под названием системы общего экономического равновесия.

Рациональные элементы модели Вальраса заключаются в постановке экстремальной задачи для хозяйства в целом (достижение максимального эффекта при минимальных затратах) и подходе к ценам как составному элементу нахождения общего оптимума.

Указанные работы можно считать первыми построениями экономико-математических моделей (Э.-М.М). Они наметили два направления экономико-математического анализа статистических данных: применение математических методов, во-первых, для описания экономических явлений, во-вторых, для установления зависимости между ними. Оба типа исследований относятся к области математической статистики; они и получили дальнейшее развитие в последующие два десятилетия.

Только примерно через 10 лет метод линейного программирования в другой форме был переоткрыт в США. Первые статьи по линейному программированию были опубликованы в США лишь в 1949 г. В них американский ученый Дж.Б.Данциг выступил тогда с изложением своего симплексного метода. Симплексный метод Дж.Б. Данцига имеет очень много общего с методом последовательного улучшения плана, применявшимся в дальнейшем (после 1939 г.) Л.В. Канторовичем и его сотрудниками для решения ряда практических задач, представляющих конкретную реализацию метода разрешающих множителей. Однако есть и отличия их в некоторых существенных частях.

Еще до Л.В. Канторовича в нашей стране были опубликованы работы, которые можно считать зародышами линейного программирования. Так, в 1930 г. советские экономисты-транспортники (А.Н. Толстой и др.) для построения оптимального плана перевозок составили транспортную задачу в сетевой форме и решили ее без математического обоснования, применяя метод последовательного улучшения плана. В 1941 году Хичкок поставил транспортную задачу.

Расцвет работ по линейному программированию падает на 50-е годы ХХ столетия. В эти годы были детально разработаны основные методы решения, создано много разных алгоритмов, началось практическое применение новых методов, появилась обширная литература.

В 1949 г. Л.В. Канторовичем и М.К. Гавуриным в совместной статье был изложен метод потенциалов (в сетевой постановке) для решения транспортных задач.

Несколько позднее (в 1951г.) Дж.Б.Данцигом был разработан аналогичный метод, получивший название модифицированного распределительного метода. Это название является общим и относится по существу к целой группе близких друг другу методов, включающей как частные виды симплексный метод Дж.Б. Данцига, метод разрешающих слагаемых А.Л. Лурье и др.

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

В 50-е годы кроме различных методов и их модификаций для решения задач линейного программирования появляется целый ряд работ, в которых излагаются методы нелинейного и динамического программирования. Так, в 1951 г. американские ученые Х. Кун и А. Таккер опубликовали работу по решению нелинейных задач. В 1954 г. А. Чарнс и Лемке разработали и опубликовали метод решения задач с сепарабельной выпуклой целевой функцией и линейными ограничениями. В этом же году появляются работы по методам целочисленного линейного программирования. К ним относится и метод Го- мори, опубликованный в США в 1958 г.

Также в 50-е годы американским математиком Р. Беллманом разрабатываются методы динамического программирования, появляется ряд работ, посвященных квадратичному программированию, например работы Е. Баранкина, Р. Дорфмана, Е. Била и др.

Внедрение экономико-математических методов и ПК создаёт реальную научную базу совершенствования планирования.


  • Теория управления запасами.

  • Теория массового обслуживания.

  • Теория игр.

  • Теория статистических решений.

  • Сетевые методы планирования и управления.

  • Математическое программирование.

c:\users\иван\downloads\linear.jpg

2. Методы линейного программирования.

2.1. Симплекс-метод.

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

Заметим, что каждое из линейных неравенств на переменные ограничивает полупространство в соответствующем линейном пространстве. В результате все неравенства ограничивают некоторый многогранник (возможно, бесконечный), называемый также полиэдральным комплексом. Уравнение W(x) = c, где W(x) — максимизируемый (или минимизируемый) линейный функционал, порождает гиперплоскость L(c). Зависимость от c порождает семейство параллельных гиперплоскостей. Тогда экстремальная задача приобретает следующую формулировку — требуется найти такое наибольшее c, что гиперплоскость L(c) пересекает многогранник хотя бы в одной точке. Заметим, что пересечение оптимальной гиперплоскости и многогранника будет содержать хотя бы одну вершину, причём, их будет более одной, если пересечение содержит ребро или k-мерную грань. Поэтому максимум функционала можно искать в вершинах многогранника. Принцип симплекс-метода состоит в том, что выбирается одна из вершин многогранника, после чего начинается движение по его рёбрам от вершины к вершине в сторону увеличения значения функционала. Когда переход по ребру из текущей вершины в другую вершину с более высоким значением функционала невозможен, считается, что оптимальное значение c найдено.


  1. нахождение исходной вершины множества допустимых решений,

  2. последовательный переход от одной вершины к другой, ведущий к оптимизации значения целевой функции.

2.2. Двухфазный симплекс-метод.

Процесс нахождения исходной вершины не сильно отличается от однофазного симплекс-метода, однако может в итоге оказаться сложнее, чем дальнейшая оптимизация.

Различия между дополнительными и вспомогательными переменными.

После того, как было модифицировано условие, создаётся вспомогательная целевая функция. Если вспомогательные переменные были обозначены, как >, > , то вспомогательную функцию определим, как


> ^y_\to min>


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


  • оптимальное значение больше нуля. Это значит, что как минимум одна из вспомогательных переменных осталась в базисе. В таком случае можно сделать вывод, что допустимых решений данной задачи линейного программирования не существует.

  • оптимальное значение равно нулю. Это означает, что все вспомогательные переменные были выведены из базиса, и текущее решение является допустимым.

МЕТОД ВЕТВЕЙ И ГРАНИЦ

Метод ветвей и границ ( англ. branch and bound) — общий алгоритмический метод для нахождения оптимальных решений различных задач оптимизации, особенно дискретной и комбинаторной оптимизации . По существу, метод является вариацией полного перебора с отсевом подмножеств допустимых решений, заведомо не содержащих оптимальных решений.

Метод ветвей и границ впервые предложили в 1960 году Аилсой Ленд и Элисон Дойг для решения задач целочисленного программирования .

Общая идея метода может быть описана на примере поиска минимума функции на множестве допустимых значений переменной . Функция и переменная могут быть произвольной природы. Для метода ветвей и границ необходимы две процедуры: ветвление и нахождение оценок (границ).

Процедура ветвления состоит в разбиении множества допустимых значений переменной на подобласти (подмножества) меньших размеров. Процедуру можно рекурсивно применять к подобластям. Полученные подобласти образуют дерево , называемое деревом поиска или деревом ветвей и границ. Узлами этого дерева являются построенные подобласти (подмножества множества значений переменной ).


Процедура нахождения оценок заключается в поиске верхних и нижних границ для решения задачи на подобласти допустимых значений переменной .

В основе метода ветвей и границ лежит следующая идея: если нижняя граница значений функции на подобласти дерева поиска больше, чем верхняя граница на какой-либо ранее просмотренной подобласти , то может быть исключена из дальнейшего рассмотрения (правило отсева). Обычно минимальную из полученных верхних оценок записывают в глобальную переменную ; любой узел дерева поиска, нижняя граница которого больше значения , может быть исключён из дальнейшего рассмотрения.

Если нижняя граница для узла дерева совпадает с верхней границей, то это значение является минимумом функции и достигается на соответствующей подобласти.

Метод используется для решения некоторых NP-полных задач, в том числе задачи коммивояжёра и задачи о ранце .

г. Усть -Каменогорск
2013 год.
План
1.Методология и технология программирования.
2. Императивное программирование.
2.1. Модульное программирование.
2.2. Структурное программирование.
3. Метод объектно -ориентированного программирования.
4. Логическое программирование.
5. Функциональное программирование.
1. Методология и технология программирования.
Программа — завершенный продукт, пригодный для запуска своим автором на системе,на которой он был разработан.
Программный продукт — программа, которую любой человек может запускать, тестировать, исправлять и развивать. Такая программа должна быть написана в обобщенном стиле, тщательно оттестирована и сопровождена подробной документацией. (С учетом модной в настоящее время концепции авторских прав, здесь необходимо уточнить – любой человек, имеющий разрешение работать сисходными текстами программ)
Программный комплекс — набор взаимодействующих программ, согласованных по функциям и форматам, точно определенным интерфейсам, и вкупе составляющих полное средство для решения больших задач.
Жизненный цикл программного обеспечения – это весь период его разработки и эксплуатации, начиная с момента возникновения замысла и заканчивая прекращением ее использования.Методология программирования – совокупность методов, применимых в жизненном цикле программного обеспечения и объединенных общим философским подходом.
Существует четыре широко известных в настоящее время методологии программирования – императивного, объектно -ориентированного, логического, функционального.
Технология программирования изучает технологические процессы и порядок их прохождения – стадии(с использованием знаний, методов и средств).
Процесс — совокупность взаимосвязанных действий, преобразующих некоторые входные данные в выходные. Процессы состоят из набора действий, а каждое действие из набора задач. Вертикальное измерение отражает статические аспекты процессов и оперирует такими понятиями, как рабочие процессы, действия, задачи, результаты деятельности и исполнители.Стадия — часть действий по созданию программного обеспечения, ограниченная некоторыми временными рамками и заканчивающаяся выпуском конкретного продукта, определяемого заданными для данной стадии требованиями. Стадии состоят из этапов, которые обычно имеют итерационный характер. Иногда стадии объединяют в более крупные временные рамки, называемые фазами. Итак, горизонтальное измерение представляет время,отражает динамические аспекты процессов и оперирует такими понятиями, как фазы, стадии, этапы, итерации и контрольные точки.
Технологический подход определяется спецификой комбинации стадий и процессов, ориентированной на разные классы программного обеспечения и на особенности коллектива разработчиков.

В классе можно определять элементы данных и функции со спецификатором static. В этом случае их можно рассматривать как глобальные переменные или функции в пределах класса, и доступны они не одному объекту, а разделяются между всем классом, не ассоциируются с отдельными представителями класса.

static int count; >

Для элементов, которые объявлены в открытой секции класса, вызов, например, будет выглядеть следующим образом:

Если элементы определены в закрытой секции, то такое обращение некорректно.

Если мы объявили такой элемент в закрытой секции класса, то мы должны определить функции для работы с этими элементами. Обращение к таким функциям выглядит так: Name::Add1();

1) Статические функции и элементы класса не ассоциируются с отдельными представителями класса. Обращение к ним производится выражением вида:

имя класса:: имя элемента

2) Им не передается указатель this, т.к. он ассоциируется с отдельным представителем класса.

3) Статические функции могут вызываться независимо от того, существует ли хотя бы один представитель класса.

4) Статические функции не могут быть виртуальными.

2. Виртуальные функции

Виртуальные функции – это функции-члены класса, вызов которых осуществляется во время выполнения программы (то есть динамически) по типу объекта, с которым она используется.

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

Объявление виртуальной функции в классе:

Отметим, что классы, включающие такие функции, играют особую роль в объектно-ориентированном программировании. Именно поэтому они носят специальное название – полиморфные.

Вернемся к упомянутому выше примеру с фигурами. Рассмотрим класс Point(производный от Location).

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

class Point: public Location

Point (int nx,int ny);

virtual void Show();

virtual void Hide();

virtual void Drag(int by);

void MoveTo (int nx ,int ny); >;

Виртуальными могут быть не любые функции, а только нестатические компонентные функции какого-либо класса. После того как функция определена как виртуальная, ее повторное определение в производном классе (с тем же самым прототипом) создает в этом классе новую виртуальную функцию, причем спецификатор virtual может не использоваться.

В производном классе нельзя определять функцию с тем же именем и с той же сигнатурой параметров, но с другим типом возвращаемого значения, чем у виртуальной функции базового класса. Это приводит к ошибке на этапе компиляции.

Если в производном классе ввести функцию с тем же именем и типом возвращаемого значения, что и виртуальная функция базового класса, но с другой сигнатурой параметров, то эта функция производного класса не будет виртуальной. В этом случае с помощью указателя на базовый класс при любом значении этого указателя выполняется обращение к функции базового класса (несмотря на спецификатор virtual и присутствие в производном классе похожей функции).

Рассмотрим, как будет выглядеть вызов виртуальной функции voidShow() в производном классе:

class Circle : public Point

Circle (int nx,int ny, int nr);

void Expand(int by);

Как мы видим, спецификатор virtual можно уже не указывать.

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

Все выше сказанное можно объединить в ПРАВИЛА:

1) не объявлять static;

2) Объявления виртуальных функций в производных классах должны иметь ту же сигнатуру, что и в базовом. Указывать спецификатор virtual в этом случае не обязательно.

3) Виртуальная функция должна быть обязательно определена или быть чистой виртуальной функцией.

Чистой виртуальной функцией называется компонентная функция, которая имеет следующее определение:

virtualтип имя_функции (список формальных параметров)=0;

В этой записи конструкция “=0” называется “чистый спецификатор”. Пример описания чистой виртуальной функции:

Чистая виртуальная функция в определении класса показывает, что ее определение откладывается до производных классов. Чистая виртуальная функция “ничего не делает” и недоступна для вызовов. Ее назначение – служить основой для подменяющих ее функций в производных классах и показывать, что данный класс абстрактный.

3. Абстрактные классы

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

Определять объекты абстрактного класса нельзя, но можно определять ссылку или указатель на абстрактный класс. Нельзя использовать абстрактный класс в качестве параметра функции. Производный от абстрактного класса также считается абстрактным, если в нем не определена хотя бы одна чистая виртуальная функция.

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

Механизм абстрактных классов разработан для представления общих понятий, которые в дальнейшем предполагается конкретизировать. Эти общие понятия обычно невозможно использовать непосредственно, но на их основе можно, как на базе, построить частные производные классы, пригодные для описания конкретных объектов.

Таким образом, механизм абстрактных классов используется при создании сложных иерархий наследования.

В качестве иллюстрации выше сказанного рассмотрим пример для расчета площади треугольника и прямоугольника:

  • Для учеников 1-11 классов и дошкольников
  • Бесплатные сертификаты учителям и участникам

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ

ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

Факультет физико –математический

ИСТОРИЙЧЕСКИЙ ЭКСКУРС В МЕТОДЫ ПРОГРАММИРОВАНИЯ

Автор работы_______________________________________О. В. Девятайкина

Направления подготовки 44.03.05 Педагогическое образование

Профиль Информатика. Математика

Руководитель работы: кандидат физико – математических наук, доцент____________________________________________Т. В. Кормилицына

А. Лавлейс составила первые программы для решения системы двух уравнений и вычисления чисел Бернулли по довольно сложному алгоритму и предположила, что со временем аналитическая машина будет сочинять музыкальные произведения, рисовать картины и использоваться в практической и научной деятельности. Время подтвердило ее правоту и точность прогнозов. Своими работами А. Лавлейс заложила теоретические основы программирования и по праву считается первым в мире программистом и основоположником научного программирования. Идеи Ч. Бэббиджа реализовал американский ученый Г. Холлерит, который с помощью построенной счетно –аналитической машины и перфокарт за три года обработал результаты переписи населения в США по состоянию на 1890г. В машине впервые было использовано электричество. В 1896 г. Холлеритом была основана фирма по выпуску вычислительных перфорационных машин и перфокарт.

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

Каждая методология характеризуется своим:

· философским подходом или основными принципами. Эти принципы, от которых зависит эффективность всей методологии, обычно можно кратко сформулировать и легко объяснить;

· согласованным множеством моделей методов, которые реализуют данную методологию;

· концепциями (понятиями), позволяющими более точно определить методы.

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

Можно проследить три пути возникновения методологий. Во –первых, они могут являться выражением практического опыта. Во –вторых, методологии могут происходить от одной из четырёх моделей алгоритма: абстрактная машина Тьюринга (императивное программирование), рекурсивные функции Гильберта и Аккермана (структурное программирование), лямбда –исчисление Чёрча (функциональное программирование), нормальные алгорифмы Маркова (логическое программирование). В –третьих, методологии можно объяснить через отображение одной из трёх структур языка моделирования на структуру языка программирования. Составными частями могут быть структура данных, структура управления и логика. Каждое из девяти отображений определяет либо методологию, либо достаточно серьёзный метод программирования.

Можно выделить основные 4 метода программирования:

Структурный метод программирования

Структурное программирование методология разработки программного обеспечения , в основе которой лежит представление программы в виде иерархической структуры блоков . Предложена в 70 –х годах XX в. Э.Дейкстрой, разработана и дополнена Н.Виртом.

Теорему сформулировали и доказали итальянские математики Коррадо Бём ( Corrado Böhm ) и Джузеппе Якопини (Giuseppe Jacopini). Они опубликовали её в 1965 году на итальянском языке и в 1966 году на английском. Наряду с теоремой, в статье Бёма и Якопини описывались методы преобразования неструктурных алгоритмов в структурные на примере созданного Бёмом языка программирования P′′ . Язык P′′ – первый полный по Тьюрингу язык программирования без оператора goto .

Теорема о структурном программировании

Теорема Бёма –Якопини написана сложным языком и в непривычных обозначениях. Если использовать современную терминологию и обозначения, она примет вид:

· любая программа, заданная в виде блок –схемы, может быть представлена с помощью трех управляющих структур:

· последовательность – обозначается: f THEN g,

· ветвление – обозначается: IF p THEN f ELSE g,

· цикл – обозначается: WHILE p DO f,

где f, g – блок –схемы с одним входом и одним выходом,

· THEN, IF, ELSE, WHILE, DO – ключевые слова .

Пояснение. Формула f THEN g означает следующее: сначала выполняется программа f, затем выполняется программа g.

Метод модульного программирования

Модульное программирование – это организация программы как совокупности небольших независимых блоков, называемых модулями, структура и поведение которых подчиняются определенным правилам. Использование модульного программирования позволяет упростить тестирование программы и обнаружение ошибок. Аппаратно –зависимые подзадачи могут быть строго отделены от других подзадач, что улучшает мобильность создаваемых программ.

Таким образом, Парнас первым выдвинул концепцию скрытия информации ( англ. information hiding ) в программировании. Однако существовавшие в языках 70 –х годов только такие синтаксические конструкции, как процедура и функция, не могли обеспечить надежного скрытия информации, из –за повсеместного применения глобальных переменных. Решить эту проблему можно было только разработав новую синтаксическую конструкцию, которая не подвержена влиянию глобальных переменных. Такая конструкция была создана и названа модулем. Изначально предполагалось, что при реализации сложных программных комплексов модуль должен использоваться наравне с процедурами и функциями как конструкция, объединяющая и надежно скрывающая детали реализации определенной подзадачи. Таким образом, количество модулей в комплексе должно определяться декомпозицией поставленной задачи на независимые подзадачи. В предельном случае модуль может использоваться даже для заключения в него всего лишь одной процедуры, если необходимо, чтобы выполняемое ею локальное действие было гарантировано независимым от влияния других частей программы при любых изменениях.

Метод объектно –ориентированное программирования

Объе́ктно –ориенти́рованное программи́рование – методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определённого класса, а классы образуют иерархию наследования.

ООП возникло в результате развития идеологии процедурного программирования, где данные и подпрограммы (процедуры, функции) их обработки формально не связаны. Для дальнейшего развития объектно-ориентированного программирования часто большое значение имеют понятия события (так называемое событийно-ориентированное программирование) и компонента (компонентное программирование, КОП).

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

Основные идеи объектно – ориентированного подхода опираются на следующие положения:

· Программа представляет собой модель некоторого реального процесса, части реального мира.

· Модель реального мира или его части может быть описана как совокупность взаимодействующих между собой объектов.

· Объект описывается набором параметров, значения которых определяют состояние объекта, и набором операций (действий), которые может выполнять объект.

· Объекты, описанные одним и тем же набором параметров и способные выполнять один и тот же набор действий представляют собой класс однотипных объектов.

В основу ООП положены следующие принципы:

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

Ограничение доступа – сокрытие отдельных элементов реализации абстракции, не затрагивающих существенных характеристик ее как целого.

Необходимость ограничения доступа предполагает разграничение двух частей в описании абстракции:

· интерфейс – совокупность доступных извне элементов реализации абстракции (основные характеристики состояния и поведения);

· реализация – совокупность недоступных извне элементов реализации абстракции (внутренняя организация абстракции и механизмы реализации ее поведения).

Ограничение доступа в ООП позволяет разработчику:

· выполнять конструирование системы поэтапно, не отвлекаясь на особенности реализации используемых абстракций;

· легко модифицировать реализацию отдельных объектов, что в правильно организованной системе не потребует изменения других объектов.

Модульность – принцип разработки программной системы, предполагающий реализацию ее в виде отдельных частей (модулей). При выполнении декомпозиции системы на модули желательно объединять логически связанные части, по возможности обеспечивая сокращение количества внешних связей между модулями.

Иерархия – ранжированная или упорядоченная система абстракций. Принцип иерархичности предполагает использование иерархий при разработке программных систем.

В ООП используются два вида иерархии:

Один из важнейших механизмов ООП – наследование свойств в иерархии общее/частное. Наследование – такое соотношение между абстракциями, когда одна из них использует структурную или функциональную часть другой или нескольких других абстракций (соответственно простое и множественное наследование).

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

Использование принципа типизации обеспечивает:

· раннее обнаружение ошибок, связанных с недопустимыми операциями над программными объектами (ошибки обнаруживаются на этапе компиляции программы при проверке допустимости выполнения данной операции над программным объектом);

· возможность генерации более эффективного кода.

Тип может связываться с программным объектом статически (тип объекта определен на этапе компиляции – раннее связывание) и динамически (тип объекта определяется только во время выполнения программы – позднее связывание). Реализация позднего связывания в языке программирования позволяет создавать переменные –указатели на объекты, принадлежащие различным классам (полиморфные объекты), что существенно расширяет возможности языка.

Параллелизм – свойство нескольких абстракций одновременно находиться в активном состоянии, т.е. выполнять некоторые операции.

Устойчивость – свойство абстракции существовать во времени независимо от процесса, породившего данный программный объект, и/или в пространстве, перемещаясь из адресного пространства, в котором он был создан.

Все указанные выше принципы в той или иной степени реализованы в различных версиях объектно – ориентированных языков.

Язык считается объектно – ориентированным, если в нем реализованы первые четыре из рассмотренных семи принципов.

К языкам ООП относятся:

Объектно-ориентированные системы визуального проектирования:

Метод компонентного программирования

Мощным толчком в развитии новых направлений в программировании послужило объединение компьютерных и телекоммуникационных технологий. За рубежом в 1960 –х гг. появились первые вычислительные сети, с которых началась техническая и технологическая революция, т. к. была предпринята попытка объединить технологию сбора, хранения, передачи и обработки информации на ЭВМ с техникой связи. В Европе в те годы были созданы международные сети EIN и Евро –нет, затем появились национальные сети. В 1972 г. в Вене была создана сеть МИПСА, к которой присоединились в 1979 г. 17 стран Европы, СССР, США, Канада и Япония. В 1980 –х гг. в нашей стране была создана система телеобработки статистической информации, обслуживающая государственные и республиканские органы статистики.

Читайте также: