Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Классификация языков программирования высокого уровня (Основные сведения о программировании)

Содержание:

ВВЕДЕНИЕ

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

Предмет исследования – классификация языков программирования высокого уровня.

Объект исследования – языки программирования высокого уровня.

Цель работы – анализ и классификация языков программирования высокого уровня.

Для достижения поставленной цели необходимо решить следующие задачи:

1. Рассмотреть основные понятия языков программирования.

2. Описать последовательность разработки программ.

3. Рассмотреть требования к качеству программных продуктов и методы их контроля.

4. Привести классификации языков программирования высокого уровня

5. Обобщить знания по особенностям современных языков высокого уровня.

Структура работы. Курсовая работа выполнена на 42 листах, содержит 22 рисунка.

ГЛАВА 1. ЯЗЫКИ ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ

1.1. Основные сведения о программировании

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

Рисунок 1– Связь основных понятий программирования

Алгоритм — заранее заданное понятное и точное предписание возможному исполнителю совершить определенную последовательность действий для получения решения задачи за конечное число шагов [6][1].

Алгоритм, записанный на формальном языке, называется программой [14][2]. Само понятие алгоритма часто идентифицируется с его записью, так что слово "алгоритм" и "программа" - почти синонимы. Небольшое отличие состоит в том, что под алгоритмом понимают основную идею его построения, а программа всегда связана с записью алгоритма на конкретном формальном языке.

Пользователь - лицо, заинтересованное в решении некоторых проблем, посредством использования компьютерной техники. Пользователей компьютеров принято делить на следующие [1][3] группы:

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

Термин "задача" является единицей операции программирования компьютерной системы, требующей выделения вычислительных ресурсов. [16][4].

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

1.2. Процесс создания программ

Процесс создания программ может быть представлен в виде последовательности следующих действий (рис. 2), основные этапы важные для разработчика, следующие [4][6]:

  • Постановка задачи;
  • Алгоритмическое решение проблемы;
  • Программирование или кодирование.

Рисунок 2 - Последовательность разработки [20][7]

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

Алгоритмическое решение проблемы [5][9] - точный набор инструкций, описывающих процедуры исполнителю для достижения результата решения задачи за конечное время. Некоторые инструкции должны выполняться строго после завершения инструкции, от которых они зависят. Независимые инструкции или инструкции, которые стали независимыми в связи с завершением инструкции, от которых они зависят, могут быть выполнены в любом порядке, или параллельно.

Программирование [10][10] - теоретические и практические мероприятия, связанные с созданием программ.

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

Спиральная модель[2][11] является классическим примером применения стратегии эволюционного проектирования программы. Модель основана на лучших свойствах классического жизненного цикла и прототипировани. Модель определяет четыре действия, представленные четырьмя квадрантами спирали (рис. 3)

  1. Планирование - определение целей, вариантов и ограничений.
  2. Анализ рисков - анализ рисков и выбор рисков.
  3. Проектирование - это разработка продукта следующего уровня.
  4. Оценка - оценка клиентом текущих результатов проекта.

Спиральная модель является наиболее распространенной в настоящее время. Наиболее известными из ее вариантов являются RUP (Rational Unified Process) от Rational и MSF (Microsoft Solution Framework). Предполагается, что создание системы должно выполняться итеративно, перемещаясь по спирали и проходя через те же этапы, чтобы уточнить характеристики будущего продукта на каждом шагу.

Рисунок 3 – Этапы разработки программного обеспечения [20][12]

1.3. Языки программирования

Для взаимодействия человека и компьютера, а именно для понимания формальной системы знаков (письма, буквы и слова) необходим язык программирования, предназначенный для записи исполняемых компьютерных программ. [3][13]

Язык программирования в современном понимании, представляет собой набор правил, которые влияют на бэкэнд и фронтэнд [14][14] программы (Рисунок 4),

Рисунок 4 - Отличие бэкэнда и фронтэнда программы

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

        • Лексических правил языка [19][15] (Рисунок 5). Любой язык программирования имеет похожие лексические единицы (или лексемы). К лексемам [7][16] относят: идентификаторы, ключевые слова языка программирования высокого уровня, литералы, операторы и разделители;

Рисунок 5 – Лексические правила языка программирования

        • Синтаксических правил языка [8][17]. Правил построения сообщений в этой системе (рис. 6);

Рисунок 6 – Синтаксическое правило для языка Паскаль

        • Семантических правил языка [13][18]. Система правил определения поведения отдельных языковых конструкций. Семантика определяет смысловое значение предложений алгоритмического языка.

1.4. Качество программ. Методы контроля качества программ

Качество программного обеспечения определяется в стандарте ISO 9126 [14][19] как вся совокупность его характеристик, относящихся к возможности удовлетворять высказанные или подразумеваемые потребности всех заинтересованных лиц. (рис. 7)[16]

