Главная » Все файлы » Просмотр файлов из архивов » PDF-файлы » Гради Буч - Объектно-ориентированный анализ и проектирование с примерами приложений на С++

Гради Буч - Объектно-ориентированный анализ и проектирование с примерами приложений на С++, страница 9

PDF-файл Гради Буч - Объектно-ориентированный анализ и проектирование с примерами приложений на С++, страница 9 Объектно-ориентированный анализ и проектирование (53537): Книга - 7 семестрГради Буч - Объектно-ориентированный анализ и проектирование с примерами приложений на С++: Объектно-ориентированный анализ и проектирование - PDF, с2019-09-18СтудИзба

Описание файла

PDF-файл из архива "Гради Буч - Объектно-ориентированный анализ и проектирование с примерами приложений на С++", который расположен в категории "". Всё это находится в предмете "объектно-ориентированный анализ и проектирование" из 7 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Просмотр PDF-файла онлайн

Текст 9 страницы из PDF

Каждая фирма будет рекламировать свой продукт как зданный по этой технологии. Все программистыбудут писать в этом стиле, причем все по-разному. Все менеджеры будут рассуждать о нем. И никто не будет знать, что5же это такое » [1]. Данные предсказания продолжают сбываться и в 1990-х годах.В этой главе мы выясним, чем является и чем не является объектно-ориентированная разработка программ, и в чемотличия этого подхода к проектированию от других с учетом семи перечисленных выше элементов объектной модели.2.1.

Эволюция объектной моделиТенденции в проектированииПоколения языков программирования. Оглядываясь на короткую, но колоритнуюисторию развития программирования, нельзя не заметить две сменяющих друг друга тенденции:•смещение акцентов от программирования отдельных деталей к программированию болеекрупных компонент;•развитие и совершенствование языков программирования высокого уровня.Большинство современных коммерческих программных систем больше и существенносложнее, чем были их предшественники даже несколько лет тому назад. Этот рост сложностивызвал большое число прикладных исследований по методологии проектирования, особенно, подекомпозиции, абстрагированию и иерархиям.

Создание более выразительных языковпрограммирования пополнило достижения в этой области. Возникла тенденция перехода отязыков, указывающих компьютеру, что делать (императивные языки), к языкам, описывающимключевые абстракции проблемной области (декларативные языки).Вегнер сгруппировал некоторые из наиболее известных языков высокого уровня в четырепоколения в зависимости от того, какие языковые конструкции впервые в них появились:•Первое поколение(1954-1958)FORTRAN I Математические формулыALGOL-58Математические формулыFlowmaticМатематические формулыIPL VМатематические формулы•Второе поколение(1959-1961)FORTRAN IIALGOL-60COBOLLisp5Wegner, P. [J 1981].Подпрограммы, раздельная компиляцияБлочная структура, типы данныхОписание данных, работа с файламиОбработка списков, указатели, сборка мусора•Третье поколение(1962-1970)PL/IFORTRAN+ALGOL+COBOLALGOL-68Более строгий приемник ALGOL-60PascalБолее простой приемник ALGOL-60SimulaКлассы, абстрактные данные•Потерянное поколение (1970-1980)Много языков созданных, но мало выживших6 [2].В каждом следующем поколении менялись поддерживаемые языками механизмы абстракции.Языки первого поколения ориентировались на научно-инженерные применения, и словарь этой предметнойобласти был почти исключительно математическим.

Такие языки, как FORTRAN I, были созданы дляупрощения программирования математических формул, чтобы освободить программиста от трудностейассемблера и машинного кода. Первое поколение языков высокого уровня было шагом, приближающимпрограммирование к предметной области и удаляющим от конкретной машины. Во втором поколенииязыков основной тенденцией стало развитие алгоритмических абстракций. В это время мощностькомпьютеров быстро росла, а компьютерная индустрия позволила расширить области их применения,особенно в бизнесе. Главной задачей стало инструктировать машину, что делать: сначала прочти этианкеты сотрудников, затем отсортируй их и выведи результаты на печать.

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

Программисты смогли описывать свои собственные типы данных. Этостало еще одним шагом к предметной области и от привязки к конкретной машине.70-е годы знаменовались безумным всплеском активности: было создано около двух тысячразличных языков и их диалектов. Неадекватность более ранних языков написанию крупных программныхсистем стала очевидной, поэтому новые языки имели механизмы, устраняющие это ограничение. Лишьнемногие из этих языков смогли выжить (попробуйте найти свежий учебник по языкам Fred, Chaos,Tranquil), однако многие их принципы нашли отражение в новых версиях более ранних языков.

