Файл: Объектно-ориентированное программирование.pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 01.04.2023

Просмотров: 109

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Введение

Направление объектно-ориентированного программирования (ООП) стало очень популярно в последние десятилетия. Создатели всевозможного программного обеспечения (ПО) сегодня стремятся создавать исключительно объектно-ориентированные версии своих продуктов. Существует целое множество специальной литературы, посвященной данному предмету. Студенты в своих резюме стремятся иметь запись «компетентен в объектно-ориентированном программировании». Важно отметить, что работодатели действительно очень приветствуют знания ООП [9].

Существует ряд причин, объясняющих популярность данной технологии и актуальность ее рассмотрения:

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

Однако факт того, что в настоящее время наиболее популярным является объектно-ориентированный подход и дизайн, еще не говорит о том, что остальные методологии утратили право на существование, а правила, заложенные в них — свою актуальность. Современный мир программных систем очень многообразен, и в различных случаях бывает удобно применять различные подходы и методы решения возникающих задач [15].

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

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

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

Для достижения поставленной цели предстоит решить ряд задач:

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

При написании работы в качестве опорных источников использовались следующие:

  • Г.И. Радченко – «Объектно-ориентированное программирование»;
  • А.А. Тюгашев – «Основы программирования».

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

На протяжении всего развития языков программирования четко выделяется ряд тенденций, постоянно сменяющих друг друга и оказывающих влияние на технологии:

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

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

1.1. Первое поколение

Первые языки программирования были очень сложны. Схема их развития отражена в таблице 1. Из данной таблицы видно, что большинство идей, являющихся основой современных языков программирования, зародились в том или ином виде уже к 1970 году. Дальнейшие языки чаще всего являются потомками или результатом обобщения и развития указанных. Данный факт объясняется широким распространением мини- и микро-ЭВМ, а также ростом количества разработчиков ПО [1].

Таблица 1 – Первые языки программирования

Поколение

Язык

Характеристики

Первое (1954-1958)

FORTRAN I

Математические формулы

ALGOL-58

Flowmatic

IPL V

Второе (1959-1961)

FORTRAN II

Подпрограммы, раздельная компиляция

ALGOL-60

Блочные структуры, типы данных

COBOL

Описание данных, работа с файлами

Lisp

Обработка списков, указатели, сборка мусора

Третье (1962-1970)

PL/1

FORTRAN+ALGOL+COBOL

ALGOL-68

Более простые преемники ALGOL-60

Pascal

Simula

Классы, абстрактные данные


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

К характерным чертам этих машин относятся:

  • малое количество оперативной памяти;
  • несовершенство системы ввода-вывода данных.

Эти ограничения и высокая стоимость машин позволяли работать на них только высококвалифицированным специалистам, которые были способны создавать программы на уровне двоичных кодов. Для облегчения процесса программирования вскоре были созданы языки первого поколения. Их задачей было приблизить программирование к предметной области, отдаляя тем самым от конкретной ЭВМ. Словарь таких языков по большей части состоял из математических функций. Топология языков первого и второго поколений представлена на рисунке 1 [10].

Рисунок 1 – Топология языков программирования первого и начала второго поколений

1.2. Второе поколение

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

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

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

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

Рисунок 2 – Топология языков программирования конца второго и начала третьего поколений

1.3. Третье поколение

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

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

Чаще всего модули содержат подпрограммы, которые должны разрабатываться, изменяться и использоваться исключительно совместно. Сюда же относятся и данные, используемые этими подпрограммами. Развитие модулей вывело их на новый уровень абстракции программных систем [20].

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

Наиболее ярким представителем языков третьего поколения является ALGOL-68 – универсальный язык программирования, в котором были реализованы практически все существующие к тому времени механизмы. Данный язык позволял создавать системы корпоративного масштаба для больших ЭВМ. Однако, он был достаточно сложен для первоначального обучения [5].

Распространение малых ЭВМ позволило обрести популярность потомкам языка ALGOL-60. Так, например, язык программирования Pascal, до сих пор является наиболее популярным в учебной среде, а созданный во второй половине 70-х годов язык C, завоевал популярность среди профессиональных программистов.

Основной задачей создания Pascal являлась именно задача обучения структурному программированию, а цель разработки языка C – написание операционной системы Unix.

Одним из потомков языка Pascal, ориентированным на профессиональную разработку, стал язык Ada, обладающий встроенной поддержкой модульности и абстрактных типов данных. Язык C, характеризующийся гибким лаконичным синтаксисом и простой алгоритмической структурой, стал популярным как в системном, так и прикладном программировании.


Топология языков программирования конца третьего поколения представлена на рисунке 3 [7].

Рисунок 3 – Топология языков программирования конца третьего поколения

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

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

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

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

В терминах ООП объектом называется нечто, обладающее четкими границами. Объект обладает рядом свойств:

  • состоянием, поведение и идентичность;
  • структура и поведение схожих объектов определяет общий для них класс;
  • термин «объект» синонимичен термину «экземпляр класса».

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

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

Рисунок 4 – Топология объектно-ориентированных языков программирования

1.4. Выводы

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