Объектно-ориентированное программирование, анализ и дизайн. Методическое пособие [В. В. Мухортов] (pdf) читать постранично, страница - 3

Книга в формате pdf! Изображения и текст могут не отображаться!


 [Настройки текста]  [Cбросить фильтры]

программирования

Разрастание программных проектов требовало увеличения коллективов разработчиков и появления механизмов, позволяющих этим коллективам независимо работать над разными частями проекта. Так появились модули.
Модуль — отдельно компилируемая части программы, состоящая
из наборов данных и подпрограмм.
В модули, как правило, собирались подпрограммы, которые, как
предполагалось, должны разрабатываться и изменяться совместно. Туда же собирались и данные, которые использовались этими подпрограммами. Постепенно модули стали новым, более крупным механизмом абстракции программных систем.
Первоначально языки программирования не имели достаточно развитых механизмов защиты данных одного модуля от использования
их процедурами другого. Во многом эта задача ложилась на коллективы разработчиков. Появившиеся различные подходы в разработке
программных систем благоприятствовали возникновению огромного
количества языков, имеющих те или иные сильные и слабые стороны
в реализации этих принципов. Одним из наиболее развитых представителей языков третьего поколения стал язык ALGOL-68. Будучи универсальным и реализуя почти все разработанные к тому времени механизмы в алгоритмических языках, он был достаточно труден для первоначального освоении, однако позволял разрабатывать системы корпоративного масштаба для больших ЭВМ.
Благодаря распространению малых ЭВМ, огромную популярность
приобрели более простые потомки ALGOL-60 — язык Pascal, до сих
пор наиболее широко используемый в академический и учебной среде,
и появившийся во второй половине 70-х годов язык C, который приобрел наибольшую популярность среди профессиональных программистов. Pascal изначально служил средством обучения структурному
программированию, а язык C был разработан для написания операци-

12ГЛАВА 1. ЭВОЛЮЦИЯ МЕТОДОЛОГИЙ ПРОГРАММИРОВАНИЯ

Data (global scope)
Subroutines

Modules
Data

Subroutines

Data

Subroutines

Program
Рис. 1.3: Топология языков конца третьего поколения
онной системы Unix.
Классическим потомком языка Pascal, предназначенным для профессионального написания сложных программных комплексов, стал
язык Ada, имеющий встроенную поддержку модульности и абстрактных типов данных.
Язык C, имеющий гибкий лаконичный синтаксис и простую алгоритмическую структуру (в нем отсутствуют вложенные процедуры),
стал очень популярным языком как системного, так и прикладного программирования. Наличие возможности низкоуровневого управления памятью (преобразование типов, наличие указателей на данные и функции), препроцессор и поддержка макросов делают его языком системного программирования, предоставляя средства, ранее доступные для
малых ЭВМ только на уровне языка ассемблера. Простота в освоении и
чрезвычайная гибкость делают его многофункциональным средством
прикладного программирования.

1.2. ЗАРОЖДЕНИЕ ОБЪЕКТНОЙ МОДЕЛИ

1.2

13

Зарождение объектной модели

Процедурно-ориентированные языки мало подходят для написания программных систем, где центральным место занимают данные, а не алгоритмы. С определенного момента возникла острая необходимость в
языковой поддержке описания произвольных объектов окружающего
мира. Вводятся абстрактные типы данных. Как хорошо сказал Шанкар: «Абстрагирование, достигаемое посредством использования процедур, хорошо подходит для описания абстрактных действий, но не
годится для описания абстрактных объектов. Это серьезный недостаток, так как во многих практических ситуациях сложность объектов, с
которыми нужно работать, составляет основную часть сложности всей
задачи».
Первым языком, в котором нашли свое выражение идеи построения программ на основе данных и объектов стал язык Simula 67. Концепции, заложенные в языке Simula получили свое развитие в серии
языков Smalltalk-72,-74,-76,-80, а также в языках C++ и Objective C.
При внесении объектно-ориентированного подхода в язык Pascal появился язык Object Pascal. В 90-х годах компания Sun представила миру язык Java, как воплощение идеи платформенной независимости и
наиболее полную реализацию концепций объектно-ориентированного
программирования, положенных в основу языков Simula 67, Smalltalk,
C++.

1.2.1

Объектные языки программирования

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

14ГЛАВА 1. ЭВОЛЮЦИЯ МЕТОДОЛОГИЙ ПРОГРАММИРОВАНИЯ
реализовать такой известный программный механизм как стек. Совершенно естественно, что при этом мы преследуем несколько целей. Вопервых, обеспечить некоторую универсальность (чтобы использовать
данный механизм во многих приложениях). И