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

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

Файл №1158635 Гради Буч - Объектно-ориентированный анализ и проектирование с примерами приложений на С++ (Гради Буч - Объектно-ориентированный анализ и проектирование с примерами приложений на С++) 11 страницаГради Буч - Объектно-ориентированный анализ и проектирование с примерами приложений на С++ (1158635) страница 112019-09-18СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 11)

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

Обеспечение такого стиля в свою очередьозначает, что в языке удобно пользоваться этим стилем. Если написание программ в стиле OOPтребует специальных усилий или оно невозможно совсем, то этот язык не отвечает требованиямOOP» [33]. Теоретически возможна имитация объектно-ориентированного программирования наобычных языках, таких, как Pascal и даже COBOL или ассемблер, но это крайне затруднительно.Карделли и Вегнер говорят, что: «язык программирования является объектно-ориентированнымтогда и только тогда, когда выполняются следующие условия:•Поддерживаются объекты, то есть абстракции данных, имеющие интерфейс в видеименованных операций и собственные данные, с ограничением доступа к ним.•Объекты относятся к соответствующим типам (классам).•Типы (классы) могут наследовать атрибуты супертипов (суперклассов)» [34].Поддержка наследования в таких языках означает возможность установления отношения«is-a» («есть», «это есть», « — это»), например, красная роза — это цветок, а цветок — эторастение.

Языки, не имеющие таких механизмов, нельзя отнести к объектно-ориентированным.Карделли и Вегнер назвали такие языки объектными, но не объектно-ориентированными.Согласно этому определению объектно-ориентированными языками являются Smalltalk, ObjectPascal, C++ и CLOS, a Ada — объектный язык. Но, поскольку объекты и классы являютсяэлементами обеих групп языков, желательно использовать и в тех, и в других методы объектноориентированного проектирования.Объектно-ориентированное проектирование. Программирование прежде всего подразумевает правильное и эффективное использование механизмов конкретных языковпрограммирования.

Проектирование, напротив, основное внимание уделяет правильному иэффективному структурированию сложных систем. Мы определяем объектно-ориентированноепроектирование следующим образом:Объектно-ориентированное проектирование — это методология проектирования,соединяющая в себе процесс объектной декомпозиции и приемы представления логической ифизической, а также статической и динамической моделей проектируемой системы.В данном определении содержатся две важные части: объектно-ориентированноепроектирование 1) основывается на объектно-ориентированной декомпозиции; 2) используетмногообразие приемов представления моделей, отражающих логическую (классы и объекты) ифизическую (модули и процессы) структуру системы, а также ее статические и динамическиеаспекты.Именно объектно-ориентированная декомпозиция отличает объектно-ориентированноепроектирование от структурного; в первом случае логическая структура системы отражаетсяабстракциями в виде классов и объектов, во втором — алгоритмами.

Иногда мы будемиспользовать аббревиатуру OOD, object-oriented design, для обозначения метода объектноориентированного проектирования, изложенного в этой книге.Объектно-ориентированный анализ. На объектную модель повлияла более ранняямодель жизненного цикла программного обеспечения. Традиционная техника структурногоанализа, описанная в работах Де Марко [35], Иордана [36], Гейна и Сарсона [37], а с уточнениямидля режимов реального времени у Варда и Меллора [38] и Хотли и Пирбхая [39], основана напотоках данных в системе. Объектно-ориентированный анализ (или 00A, object-oriented analysis)направлен на создание моделей реальной действительности на основе объектно-ориентированногомировоззрения.Объектно-ориентированный анализ — это методология, при которой требования ксистеме воспринимаются с точки зрения классов и объектов, выявленных в предметной области.Как соотносятся ООА, OOD и OOP? На результатах ООА формируются модели, накоторых основывается OOD; OOD в свою очередь создает фундамент для окончательнойреализации системы с использованием методологии OOP.2.2.

