Файл: «История и развитие методологии объектно-ориентированного программирования. Сферы применения».pdf
Добавлен: 21.05.2023
Просмотров: 324
Скачиваний: 3
СОДЕРЖАНИЕ
1. ИСТОРИЧЕСКИЕ АСПЕКТЫ ВОЗНИКНОВЕНИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ И ООП
1.1. Исторические предпосылки создания языков программирования и методологий программирования
1.2. Классификация и специфика языков программирования высокого уровня
2. СПЕЦИФИКА МЕТОДОЛОГИИ ООП В СОВРЕМЕННЫХ ЯЗЫКАХ ПРОГРАММИРОВАНИЯ
2.2 Анализ современных языков программирования, базирующихся на методологии ООП
3. РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ С ИСПОЛЬЗОВАНИЕМ ООП
3.1 Разработка проекта системы и ее основных классов
ВВЕДЕНИЕ
Актуальность темы исследования заключается в изучении исторических предпосылок и технических нюансов имплементации объектно-ориентированной методологии разработки программного обеспечения на базе современных языков программирования высокого уровня, с целью получения комплексного представления об изучаемой тематике и приобретения практических навыков создания программных приложений. В современном мире парадигма объектно-ориентированного программирования (ООП) является широко востребованной и распространенной в силу гибкости подхода к написанию программного кода.
Объект исследования: исторические предпосылки развития и технические особенности объектно-ориентированной методологии разработки программного обеспечения.
Предмет исследования: специфика разработки программных приложений на основе использования ООП и языка программирования Java.
Цель работы заключается в закреплении, расширении, обобщении и систематизации знаний в рамках изучаемой дисциплины, что обеспечивается путем организации комплексного анализа специфики возможностей объектно-ориентированной методологии разработки программного обеспечения и использование ее принципов при решении практической задачи.
Задачи исследования:
- Обзор исторических предпосылок создания языков и методологий программирования.
- Проведение классификации специфики языков программирования высокого уровня.
- Анализ основных принципов и сущности методологии ООП.
- Анализ возможностей современных языков программирования, которые основаны на реализации ООП парадигмы.
- Разработка программного обеспечения на базе использования ООП.
В настоящее время исследованию специфики применения методологи ООП посвящено множество литературных источников. Много внимания к языкам программирования, реализующим ООП уделено в книгах В.В. Монахова, О.Л. Голициной, В.А. Камаева, Д. Рихтера, С.Синицина, И.А. Хахаева, К. Нейгела, Т. Пратта, Р. Себеста, А.А. Тюгашева и др. Специфика разработки различных программных приложений на базе использования языка программирования Jаva исследована и описана в трудах И. Портянкина, Р. Ларофе, П. Нимейера, Р. Седжвика, К.Сьерра, С. Хорстманна, Г.Корнелла и др. Проанализированные источники являются основой для применения полученных знаний на практике.
1. ИСТОРИЧЕСКИЕ АСПЕКТЫ ВОЗНИКНОВЕНИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ И ООП
Языки программирования отличаются от привычных человеческих языков тем, что их назначение заключается во взаимодействии пользователя и ЭВМ, а естественные языки предназначены для общения между людьми. Большая часть языков программирования содержит специальные конструкции для формирования, описания и манипулирования структурами данных и вычислительными процессами.
Языки программирования - формальные знаковые системы, предназначенные для записи компьютерных программ. Языки программирования определяют набор лексических, синтаксических и семантических правил, определяющих внешний вид программы и действия, которые выполнит исполнитель (обычно — ЭВМ) под её управлением [1].
Высокоуровневые языки программирования разработаны для оперативности и удобства использования для разработки приложений программистами. Основная черта таких языков - абстракция, представляющая смысловую конструкцию, которая кратко описывает используемые структуры данных с возможными операциями, формализация которых на базе машинного кода является трудоемкой и длительной [19].
Процесс описания таких конструкций и структур на языках низкого уровня, вплоть до машинного кода, трудоемок, сложен и длителен, поэтому на практике для этого используются различные высокоуровневые языки [11].
Компьютерная программа - это набор правил, посредством которых компьютер (ЭВМ) выполняет заданный вычислительный процесс, управляя различными операционными объектами [18].
Структурная схема классификации языков программирования приведена на рис.1.
Рисунок 1 – Структурная схема классификации языков программирования
1.1. Исторические предпосылки создания языков программирования и методологий программирования
Первые технические идеи, которые привели к разработке вычислительных цифровых машин, сформированы еще в начале 20-х годов девятнадцатого века Бэббиджем. Главной была мысль о возможности предварительной фиксации перечня операций вычислительной машины для дальнейшей реализации вычислений в автоматическом режиме, т.е. в виде программы [17]. Не смотря на то, что использованная Бэббиджем реализация данной мысли на базе перфокарт, которые в свое время были придуманы изобретателем из Франции Мари-Жаккаром, технически давно устарела и имеет мало общего с современными методами обеспечения хранения данных в электронных вычислительных машинах (ЭВМ), концептуальный принцип остался прежним [18]. Можно утверждать, что с данного момента ведет свой отсчет эра программирования [3].
Аду Лавлейс, известную ученую, часто называют первым программистом. Ада разработала концептуальные приемы контроля и управления создания последовательностей вычислительных процессов, используемых в области программировании и в наши дни, а также идентифицировала такую незаменимую конструкцию любого языка программирования как цикл.
Принципиальным этапом в развитии языков программирования явилось создание системы кодирования команд ЭВМ посредством использования специальных символов. Данная схема была предложена сотрудником Пенсильванского университета – Моучли [9].
В процессе работы на ЭВМ «Марк-1» последовательница Моучли - Хоппер столкнулась с многими техническими проблемами управления данными, однако, эксперименты Хоппер и ее команды способствовали развитию методов решения существующих проблем (например, были разработаны концепции использования подпрограмм). Также, Хоппер, совместно с коллегами впервые ввела такое понятие осуществления техники программирования как программная отладка. Необходимость в разработке такого механизма возникла еще в 1945 году, когда произошла аварийная остановка работы ЭВМ «Марк-1». В процессе диагностики была выявлена неисправность одного из управляющих реле, работа которого была заблокирована бабочкой-мотыльком (bug). После этого случая стал широко применяться термин «отладка» или debuging для обозначения технического процесса проведения тестирования возможных неисправностей в разработанной программе [10].
В конце 40-х годов 20 века машинный код являлся, фактически, единственным способом организации взаимодействия человека-пользователя с ЭВМ. Важнейшим достижением разработчиков языков программирования тех времен являлась реализация алгоритмов и механизмов использования ЭВМ для автоматической интерпретации языка программирования в машинный код [2].
В 1949 году, некий Моучли разработал информационную систему, которую назвал «Short Code». Фактически, данная система представляла собой один из первых высокоуровневых языков программирования. Данная система предоставляла возможности описания задачи в виде перечня различных математических формул, после чего, на базе использования специальной таблицы соответствия, производился перевод символов формул в необходимые двухлитерные коды.
После этого специальный программный модуль конвертировал полученные коды непосредственно в машинный двоичный код. Фактически, данная система являлась первым примитивным интерпретатором программного кода [14].
В середине 1951 года, широко известной в научных кругах Хоппер был разработан первый компилятор, который позволял осуществлять функции по объединению заданных команд и поддерживал организацию подпрограмм в процессе трансляции кода. На базе этих возможностей обеспечивалось выделение отдельных фрагментов памяти ЭВМ и осуществлялось преобразование программных команд (тогда их называли псевдокодом) непосредственно в машинный код.
Уже в 1954 году команда Хоппер реализовала систему, которая одновременно интегрировала компилятор и язык программирования, которую назвали MATH-MATIC. Затем была поставлена задача реализовать подобную систему, которая поддерживала бы написание программ на близком к родному, английскому, языку исследователей команды Хоппер. Таким образов в 1958 году появился язык программирования и компилятор, который поддерживал написание программ в таком виде, его назвали FLOW-MATIC [17].
Данный язык программирования стал первым языком, который получил применение в решении задач обработки различных коммерческих данных. Развитие данного языка привело к разработке популярного в свое время бизнес-ориентированного зыка COBOL - Common Business Oriented Language. Существенный вклад в разработку данного языка сделала также команда Хоппер [13].
Уже с начала 60-х годов ХХ века популярность языков программирования начинает стремительно возрастать и общий прогресс в разработке методов и средств программирования с использованием ЭВМ набирается все большие обороты. При этом, вследствие развития технологий постоянно уменьшается использование подхода к написанию программ в машинных командах.
Разрабатываются и выводятся на коммерческий и научный рынок языки программирования более совершенного типа, которые используются в качестве своеобразного посредника между ЭВМ и программистом.
Первым и из таких языков стал FORTRAN (FORmula TRANslator, т.е переводчик формул), который был разработан командой программистов из молодой фирмы IBM [9].
С данного языка наступает эра развития и совершенствования языков программирования высокого уровня [16].
Практически сразу после появления языков третьего поколения (1967 г.) ведущие специалисты в области программирования выдвинули идею преобразования постулата фон Неймана: «данные и программы неразличимы в памяти машины». Их цель заключалась в максимальном сближении данных и программы. Решая поставленную задачу, они столкнулись с задачей, решить которую без декомпозиции оказалось невозможно, а традиционные структурные декомпозиции не сильно упрощали задачу. Усилия многих программистов и системных аналитиков, направленные на формализацию подхода, увенчались успехом.
Были разработаны три основополагающих принципа (подробнее будут рассмотрены во второй главе) того, что потом стало называться объектно-ориентированным программированием (ООП) [5]:
- наследование;
- инкапсуляция;
- полиморфизм.
Результатом их первого применения стал язык Симула-1 (Simula-1), в котором был введен новый тип – объект. В описании этого типа одновременно указывались данные (поля) и процедуры, их обрабатывающие – методы. Родственные объекты объединялись в классы, описания которых оформлялись в виде блоков программы. При этом класс можно использовать в качестве префикса к другим классам, которые становятся в этом случае подклассами первого [3].
Впоследствии Симула-1 был обобщен, и появился первый универсальный ООП-ориентированный язык программирования – Симула-67 (67 – по году создания).
Как выяснилось, ООП оказалось пригодным не только для моделирования (Simula) и разработки графических приложений (SmallTalk), но и для создания большинства других приложений, а его приближенность к человеческому мышлению и возможность многократного использования кода сделали его одной из наиболее бурно используемых концепций в программировании.
Объектно-ориентированный подход помогает справиться с такими сложными проблемами, как уменьшение сложности программного обеспечения; повышение надежности программного обеспечения; обеспечение возможности модификации отдельных компонентов программного обеспечения без изменения остальных его компонентов; обеспечение возможности повторного использования отдельных компонентов программного обеспечения [2].
1.2. Классификация и специфика языков программирования высокого уровня
К ранним высокоуровневым языкам программирования высокого уровня исторически принято относить следующие [3].
1.Фортран, использовался преимущественно для написания программ, которые выполняли научные и математические расчеты.
2. Алгол – один из первых коммерческих языков программирования, применялся для решения различных экономических задач).
3. Паскаль, Бейсик – использовались для решения несложных задач и математических расчетов, позже стали применяться для обучения азам программирования.