Рисунок 7 - Стандарт ISO 9126

    • Функциональность [11][20] (functionality) – свойство программы решать в определенных условиях задачи, необходимые пользователям.
    • Надежность [11][21] (reliability)- свойство программы поддерживать определенный уровень работоспособности в заданных условиях.
    • Удобство использования (usability) - свойство программы быть удобной в обучении и использовании.
    • Производительность (efficiency) - свойство программы обеспечивать необходимый уровень работоспособности.
    • Удобство сопровождения (maintainability) - свойство программы быть удобной в сопровождении.
    • Переносимость (portability). - сохранение работоспособности при переносе из одного окружения в другое.
    • Верификация – это возможность проверить, что программное обеспечение было разработано в соответствии с требованиями;
    • Валидация — проверяет, что продукт правилен, т.е. он удовлетворяет потребностям заказчиков, т.е. разработан табличный редактор, а не калькулятор. [9][22]

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

Выводы по главе 1

1. Язык программирования в современном понимании, представляет собой набор правил, которые влияют на бэкэнд и фронтэнд программы.

2. Все правила языка программирования основаны на использовании следующих правил:

    • Лексических
    • Синтаксических
    • Семантических

3. Выделяют следующие модели процесса разработки программных систем

  • Водопадная (каскадная, последовательная) модель
  • Итерационная модель
  • Спиральная модель

4. Основными характеристиками качества программ являются следующие:

  • Функциональность
  • Надежность
  • Производительность

5. Контроль качества программ возможен с помощью процесса верификации и валидации

ГЛАВА 2. КЛАССИФИКАЦИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ

Классификация языков программирования может различаться в зависимости от точки зрения на тот или иной вопрос. Вначале рассмотрим эволюцию и классификацию языков программирования с исторической точки зрения.

2.1. Классификация языков программирования с исторической точки зрения

Около двухсот лет назад, в 20-х годах XIX века, математик Чарльз Бэббидж, высказал революционную для своего времени идею, приведшую к последующему созданию автоматических вычислительных машин. Занимаясь выявлением и исправлением ошибок в логарифмических таблицах, Бэббидж пришел к выводу, что любые сложные математические задачи могут быть разбиты на шаги, которые сводятся к простым операциям сложения и вычитания. Такая последовательность шагов, или порядок действий, может быть записана в виде программы, для последующей автоматической реализации вычислений. Бэббидж использовал для записи своих программ (последовательности шагов) перфокарты - метод, изначально разработанный французским изобретателем Жаккаром для управления ткацкими станками. Несмотря на то, что метод использованный Бэббиджем, технически не имеет ничего общего с современными принципами хранения и исполнения программ, сама идея осталась прежней, а именно: любую задачу можно раздробить на несколько упрощенных задач и свести решение к выполнению конечного числа простых операций. Этот момент можно считать начальной точкой отсчета в истории языков программирования.

Со времени создания ткацких станков Жаккара и программ Бэббиджа, человечество придумало более восьми тысяч языков программирования

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

Физический принцип работы электронных компонентов ЭВМ таков, что компьютер может оперировать только бинарными состояниями электронных цепей (напряжение в цепи либо есть, либо отсутствует). Такая последовательность перепадов напряжения, записанная в виде нулей и единиц, представляет собой язык самого низкого уровня, или машинный код. В самом начале эволюции ЭВМ, человек должен был составлять программы для исполнения на понятном компьютеру языке, в виде машинного кода, и в то время, любая программа для ЭВМ выглядела как последовательность нулей и единиц. С помощью машинного кода, программист мог задавать команды, напрямую оперируя ячейками памяти процессора, и полностью используя возможности машины. Суть этого языка — набор кодов, обязательно понятных процессору, к которому обращаются. «Слова» этого языка называются инструкциями, каждая из которых представляет собой одно элементарное действие для центрального процессора, как, например, считывание информации из одной ячейки памяти. Лишь при понимании устройства компьютерного оборудования и знания этих целочисленных кодов можно было непосредственно управлять процессором.

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

Довольно скоро стало понятно, что процесс формирования машинного кода можно автоматизировать и облегчить. Уже в 1950 году для записи программ стали применять мнемонический язык. Этот язык, получивший название Ассемблер (от англ. assembler «сборщик»), позволил представить машинный код в более удобной для программиста форме: для обозначения команд и объектов, над которыми эти команды выполняются, вместо двоичных кодов использовались буквы или сокращенные слова, которые отражали суть команды. Например, на языке Ассемблер команда сложения двух чисел обозначается словом ADD, тогда как ее машинный код может быть таким: 000010.

Ассемблер, как и машинный код, является языком низкого уровня, который ориентирован на конкретный тип процессора и учитывает его особенности. Его операторы близки к машинному коду, и ориентированы на непосредственные инструкции процессору. Появление ассемблера значительно облегчило жизнь программистов, так как теперь, вместо маловразумительной записи, состоящей из рябящих в глазах нулей и единиц, они могли записывать программы мнемоническими командами, состоящими из символов, приближенных к обычному человеческому языку. Для того времени этот язык был новшеством и пользовался популярностью, так как позволял писать программы небольшого размера, и был гораздо удобнее в использовании, чем «голый» машинный код.

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