Составные части объектного подходаПарадигмы программированияДженкинс и Глазго считают, что «в большинстве своем программисты используют вработе один язык программирования и следуют одному стилю. Они программируют в парадигме,навязанной используемым ими языком. Часто они оставляют в стороне альтернативные подходы кцели, а следовательно, им трудно увидеть преимущества стиля, более соответствующегорешаемой задаче» [40]. Бобров и Сте-тик так определили понятие стиля программирования: «Этоспособ построения программ, основанный на определенных принципах программирования, ивыбор подходящего языка, который делает понятными программы, написанные в этом стиле» [41].Эти же авторы выявили пять основных разновидностей стилей программирования, которыеперечислены ниже вместе с присущими им видами абстракций:• процедурно-ориентированныйалгоритмы• объектно-ориентированныйклассы и объекты• логико-ориентированныйцели, часто выраженные в терминах исчисленияпредикатов• ориентированный на правилаправила «если-то»• ориентированный на ограничения инвариантные соотношенияНевозможно признать какой-либо стиль программирования наилучшим во всех областяхпрактического применения.

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

Она имеет четыреглавных элемента:• абстрагирование• инкапсуляция• модульность• иерархия.Эти элементы являются главными в том смысле, что без любого из них модель не будетобъектно-ориентированной. Кроме главных, имеются еще три дополнительных элемента:• типизация• параллелизм• сохраняемость.Называя их дополнительными, мы имеем в виду, что они полезны в объектной модели, ноне обязательны.Без такой концептуальной основы вы можете программировать на языке типа Smalltalk,Object Pascal, C++, CLOS, Eiffel или Ada, но из-под внешней красоты будет выглядывать стильFORTRAN, Pascal или С. Выразительная способность объектно-ориентированного языка будетлибо потеряна, либо искажена.

Но еще более существенно, что при этом будет мало шансовсправиться со сложностью решаемых задач.АбстрагированиеСмысл абстрагирования. Абстрагирование является одним из основных методов,используемых для решения сложных задач. Хоар считает, что «абстрагирование проявляется внахождении сходств между определенными объектами, ситуациями или процессами реальногомира, и в принятии решений на основе этих сходств, отвлекаясь на время от имеющихсяразличий» [42].

Шоу определила это понятие так: «Упрощенное описание или изложение системы,при котором одни свойства и детали выделяются, а другие опускаются. Хорошей является такаяабстракция, которая подчеркивает детали, существенные для рассмотрения и использования, иопускает те, которые на данный момент несущественны» [43]. Берзинс, Грей и На-уманрекомендовали, чтобы «идея квалифицировалась как абстракция только, если она может бытьизложена, понята и проанализирована независимо от механизма, который будет в дальнейшемпринят для ее реализации» [44].

Суммируя эти разные точки зрения, получим следующееопределение абстракции:Абстракция выделяет существенные характеристики некоторого объекта, отличающиеего от всех других видов объектов и, таким образом, четко определяет его концептуальныеграницы с точки зрения наблюдателя.Абстрагирование концентрирует внимание на внешних особенностях объекта и позволяетотделить самые существенные особенности поведения от несущественных. Абельсон и Суссманназвали такое разделение смысла и реализации барьером абстракции [45], который основываетсяна принципе минимизации связей, когда интерфейс объекта содержит только существенныеаспекты поведения и ничего больше [46].

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

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

Такойподход концентрирует внимание на внешних проявлениях объекта и приводит к идее, которуюМейер назвал контрактноймоделью программирования [48]: внешнее проявление объектарассматривается с точки зрения его контракта с другими объектами, в соответствии с этим должнобыть выполнено и его внутреннее устройство (часто во взаимодействии с другими объектами).Контракт фиксирует все обязательства, которые объект-сервер имеет перед объектом-клиентом.Другими словами, этот контракт определяет ответственность объекта — то поведение, закоторое он отвечает [49].Каждая операция, предусмотренная этим контрактом, однозначно определяется ееформальными параметрами и типом возвращаемого значения. Полный набор операций, которыеклиент может осуществлять над другим объектом, вместе с правильным порядком, в котором этиоперации вызываются, называется протоколом.

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

Список файлов книги

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