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

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

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

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

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

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

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

Основным элементом конструкции вуказанных языках служит модуль, составленный из логически связанных классов и объектов, а неподпрограмма, как в языках первого поколения.Рис. 2-3. Топология языков конца третьего поколенияДругими словами: «Если процедуры и функции — глаголы, а данные — существительные, топроцедурные программы строятся из глаголов, а объектно-ориентированные — из существительных» [б].По этой же причине структура программ малой и средней сложности при объектно-ориентированномподходе представляется графом, а не деревом, как в случае алгоритмических языков.

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

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

Аналогично, методы объектноориентированного проектирования созданы, чтобы помочь разработчикам применять мощныевыразительные средства объектного и объектно-ориентированного программирования, использующего вкачестве блоков классы и объекты.Но в объектной модели отражается и множество других факторов. Как показано во врезке ниже,объектный подход зарекомендовал себя как унифицирующая идея всей компьютерной науки, применимаяне только в программировании, но также в проектировании интерфейса пользователя, баз данных и дажеархитекту-Рис. 2-4. Топология малых и средних приложений в объектных и объектно-ориентированныхязыкахры компьютеров.

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

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

Более того, при попытках использовать такие языки, как C++ или Ada, вкачестве традиционных, алгоритмически ориентированных, мы не только теряем их внутреннийпотенциал — скорее всего результат будет даже хуже, чем при использовании обычных языков С и Pascal.Дать электродрель плотнику, который не слышал об электричестве, значит использовать ее в качествемолотка. Он согнет несколько гвоздей и разобьет себе пальцы, потому что электродрель мало пригоднадля замены молотка.OOP, OOD и ООАУнаследовав от многих предшественников, объектный подход, к сожалению, перенял изапутанную терминологию. Программист в Smalltalk пользуется термином метод, в C++ — терминомвиртуальная функция, в CLOS — обобщенная функция.Рис. 2-5.Топология больших приложений в объектных и объектно-ориентированных языкахВ Object Pascal используется термин приведение типов, а в языке Ada то же самое называетсяпреобразование типов.

Чтобы уменьшить путаницу, следует определить, что является объектноориентированным, а что — нет. Определение наиболее употребительных терминов и понятий вы найдете вглоссарии в конце книги.Термин объектно-ориентированный, по мнению Бхаскара, «затаскан до потери смысла, как"материнство", "яблочный пирог" и "структурное программирование"» [7]. Можно согласиться, чтопонятие объекта является центральным во всем, что относится к объектно-ориентированной методологии.В главе 1 мы определили объект как осязаемую сущность, которая четко проявляет свое поведение.

Стефик и Бобров определяют объекты как «сущности, объединяющие процедуры и данные, так как онипроизводят вычисления и сохраняют свое локальное состояние» [8]. Определение объекта как сущности вкакой-то мере отвечает на вопрос, но все же главным в понятии объекта является объединение идейабстракции данных и алгоритмов. Джонс уточняет это понятие следующим образом: «В объектномподходе акцент переносится на конкретные характеристики физической или абстрактной системы,являющейся предметом программного моделирования... Объекты обладают целостностью, которая недолжна — а, в действительности, не может — быть нарушена.

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

Любая модель должна учитывать эти свойства лифта, так как они входят в егоопределение» [32].Основные положения объектной моделиЙонесава и Токоро свидетельствуют: «термин "объект" появился практически независимо в различныхобластях, связанных с компьютерами, и почти одновременно в начале 70-х годов для обозначения того, чтоможет иметь различные проявления, оставаясь целостным. Для того, чтобы уменьшить сложностьпрограммных систем, объектами назывались компоненты системы или фрагменты представляемых знании»[9].

По мнению Леви, объектно-ориентированный подход был связан со следующими событиями:•«прогресс в области архитектуры ЭВМ•развитие языков программирования, таких как Simula, Smalltalk, CLU, Ada•развитие методологии программирования, включая принципы модульности и скрытия данных»[10].К этому еще следует добавить три момента, оказавшие влияние на становление объектного подхода:•развитие теории баз данных•исследования в области искусственного интеллекта•достижения философии и теории познания.Понятие «объект» впервые было использовано более 20 лет назад при конструировании компьютеров сdescriptor-based и capability-based архитектурами [ 11 ]. В этих работах делались попытки отойти оттрадиционной архитектуры фон Неймана и преодолеть барьер между высоким уровнем программнойабстракции и низким уровнем ЭВМ [12]. По мнению сторонников этих подходов, тогда были созданы болеекачественные средства, обеспечивающие: лучшее выявление ошибок, большую эффективность реализациипрограмм, сокращение набора инструкций, упрощение компиляции, снижение объема требуемой памяти.Ряд компьютеров имеет объектно-ориентированную архитектуру: Burroughs 5000, Plessey 250, CambridgeCAP [13], SWARD [14], Intel 432 [15], Caltech's СОМ [16], IBM System/38 [17], Rational R1000, BiiN 40 и 60.С объектно-ориентированной архитектурой тесно связаны объектно-ориентированные операционныесистемы (ОС).