В 1954 году была начата разработка принципиально нового языка высокого уровня, лишенного недостатков низкоуровневых машинных кодов и ассемблера, получившего название Фортран (англ. FORTRAN — FORmula TRANslator). К разработке такого языка подтолкнули новые возможности внедрённого в 1954 году компьютера IBM 704, в котором на аппаратном уровне были реализованы индексная адресация и операции с плавающей точкой.

Программы, созданные на Фортране, были ближе к человеческому языку, чем к языку машинных кодов, и не могли выполняться непосредственно на аппаратном уровне ЭВМ, поэтому понадобилось создание транслятора («переводчика») с языка понятного человеку, на язык понятный процессору. Транслятор (компилятор) для Фортрана появился в апреле 1957 года.

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

Особенностью появившихся императивных языков высокого уровня было следующее [15][23]:

• Одна инструкция (оператор) высокого уровня, соответствовала последовательности ряда команд низкого уровня.

  • Возможность повторного использования ранее записанных программных блоков. Эти блоки называются функциями или процедурами [19][24].
  • Снижение зависимости от аппаратной архитектуры ЭВМ

Характерные примеры императивных языков программирования:

  • Алгол,
  • Паскаль,
  • COBOL,

В 60-е годы[6][25] появляется декларативный подход к программированию. Программа больше не является набором команд и описанием действий, которые необходимо выполнить. Программист работает над набором инструкций и абстрактных понятий, которые могут быть обобщены. [9, с.67]

Конкретные примеры декларативных языков программирования:

  • LISP,
  • Haskell,
  • SML,
  • Пролог.

В 70-е годы появились логические языки программирования. Суть логического программирования [10][26]:

• программа представляет собой набор правил или логических операторов;

• используется логика причинно-следственных связей.

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

Конкретными примерами языков логического программирования являются: [19][27]

  • Пролог
  • Mercury

В 80-е годы появились объектно-ориентированные языки программирования. Особенностью этих языков было:

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

Конкретные примеры объектно-ориентированного языка программирования: [6][28]

  • C ++
  • C ++ / CLI
  • Ява
  • JavaScript
  • С
  • С#

2.2. Классификация языков программирования с точки зрения основных характеристик

Языки программирования могут быть классифицированы по различным критериям. [16][29]. Пример классификации языков программирования приведен на рисунке 8.

Рассмотрим наиболее важные характеристики языков программирования:

      1. - по степени ориентации на возможности ЭВМ [4][30]:
        • машинно-зависимые - Некоторые языки ориентированы на низкий уровень, конкретной вычислительной машины;
        • машинно-независимые - предпочитают использовать абстрактные модели вычислений.

Рисунок 8– Общая классификация языков программирования

      1. - по типу решаемых задач [4][31]:
        • языки системного программирования – предназначены для написания системного кода программ;
        • языки прикладного программирования – ориентированы на решения задач в определенной области. Язык HTML, например, был разработан специально для web-технологий;
      2. - по степени детализации алгоритма [6][32]:
        • языки низкого уровня – предназначены для написания высокопроизводительного кода, ориентированного на конкретное устройство;
        • языки высокого уровня [12][33] – языки ориентированные на использование функций, модулей и классов;
        • языки сверхвысокого уровня [12][34] - с очень высоким уровнем абстракции. Группа языков, используемых для быстрого прототипирования.

Рисунок 9 – Классификация по степени детализации

      1. - по способу получения результата (рис. 10) [6][35]:
        • процедурные - сборка модулей на основе функций;
        • декларативные (функциональные и логические) - ближе по духу к математике, что позволяет описать желаемые свойства, не обозначая конкретные шаги для их достижения.;
        • объектно-ориентированные [15][36] – основные понятия: класс, наследования, полиморфизм, методы, абстрактные типы данных;
      2. - по возможности создания новых типов данных и операций:
        • расширяемые;
        • нерасширяемые;

Рисунок 10 – Классификация по способу получения результата

      1. – по модели трансляции (Рисунок 11) [6][37]

Программа, написанная на языке высокого уровня [15][38], перед исполнением должна быть преобразована в программу на языке машины. Этот процесс называется трансляцией или компиляцией. Согласно типу выходных данных, существуют два основных типа трансляторов:

Рисунок 11 – Классификация по модели трансляции [18][39]

  • Компиляция окончательного исполняемого кода [18][40];
  • Компилирование интерпретируемого кода, для которого требуется дополнительное программное обеспечение.

Конечный исполняемый код - это приложения, реализованные как EXE-файлы, DLL-библиотеки [20][41], COM-компоненты. Интерпретируемый код включает в себя байт-код JAVA-программ, исполняемых виртуальной машиной JVM.

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

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

Во время трансляции выполняется анализ исходной программы, а затем синтез исполнимой формы этой программы.

      1. - по степени ориентации на класс задач [6][42]:
        • проблемно-ориентированные – решают задачи в узком классе задач;
        • универсальные языки – могут использоваться для широкого класса задач;