Такимобразом, мы получили языки Smalltalk (новаторски переработанное наследие Simula), Ada (наследникALGOL-68 и Pascal с элементами Simula, Alphard и CLU), CLOS (объединивший Lisp, LOOPS и Flavors),C++ (возникший от брака С и Simula) и Eiffel (произошел от Simula и Ada). Наибольший интерес длядальнейшего изложения представляет класс языков, называемых объектными и объектноориентированными, которые в наибольшей степени отвечают задаче объектно-ориентированнойдекомпозиции программного обеспечения.Топология языков первого и начала второго поколения.

Для пояснения сказанного рассмотримструктуры, характерные для каждого поколения. На рис. 2-1 показана топология, типичная длябольшинства языков первого поколения и первой стадии второго поколения. Говоря «топология», мыимеем в виду основные элементы языка программирования и их взаимодействие. Можно отметить, что длятаких языков, как FORTRAN и COBOL, основным строительным блоком является подпрограмма (параграфв терминах COBOL). Программы, реализованные на таких языках, имеют относительно простую структуру,состоящую только из глобальных данных и подпрограмм. Стрелками на рисунке обозначено влияниеподпрограмм на данные. В процессе разработки можно логически разделить разнотипные Данные, номеханизмы языков практически не поддерживают такого разделения.

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

22:14).— Примеч. ред.Рис. 2-1. Топология языков первого и начала второго поколенияиз-за большого количества перекрестных связей между подпрограммами, запутанных схемуправления, неясного смысла данных, что угрожает надежности системы и определенно снижаетясность программы.Топология языков позднего второго и раннего третьего поколения. Начиная с середины 60-хгодов стали осознавать роль подпрограмм как важного промежуточного звена между решаемой задачей икомпьютером [З].

Шоу отмечает: «Первая программная абстракция, названная процедурной абстракцией,прямо вытекает из этого прагматического взгляда на программные средства... Подпрограммы возникли до1950 года, но тогда они не были оценены в качестве абстракции... Их рассматривали как средства,упрощающие работу... Но очень скоро стало ясно, что подпрограммы это абстрактные программныефункции» [4].Использование подпрограмм как механизма абстрагирования имело три существенных последствия.Во-первых, были разработаны языки, поддерживавшие разнообразные механизмы передачи параметров.Во-вторых, были заложены основания структурного программирования, что выразилось в языковойподдержке механизмов вложенности подпрограмм и в научном исследовании структур управления иобластей видимости. В-третьих, возникли методы структурного проектирования, стимулирующиеразработчиков создавать большие системы, используя подпрограммы как готовые строительные блоки.Архитектура языков программирования этого периода (рис.

2-2), как и следовало ожидать, представляетсобой вариации на темы предыдущего поколения. В нее внесены кое-какие усовершенствования, вчастности, усилено управление алгоритмическими абстракциями, но остается нерешенной проблемапрограммирования «в большом» и проектирования данных.Топология языков конца третьего поколения. Начиная с FORTRAN II и далее, для решения задачпрограммирования «в большом» начал развиваться новый важный механизм структурирования.Разрастание программных проектов означало увеличение размеров и коллективов программистов, а,следовательно, необходимость независимой разработки отдельных частей проекта.

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

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

Аналогично, одиниз модулей мог завести общую область данных и считать, что это его собственная область, а другой модульмог нарушить это предположение, свободно манипулируя с этими данными. К сожалению, посколькубольшинство языков предоставляло в лучшем случае рудиментарную поддержку абстрактных данных итипов, такие ошибки выявлялись только при выполнении программы.Топология объектных и объектно-ориентированных языков. Значение абстрактных типовданных в разрешении проблемы сложности систем хорошо выразил Шан-кар: «Абстрагирование,достигаемое посредством использования процедур, хорошо подходит для описания абстрактных действий,но не годится для описания абстрактных объектов. Это серьезный недостаток, так как во многихпрактических ситуациях сложность объектов, с которыми нужно работать, составляет основную частьсложности всей задачи» [5].

Осознание этого влечет два важных вывода. Во-первых, возникают методыпроектирования на основе потоков данных, которые вносят упорядоченность в абстракцию данных вязыках, ориентированных на алгоритмы. Во-вторых, появляется теория типов, которая воплощается в такихязыках, как Pascal.Естественным завершением реализации этих идей, начавшейся с языка Simula и развитой впоследующих языках в 1970-1980-е годы, стало сравнительно недавнее появление таких языков, какSmalltalk, Object Pascal, C++, CLOS, Ada и Eiffel. По причинам, которые мы вскоре объясним, эти языкиполучили название объектных или объектно-ориентированных. На рис. 2-4 приведена топология такихязыков применительно к задачам малой и средней степени сложности.

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5173
Авторов
на СтудИзбе
436
Средний доход
с одного платного файла
Обучение Подробнее