Дейкстра, работая над мультипрограммной системой THE, впервые ввел понятие машины суровнями состояния в качестве средства построения системы [18]. Среди первых объектноориентированных ОС следует отметить: Plessey/System 250 (для мультипроцессора Plessey 250), Hydra (дляCMU C.mmp), CALTSS (для CDC 6400), CAP (для компьютера Cambridge CAP), UCLA Secure UNIX (дляPDP 11/45 и 11/70), StarOS (для CMU Cm*), Medusa (также для CMU Cm*) и iMAX (для Intel 432) [19].Следующее поколение операционных систем, таких, как Microsoft Cairo и Taligent Pink, будет, по всейвидимости, объектно-ориентированным.Наиболее значительный вклад в объектный подход внесен объектными и объектно-ориентированнымиязыками программирования. Впервые понятия классов и объектов введены в языке Simula 67.

Система Flexи последовавшие за ней диалекты Smalltalk-72, -74, -76 и, наконец, -80, взяв за основу методы Simula, довелиих до логического завершения, выполняя все действия на основе классов. В 1970-х годах создан ряд языков,реализующих идею абстракции данных: Alphard, CLU, Euclid, Gypsy, Mesa и Modula. Затем методы,используемые в языках Simula и Smalltalk, были использованы в традиционных языках высокого уровня.Внесение объектно-ориентированного подхода в С привело к возникновению языков C++ и Objective С. Наоснове языка Pascal возникли Object Pascal, Eiffel и Ada.

Появились диалекты LISP, такие, как Flavors,LOOPS и CLOS (Common LISP Object System), с возможностями языков Simula и Smalltalk. Более подробноособенности этих языков изложены в приложении.Первым, кто указал на необходимость построения систем в виде структурированных абстракций, былДейкстра.

Позднее Парнас ввел идею скрытия информации [20], а в 70-х годах ряд исследователей, главнымобразом Лисков и Жиль [21], Гуттаг [22], и Шоу [23], разработал механизмы абстрактных типов данных.Хоар дополнил эти подходы теорией типов и подклассов [24].Развивавшиеся достаточно независимо технологии построения баз данных также оказали влияние наобъектный подход [25], в первую очередь благодаря так называемой модели «сущность-отношение» (ER,entity-relationship) [26]. В моделях ER, впервые предложенных Ченом [27], моделирование происходит втерминах сущностей, их атрибутов и взаимоотношений.Разработчики способов представления данных в области искусственного интеллекта также внесли свойвклад в понимание объектно-ориентированных абстракций.

В 1975 г. Мински выдвинул теорию фреймовдля представления реальных объектов в системах распознавания образов и естественных языков [28].Фреймы стали использоваться в качестве архитектурной основы в различных интеллектуальных системах.Объектный подход известен еще издавна. Грекам принадлежит идея о том, что мир можно рассматривать втерминах как объектов, так и событий. А в XVII веке Декарт отмечал, что люди обычно имеют объектноориентированный взгляд на мир [29]. В XX веке эту тему развивала Рэнд в своей философииобъективистской эпистемоло-гии [30]. Позднее Мински предложил модель человеческого мышления, вкоторой разум человека рассматривается как общность различно мыслящих агентов [31]. Он доказывает, чтотолько совместное действие таких агентов приводит к осмысленному поведению человека.Объектно-ориентированное программирование.

Что же такое объектно-ориентированное программирование (object-oriented programming, OOP)? Мы определяем его следующимобразом:Объектно-ориентированное программирование — это методология программирования,основанная на представлении программы в виде совокупности объектов, каждый из которыхявляется экземпляром определенного класса, а классы образуют иерархию наследования.В данном определении можно выделить три части: 1) OOP использует в качестве базовыхэлементов объекты, а не алгоритмы (иерархия «быть частью», которая была определена в главе1); 2) каждый объект является экземпляром какого-либо определенного класса; 3) классыорганизованы иерархически (см. понятие об иерархии «is а» там же). Программа будет объектноориентированной только при соблюдении всех трех указанных требований.

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