2.3. Краткая характеристика известных языков программирования высокого уровня

Как уже говорилось выше, на текущий момент известно более восьми тысяч языков программирования. Рассмотрим некоторые языки, получившие наибольшее распространение (рис. 12).

1.Бейсик (Beginner's All-purpose Symbolic Instruction Code) [18][43]– данный язык популярен среди начинающих изучать программирование. Используется при написании простых программ.

2. Паскаль (Pascal)[1][44] – используется в школьном и университетском изучении программирования. Потомками языка Паскаль являются следующие языки: Модула, Ада, Дельфи.

Рисунок 12 - Доля рынка языков программирования высокого уровня

3. Си (С) [20][45] – изначально был разработан для создания операционной системы и создания системного программного обеспечения. Язык С (читается как СИ) - сочетает в себе черты как языка высокого уровня, так и машинно-ориентированного языка, допуская программиста ко всем машинным ресурсам.

4. Си++ (С++) [20][46] - объектно-ориентированное расширение языка С. Сочетает достоинства объектно-ориентированного подхода и простоты языка С.

5. Delphi [7][47] - объектно-ориентированное расширение языка Паскаль. Достоинства: простой интерфейс для разработки, легкое взаимодействие с базами данных, поддержка разработки приложений для корпоративных сетей и сети Интернет.

6. Лисп (Lisp) - функциональный язык программирования. Работает со структурами данных в виде списка - организует эффективную обработку текстовой информации.

9. Пролог [4][48] - логический язык программирования высокого уровня. Пролог разработан специально для работы с базами данных знаний, основанных на фактах и правилах.

Существуют еще и специализированные языки программирования для Интернета:

1. HTML - язык гипертекстовой разметки. HTML прост и содержит элементарные команды организации ссылок, добавления рисунков и таблиц, форматирования текста, задания шрифтов и цветов.

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

Выводы по 2 главе

1. Различают различные поколения языков программирования, которые связаны с развитием науки и техники определенных лет.

2. Языки программирования высокого уровня классифицируются по следующим характеристикам:

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

3. Приведена краткая характеристика известных языков программирования высокого уровня

ГЛАВА 3. ОСОБЕННОСТИ СОВРЕМЕННЫХ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ

3.1. Объектно-ориентированная парадигма программирования

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

Появление первых компьютеров [6][49] ознаменовало новый этап в развитии компьютерных технологий. Казалось, что достаточно разработать последовательность элементарных действий, каждая из которых может быть преобразована в понятные компьютерные команды, и любая вычислительная задача будет решена. Эта идея долгое время доминировала над процессом разработки программного обеспечения.

Эта методология была основана на идее процедурного программирования [19][50]. Отправной точкой в этой методологии было понятие алгоритма. Алгоритм [5][51] - это способ решения вычислительных и других задач, описывающий последовательность действий, которые компьютер должен выполнять для достижения желаемой цели (рис. 13).

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

Рисунок 13– Процедурное программирование [6][52]

Дальнейшее увеличение количества программных систем способствовало новому взгляду на процесс разработки программного обеспечения и написанию кода, который стал известен как методология структурированного программирования [19][53] (Рисунок 14 14).

Рисунок 14 – Структурное программирование [19][54]

Во второй половине 1980-х годов появилась новая методология программирования, которая смогла решить все сложные проблемы (увеличение объемов кода, постоянное изменение требований клиентов, повышение надежности программного обеспечения). Он стал называться методологией объектно-ориентированного программирования (ООП) [11][55].

Прагматика необходима для разработки программных систем. При формулировании целей, связанных объектов и концепций реального мира, относящихся к создаваемой системе (рис. 15) в объектно-ориентированном подходе, эти объекты и концепции заменяются моделями, т.е. определенными формальными структурами [3][56].

Семантика (смысл программы с точки зрения ее производительности) и прагматика (смысл программы с точки зрения ее членов) [3].

Простота модели по отношению к реальному объекту, позволяет сделать ее формальной. Это упрощает разработку и реализацию программы на компьютере. [3][57]

Рисунок 15– Объектно-ориентированное программирование

Объектно-ориентированный подход [17][58] к программированию имеет следующие достоинства по отношению к разрабатываемому программному обеспечению:

  • Снижение сложности разработки;
  • повышение надежности продукта;
  • изоляция изменений;
  • повторное использование кода

3.2. Классы и объекты

Класс [15][59] - это программный элемент, который описывает абстрактный тип данных и его частичную или полную реализацию. Наряду с концепцией «объект», класс является ключевым понятием в ООП.

На практике объектно-ориентированное программирование сводится к созданию ряда классов [15][60] (рис. 16), включая интерфейс [3][61] их реализацию последующее использование.

Рисунок 16 – Описание класса

Графическое представление ряда классов и отношений между ними называется диаграммой классов [18][62] (рис. 17).

Рисунок 17 – Диаграмма классов

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

У класса определены две роли [15][64]:

  • модуль. Модульная конструкция [15][65] - основное свойство программных систем. Модульная конструкция - главное средство борьбы со сложностью системы.
  • тип данных - определяет реализацию абстракции данных, характеристику проблемной области, сущности реального мира.

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

Общий синтаксис описания класса предстает в следующем виде[18][66]:

[атрибуты][модификаторы]class имя_класса[:список_родителей]

{тело_класса}

Модификаторы класса могут быть:

  • abstract, sealed, необходимы для наследования,
  • private и protected - необходимы для вложенных классов.
  • public – доступны для всех.

В теле класса могут быть объявлены [3][67]:

  • конструкторы и деструкторы;
  • методы;
  • константы;
  • поля;
  • события;
  • классы (структуры, делегаты, интерфейсы, перечисления).

Под объектом в ООП - представляется отдельно реализуемая часть предметной области. Программа, состоит из объектов, взаимодействующих через передачу сообщений.

Объект [3][68] характеризуется характеристиками конкретных значений из списка всех возможных свойств данного объекта. Каждый объект, получив сообщение, обязан «отреагировать» на них определенным образом, выполнив определенные действия для сообщения.

Объекты отображаются на диаграмме объектов [15][69] (рис. 18)

Рисунок 18 – Диаграмма объектов

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

Возможные операции над объектами (рис. 19) [4][70]:

  • создание – первоначальное объявление объекта;
  • модификация – изменение объекта [4][71];
  • уничтожение – удаление объекта из памяти;
  • выбор - определения состояния объекта;
  • итерация - способность использовать содержимое объекта по частям в определенной последовательности.

Рисунок 19 - - Типы операций над объектом

3.3. Наследование и полиморфизм

Основные средства разработки классов [16][72]

Наследование. (рис. 20) Базовый класс, часто называют родителем, а производный - потомком. Механизм наследования [2][73] обеспечивает классу-потомку возможность использования полей и методов одного или нескольких родительских классов.

Рисунок 20- Иерархия классов при различных видах наследования [2][74]

Простой полиморфизм (Рисунок 21). Создавая иерархии классов можно обнаружить, что некоторые характеристики объектов, сохраняя название, изменяются, по сути [8][75]. Полиморфизм называют простым, а методы, имеющие одинаковое название - статически полиморфными методами. Объединение полиморфных методов [16][76] с одним именем для иерархии классов образует единый полиморфный метод иерархии.

Рисунок 21 - Полиморфизм

3.4. События

Каждый объект является экземпляром класса [16][77]. Класс определяет свойства и поведение его экземпляров. Методы класса определяют поведение объектов, свойств, их состояние. Все объекты имеют одинаковые методы и, следовательно, ведут себя одинаково.

Одним из самых известных способов задания поведения класса является наследование. Второй способ задания поведения класса - это механизм событий. Классы, помимо свойств и методов, могут иметь события [13][78].

Событие - это особое состояние, в котором может быть объект класса. Кнопка может быть нажата - событие сlick, документ может быть закрыт - событие сlose и т.д.

Интерфейс и многие другие программные объекты имеют стандартный набор предопределенных событий. Класс, в котором есть событие будет содержать следующие пункты: [12][79]

  • объявленное событие в классе;
  • зажигание события в соответствующее время, передача обработчику, необходимых аргументов.
  • анализ события. (рис. 22)

Рисунок 22- Взаимодействие объектов. Посылка и получение сообщения о событии

Обработчик события [12][80] - это обычная процедура с аргументами. Сообщение, посылаемое при зажигании события, является аналогом вызова процедуры. Объявление события синтаксически задает сигнатуру процедуры.

Причины возникновения события могут быть разными[15][81]. Одно и то же событие будет зажигаться в разных методах класса в тот момент, когда возникнет одна из причин появления события. Поскольку действия по включению могут повторяться, полезно в состав методов класса добавить защищенную процедуру, включающую событие. Даже если событие зажигается только в одной точке, написание такой процедуры считается признаком хорошего стиля.

Выводы по главе 3

1. Объектно-ориентированный подход, используемый в современных языках программирования высокого уровня имеет следующие достоинства:

  • Снижение сложности разработки;
  • повышение надежности продукта;
  • изоляция изменений;
  • повторное использование кода.

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

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

4. Основные средства разработки классов:

  • наследование.
  • простой полиморфизм
  • механизм событий.

ЗАКЛЮЧЕНИЕ

В работе рассмотрены основные теоретические сведения о языках программирования высокого уровня.

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

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

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

  1. Айра П Объектно-ориентированное программирование на Delphi Бином, Невский Диалект, 2011.
  2. Антони С Освой самостоятельно объектно-ориентированное программирование за 21 день, Вильямс, 2011г.- 646 С.
  3. Бадд Т. Объектно-ориентированное программирование в действии: Пер. с англ. СПб.: Питер, 2013. 464 с,
  4. Бентли Дж. Жемчужины программирования. 2-е изд. – СПб.: Питер, 20013. -272 с.
  5. Вирт Н. Алгоритмы и структуры данных = Algoritms and data structure. — М.: Мир, 2012. — 360 с..
  6. Виснадул Б.Д Технология разработки программного обеспечения: учебное пособие / Виснадул Б.Д, Гагарина Л.Г., Кокорева Е.В. //М.: ИД «ФОРУМ»: ИНФРА-М., 2009. – 400 с
  7. Дарахвелидзе П.Г. Программирование в Delphi 7. - СпБ.: BHV - Санкт - Петербург, 2015. - 784 с.
  8. Джосьютис Н. С++. Стандартная библиотека. Для профессионалов. СПб.: Питер, 2011.-736с.
  9. Дэн К Объектно-ориентированное программирование Delphi Пер. с англ. СПб.: Питер, 2011. 464 с.
  10. Калямин В.В Технологии программирования. Компонентный подход / Калямин В.В //ИНТУИТ.РУ, Бином. Лаборатория знаний, 2013
  11. Камлеев Н.Ю. Объектно-ориентированное программирование: Солон, Библиотека профессионала – М.: Финансы и статистика 2011 г. . – 272 с
  12. Кузнецов М. В, Объектно-ориентированное программирование на PHP (+ CD-ROM) Серия: Профессиональное программирование: BHV-Санкт-Петербург , 2012 - 608 С.
  13. Лафоре Р. Объектно-ориентированное программирование на Delphi / 4-е издание : СПб.: Питер, 2014. 464 с
  14. Макконнелл С. Совершенный код. Мастер класс / Пер. с англ. — М. : Издательство «Русская редакция», 2014. — 896 стр. : ил.
  15. Метт В Объектно-ориентированное мышление. Пер. с англ. СПб.: Питер, 2012. 464 с.
  16. Орлов С.А. Технологии разработки программного обеспечения. Учебник для Вузов СПб.: Питер, 2012. – 463 с
  17. Пугачев Е.К. Объектно-ориентированное программирование: Учеб. для вузов/ Под ред. Г.С. Ивановой. - М.: Изд-во МГТУ им. Н.Э. Баумана, 2011. - 320 с , ил. (Сер. Информатика в техническом университете).
  18. Симдянов И. В., Программирование. Ступени успешной карьеры. / Симдянов И. В., Кузнецов М. В. // - БХВ-Петербург, 2012. – 320 с.
  19. ХьюзДэс.,. Структурный подход к программированию: Пер. с англ. М.: Мир, 2012. 278 с.
  20. Элджер Дж. С++. Библиотека программиста. –СПб.: Питер, 2011.-320 с.
  1. Виснадул Б.Д Технология разработки программного обеспечения: учебное пособие / Виснадул Б.Д, Гагарина Л.Г., Кокорева Е.В. //М.: ИД «ФОРУМ»: ИНФРА-М., 2009. – 400 с

  2. Макконнелл С. Совершенный код. Мастер класс / Пер. с англ. — М. : Издательство «Русская редакция», 2014. — 896 стр. : ил.

  3. Айра П Объектно-ориентированное программирование на Delphi Бином, Невский Диалект, 2011.

  4. Орлов С.А. Технологии разработки программного обеспечения. Учебник для Вузов СПб.: Питер, 2012. – 463 с

  5. Симдянов И. В., Программирование. Ступени успешной карьеры. / Симдянов И. В., Кузнецов М. В. // - БХВ-Петербург, 2012. – 320 с.

  6. Бентли Дж. Жемчужины программирования. 2-е изд. – СПб.: Питер, 20013. -272 с.

  7. Элджер Дж. С++. Библиотека программиста. –СПб.: Питер, 2011.-320 с.

  8. Пугачев Е.К. Объектно-ориентированное программирование: Учеб. для вузов/ Под ред. Г.С. Ивановой. - М.: Изд-во МГТУ им. Н.Э. Баумана, 2011. - 320 с , ил. (Сер. Информатика в техническом университете).

  9. Вирт Н. Алгоритмы и структуры данных = Algoritms and data structure. — М.: Мир, 2012. — 360 с..

  10. Калямин В.В Технологии программирования. Компонентный подход / Калямин В.В //ИНТУИТ.РУ, Бином. Лаборатория знаний, 2013

  11. Антони С Освой самостоятельно объектно-ориентированное программирование за 21 день, Вильямс, 2011г.- 646 С.

  12. Элджер Дж. С++. Библиотека программиста. –СПб.: Питер, 2011.-320 с.

  13. Бадд Т. Объектно-ориентированное программирование в действии: Пер. с англ. СПб.: Питер, 2013. 464 с,

  14. Макконнелл С. Совершенный код. Мастер класс / Пер. с англ. — М. : Издательство «Русская редакция», 2014. — 896 стр. : ил.

  15. ХьюзДэс.,. Структурный подход к программированию: Пер. с англ. М.: Мир, 2012. 278 с.

  16. Дарахвелидзе П.Г. Программирование в Delphi 7. - СпБ.: BHV - Санкт - Петербург, 2015. - 784 с.

  17. Джосьютис Н. С++. Стандартная библиотека. Для профессионалов. СПб.: Питер, 2011.-736с.

  18. Лафоре Р. Объектно-ориентированное программирование на Delphi / 4-е издание : СПб.: Питер, 2014. 464 с

  19. Макконнелл С. Совершенный код. Мастер класс / Пер. с англ. — М. : Издательство «Русская редакция», 2014. — 896 стр. : ил.

  20. Камлеев Н.Ю. Объектно-ориентированное программирование: Солон, Библиотека профессионала – М.: Финансы и статистика 2011 г. . – 272 с

  21. Камлеев Н.Ю. Объектно-ориентированное программирование: Солон, Библиотека профессионала – М.: Финансы и статистика 2011 г. . – 272 с

  22. Дэн К Объектно-ориентированное программирование Delphi Пер. с англ. СПб.: Питер, 2011. 464 с.

  23. Метт В Объектно-ориентированное мышление. Пер. с англ. СПб.: Питер, 2012. 464 с.

  24. ХьюзДэс.,. Структурный подход к программированию: Пер. с англ. М.: Мир, 2012. 278 с.

  25. Виснадул Б.Д Технология разработки программного обеспечения: учебное пособие / Виснадул Б.Д, Гагарина Л.Г., Кокорева Е.В. //М.: ИД «ФОРУМ»: ИНФРА-М., 2009. – 400 с

  26. Калямин В.В Технологии программирования. Компонентный подход / Калямин В.В //ИНТУИТ.РУ, Бином. Лаборатория знаний, 2013

  27. ХьюзДэс.,. Структурный подход к программированию: Пер. с англ. М.: Мир, 2012. 278 с.

  28. Виснадул Б.Д Технология разработки программного обеспечения: учебное пособие / Виснадул Б.Д, Гагарина Л.Г., Кокорева Е.В. //М.: ИД «ФОРУМ»: ИНФРА-М., 2009. – 400 с

  29. Орлов С.А. Технологии разработки программного обеспечения. Учебник для Вузов СПб.: Питер, 2012. – 463 с

  30. Бентли Дж. Жемчужины программирования. 2-е изд. – СПб.: Питер, 20013. -272 с.

  31. Бентли Дж. Жемчужины программирования. 2-е изд. – СПб.: Питер, 20013. -272 с.

  32. Виснадул Б.Д Технология разработки программного обеспечения: учебное пособие / Виснадул Б.Д, Гагарина Л.Г., Кокорева Е.В. //М.: ИД «ФОРУМ»: ИНФРА-М., 2009. – 400 с

  33. Кузнецов М. В, Объектно-ориентированное программирование на PHP (+ CD-ROM) Серия: Профессиональное программирование: BHV-Санкт-Петербург , 2012 - 608 С.

  34. Кузнецов М. В, Объектно-ориентированное программирование на PHP (+ CD-ROM) Серия: Профессиональное программирование: BHV-Санкт-Петербург , 2012 - 608 С.

  35. Виснадул Б.Д Технология разработки программного обеспечения: учебное пособие / Виснадул Б.Д, Гагарина Л.Г., Кокорева Е.В. //М.: ИД «ФОРУМ»: ИНФРА-М., 2009. – 400 с

  36. Метт В Объектно-ориентированное мышление. Пер. с англ. СПб.: Питер, 2012. 464 с.

  37. Виснадул Б.Д Технология разработки программного обеспечения: учебное пособие / Виснадул Б.Д, Гагарина Л.Г., Кокорева Е.В. //М.: ИД «ФОРУМ»: ИНФРА-М., 2009. – 400 с

  38. Метт В Объектно-ориентированное мышление. Пер. с англ. СПб.: Питер, 2012. 464 с.

  39. Симдянов И. В., Программирование. Ступени успешной карьеры. / Симдянов И. В., Кузнецов М. В. // - БХВ-Петербург, 2012. – 320 с.

  40. Симдянов И. В., Программирование. Ступени успешной карьеры. / Симдянов И. В., Кузнецов М. В. // - БХВ-Петербург, 2012. – 320 с.

  41. Элджер Дж. С++. Библиотека программиста. –СПб.: Питер, 2011.-320 с.

  42. Виснадул Б.Д Технология разработки программного обеспечения: учебное пособие / Виснадул Б.Д, Гагарина Л.Г., Кокорева Е.В. //М.: ИД «ФОРУМ»: ИНФРА-М., 2009. – 400 с

  43.    Симдянов И. В., Программирование. Ступени успешной карьеры. / Симдянов И. В., Кузнецов М. В. // - БХВ-Петербург, 2012. – 320 с.

  44.     Айра П Объектно-ориентированное программирование на Delphi Бином, Невский Диалект, 2011.

  45.   Элджер Дж. С++. Библиотека программиста. –СПб.: Питер, 2011.-320 с.

  46.   Элджер Дж. С++. Библиотека программиста. –СПб.: Питер, 2011.-320 с.

  47. Дарахвелидзе П.Г. Программирование в Delphi 7. - СпБ.: BHV - Санкт - Петербург, 2015. - 784 с.

  48.    Бентли Дж. Жемчужины программирования. 2-е изд. – СПб.: Питер, 20013. -272 с.

  49. Виснадул Б.Д Технология разработки программного обеспечения: учебное пособие / Виснадул Б.Д, Гагарина Л.Г., Кокорева Е.В. //М.: ИД «ФОРУМ»: ИНФРА-М., 2009. – 400 с

  50. ХьюзДэс.,. Структурный подход к программированию: Пер. с англ. М.: Мир, 2012. 278 с.

  51.   Вирт Н. Алгоритмы и структуры данных = Algoritms and data structure. — М.: Мир, 2012. — 360 с..

  52. Виснадул Б.Д Технология разработки программного обеспечения: учебное пособие / Виснадул Б.Д, Гагарина Л.Г., Кокорева Е.В. //М.: ИД «ФОРУМ»: ИНФРА-М., 2009. – 400 с

  53. ХьюзДэс.,. Структурный подход к программированию: Пер. с англ. М.: Мир, 2012. 278 с.

  54. ХьюзДэс.,. Структурный подход к программированию: Пер. с англ. М.: Мир, 2012. 278 с.

  55. Камлеев Н.Ю. Объектно-ориентированное программирование: Солон, Библиотека профессионала – М.: Финансы и статистика 2011 г. . – 272 с

  56. Бадд Т. Объектно-ориентированное программирование в действии: Пер. с англ. СПб.: Питер, 2013. 464 с,

  57. Бадд Т. Объектно-ориентированное программирование в действии: Пер. с англ. СПб.: Питер, 2013. 464 с,

  58. Пугачев Е.К. Объектно-ориентированное программирование: Учеб. для вузов/ Под ред. Г.С. Ивановой. - М.: Изд-во МГТУ им. Н.Э. Баумана, 2011. - 320 с , ил.

  59. Метт В Объектно-ориентированное мышление. Пер. с англ. СПб.: Питер, 2012. 464 с.

  60. Метт В Объектно-ориентированное мышление. Пер. с англ. СПб.: Питер, 2012. 464 с.

  61. Бадд Т. Объектно-ориентированное программирование в действии: Пер. с англ. СПб.: Питер, 2013. 464 с,

  62. Симдянов И. В., Программирование. Ступени успешной карьеры. / Симдянов И. В., Кузнецов М. В. // - БХВ-Петербург, 2012. – 320 с.

  63. Симдянов И. В., Программирование. Ступени успешной карьеры. / Симдянов И. В., Кузнецов М. В. // - БХВ-Петербург, 2012. – 320 с.

  64. Метт В Объектно-ориентированное мышление. Пер. с англ. СПб.: Питер, 2012. 464 с

  65. Метт В Объектно-ориентированное мышление. Пер. с англ. СПб.: Питер, 2012. 464 с

  66. Симдянов И. В., Программирование. Ступени успешной карьеры. / Симдянов И. В., Кузнецов М. В. // - БХВ-Петербург, 2012. – 320 с.

  67. Бадд Т. Объектно-ориентированное программирование в действии: Пер. с англ. СПб.: Питер, 2013. 464 с,

  68. Бадд Т. Объектно-ориентированное программирование в действии: Пер. с англ. СПб.: Питер, 2013. 464 с,

  69. Метт В Объектно-ориентированное мышление. Пер. с англ. СПб.: Питер, 2012. 464 с

  70. Бентли Дж. Жемчужины программирования. 2-е изд. – СПб.: Питер, 20013. -272 с.

  71. Бентли Дж. Жемчужины программирования. 2-е изд. – СПб.: Питер, 20013. -272 с.

  72. Орлов С.А. Технологии разработки программного обеспечения. Учебник для Вузов СПб.: Питер, 2012. – 463 с

  73. Антони С Освой самостоятельно объектно-ориентированное программирование за 21 день, Вильямс, 2011г.- 646 С.

  74. Антони С Освой самостоятельно объектно-ориентированное программирование за 21 день, Вильямс, 2011г.- 646 С.

  75. Джосьютис Н. С++. Стандартная библиотека. Для профессионалов. СПб.: Питер, 2011.-736с.

  76. Орлов С.А. Технологии разработки программного обеспечения. Учебник для Вузов СПб.: Питер, 2012. – 463 с

  77. Орлов С.А. Технологии разработки программного обеспечения. Учебник для Вузов СПб.: Питер, 2012. – 463 с

  78. Лафоре Р. Объектно-ориентированное программирование на Delphi / 4-е издание : СПб.: Питер, 2014. 464 с

  79. Кузнецов М. В, Объектно-ориентированное программирование на PHP (+ CD-ROM) Серия: Профессиональное программирование: BHV-Санкт-Петербург , 2012 - 608 С.

  80. Кузнецов М. В, Объектно-ориентированное программирование на PHP (+ CD-ROM) Серия: Профессиональное программирование: BHV-Санкт-Петербург , 2012 - 608 С.

  81. Метт В Объектно-ориентированное мышление. Пер. с англ. СПб.: Питер, 2012. 464 с.